CS 229 - Aprendizaje automático


Hoja de referencia de Aprendizaje profundo
Star

Contenido original por Afshine Amidi y Shervine Amidi
Traducido por Erick Gabriel Mendoza Flores. Revisado por Fernando González-Herrera, Mariano Ramirez, Juan P. Chavat, Alonso Melgar López, Gustavo Velasco-Hernández, Juan Manuel Nava Zamudio y Fernando Diaz.

Redes Neuronales

Las redes neuronales (en inglés, Neural Networks) son una clase de modelos construidos a base de capas. Los tipos más utilizados de redes neuronales incluyen las redes neuronales convolucionales y las redes neuronales recurrentes.

Arquitectura ― El vocabulario en torno a arquitecturas de redes neuronales se describe en la siguiente figura:

Illustration

Denotando $i$ en la $i$-ésima capa de la red y $j$ en la $j$-ésima unidad oculta de la capa, tenemos:

\[\boxed{z_j^{[i]}={w_j^{[i]}}^Tx+b_j^{[i]}}\]

donde $w$, $b$ y $z$ son el peso, el sesgo y la salida, respectivamente.


Función de activación ― Las funciones de activación son utilizadas al final de una unidad oculta para introducir complejidades no lineales al modelo. A continuación las más comunes:

Sigmoide Tanh ReLU Leaky ReLU
$g(z)=\displaystyle\frac{1}{1+e^{-z}}$ $g(z)=\displaystyle\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$ $g(z)=\textrm{max}(0,z)$ $g(z)=\textrm{max}(\epsilon z,z)$
with $\epsilon\ll1$
Illustration Illustration Illustration Illustration

Pérdida de cross-entropy ― En el contexto de las redes neuronales, la pérdida de cross-entropy $L(z,y)$ es utilizada comúnmente y definida de la siguiente manera:

\[\boxed{L(z,y)=-\Big[y\log(z)+(1-y)\log(1-z)\Big]}\]

Velocidad de aprendizaje ― La velocidad de aprendizaje (en inglés, Learning rate), denotada como $\alpha$ o algunas veces $\eta$, indica a que ritmo los pesos son actualizados. Este valor puede ser fijo o cambiar de forma adaptativa. El método más popular en este momento es llamado Adam, que es un método que adapta a la velocidad de aprendizaje.


Retropropagación ― La retropropagación (en inglés, Backpropagation), o propagación inversa, es un método de actualización de los pesos en una red neuronal, teniendo en cuenta la salida actual y la salida esperada. La derivada respecto al peso $w$ es calculada utilizando la regla de la cadena y se expresa de la siguiente forma:

\[\boxed{\frac{\partial L(z,y)}{\partial w}=\frac{\partial L(z,y)}{\partial a}\times\frac{\partial a}{\partial z}\times\frac{\partial z}{\partial w}}\]

Como resultado, el peso es actualizado de la siguiente forma:

\[\boxed{w\longleftarrow w-\alpha\frac{\partial L(z,y)}{\partial w}}\]

Actualizando pesos ― En una red neuronal, los pesos son actualizados de la siguiente forma:
- Paso 1 : Tomar un lote de los datos de entrenamiento.
- Paso 2 : Realizar propagación hacia adelante para obtener la pérdida correspondiente.
- Paso 3 : Propagar inversamente la pérdida para obtener los gradientes.
- Paso 4 : Utiliza los gradientes para actualizar los pesos de la red.


Retiro ― El retiro (en inglés, Dropout) es una técnica para prevenir el sobreajuste de los datos de aprendizaje descartando unidades en una red neuronal. En la práctica, las neuronas son retiradas con una probabilidad de $p$ o se mantienen con una probabilidad de $1-p.$


Redes neuronales convolucionales

Requisito de la capa convolucional ― Notando que $W$ es el volumen de la entrada, $F$ el tamaño de las neuronas de la capa convolucional, $P$ la cantidad de relleno con ceros, entonces el número de neuronas $N$ que entran en el volumen dado es tal que:

\[\boxed{N=\frac{W-F+2P}{S}+1}\]

Normalización por lotes ― Es un paso de híperparámetro $\gamma, \beta$ que normaliza el grupo $\{x_i\}$. Denotando $\mu_B, \sigma_B^2$ la media y varianza del lote que queremos corregir, se realiza de la siguiente manera:

\[\boxed{x_i\longleftarrow\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta}\]
Se realiza usualmente después de una capa completamente conectada/convolucional y antes de una capa no-lineal y su objetivo es permitir velocidad más altas de aprendizaje y reducir su fuerte dependencia sobre la inicialización.


Redes Neuronales Recurrentes

Tipos de puerta ― A continuación, tenemos los diferentes tipos de compuertas que encontramos en una red neuronal recurrente típica:

Puerta de entrada Puerta de olvido Puerta Puerta de salida
¿Escribir o no en la celda? ¿Borrar o no la celda? ¿Cuánto escribir en la celda? ¿Cuánto revelar la celda?

LSTM ― Una red de memoria a corto y largo plazo (en inglés, Long Short Term Memory) es un tipo de modelo de red neuronal recurrente que evita el problema del desvanecimiento del gradiente añadiendo puertas de 'olvido'.


Aprendizaje por refuerzo

El objetivo del aprendizaje por refuerzo es hacer que un agente aprenda como evolucionar en un entorno.

Definiciones

Procesos de decisión de Markov ― Un procesos de decisión de Markov (en inglés, Markov Decision Process) es una 5-tupla ($\mathcal{S}$,$\mathcal{A},\{P_{sa}\},\gamma,R)$ donde:
- $\mathcal{S}$ es el conjunto de estados
- $\mathcal{A}$ es el conjunto de acciones
- $\{P_{sa}\}$ son las probabilidades de transición de estado para $s\in\mathcal{S}$ y $a\in\mathcal{A}$
- $\gamma\in[0,1[$ es el factor de descuento
- $R:\mathcal{S}\times\mathcal{A}\longrightarrow\mathbb{R}$ o $R:\mathcal{S}\longrightarrow\mathbb{R}$ es la función recompensa que el algoritmo pretende maximizar


Política ― Una política $\pi$ es una función $\pi:\mathcal{S}\longrightarrow\mathcal{A}$ que asigna estados a acciones.

Observación: decimos que ejecutamos una política $\pi$ dada si dado un estado $s$ tomamos la acción $a=\pi(s)$.


Función valor ― Para una política dada $\pi$ y un estado dado $s$, definimos el valor de la función $V^{\pi}$ de la siguiente manera:

\[\boxed{V^\pi(s)=E\Big[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+...|s_0=s,\pi\Big]}\]

Ecuación de Bellman ― Las ecuaciones óptimas de Bellman, caracterizan la función valor $V^{\pi^*}$ de la política óptima $\pi^*$:

\[\boxed{V^{\pi^*}(s)=R(s)+\max_{a\in\mathcal{A}}\gamma\sum_{s'\in S}P_{sa}(s')V^{\pi^*}(s')}\]

Observación: denotamos que la política óptima $\pi^*$ para un estado dado $s$ es tal que:

\[\boxed{\pi^*(s)=\underset{a\in\mathcal{A}}{\textrm{argmax}}\sum_{s'\in\mathcal{S}}P_{sa}(s')V^*(s')}\]

Algoritmo de iteración valor ― El algoritmo de iteración valor es en dos pasos:

1) Inicializamos el valor:

\[\boxed{V_0(s)=0}\]

2) Iteramos el valor con base en los valores de antes:

\[\boxed{V_{i+1}(s)=R(s)+\max_{a\in\mathcal{A}}\left[\sum_{s'\in\mathcal{S}}\gamma P_{sa}(s')V_i(s')\right]}\]

Estimación por máxima verosimilitud ― El estimación de probabilidad máximo para las probabilidades de transición de estado son como se muestra a continuación:

\[\boxed{P_{sa}(s')=\frac{\#\textrm{veces que se tomó la acción }a\textrm{ en el estado }s\textrm{ y llevó a }s'}{\#\textrm{veces que se tomó la acción }a\textrm{ en el estado }}}\]

$Q$-learning ― $Q$-learning es una estimación libre de modelo de $Q$, que se realiza de la siguiente forma:

\[\boxed{Q(s,a)\leftarrow Q(s,a)+\alpha\Big[R(s,a,s')+\gamma\max_{a'}Q(s',a')-Q(s,a)\Big]}\]