El perceptrón (una neurona)
- Inspirada en la redes neuronales naturales
- Una neurona recibe señales de entrada
- Que la activan o inhiben
$$
y= f(w_1x_1+w_2x_2+\ldots+w_nx_n)
$$
- Sigmoide $[0 \ldots 1]$
$$
\frac{1}{1+e^{-x}}
$$
- Tangente hiperbólica $[-1 \dots 1]$
$$
\frac{e^x-e^{-x}}{e^x+e^{-x}}
$$
- ReLu (Rectifier Linear Unit) $[0 \dots \infty]$
$$
max(0,x)
$$
Sigmoide
$$ y = \frac{1}{1+e^{-(w_1x_1+w_2x_2+\ldots+w_nx_n)}}$$
¿Qué le falta para ser regresión logística?
Revisando
$$
y= f(w_1x_1+w_2x_2+\ldots+w_nx_n+b)
$$
Re-escribiendo
Como vectores
$$
y= f(wx^T+b)\\
1\times 1=(1\times n)(n \times 1)
$$
¿Cómo entrenar?
- Similar a distribución Gausiana
- Descenso por gradiente
Perceptrón multi-capa
Varias cosas pasando
- Entrada de dimensión del tipo $x \in \mathbf{R}^n$
- se conecta a la primera capa de $m$ neuronas
- esta conecta a la segunda capa de $o$ neuronas
- esta genera la salida $y \in \mathbf{R}^o$
- $x$ es vector de entrada
- $W^1$ es la matrix de pesos, $m \times n$: unidades ocultas $\times$ entradas
- $b^1$ es el vector de sesgo, de tamaño $m$
- $h^1$ es el vector de salida de la primera capa
Primera capa
Estos valores son la entrada para la siguiente capa...
Toda la red
- $h^1=f^1(W^1x+b^1)$
- $y=f^2(W^2h^1+b^2)$
Más capas
- $h^1=f^1(W^1x+b^1)$
- $h^2=f^2(W^2h^1+b^2)$
- $h^3=f^2(W^3h^2+b^3)$
- $\cdots$
- $y=f^m(W^mh^{(m-1)}+b^m)$
Propagación de los pesos
¿Pesos...
... y sesgo?
Gradient descent
Error de dataset:
$$ E(a^L,y) = \frac{1}{2n}\sum_{i=0}^n (a^L_i - y_i)^2 $$
donde
$a^L=f^m(W^mh^{(m-1)}+b^m)$
Recordemos
$\hat{\theta}=\theta-k \nabla E(a^L,y) $
¿Cuáles son los parámetros?
$W$ y $b$
Gradiente
$$
\nabla = (\frac{\partial E}{\partial w^l_{jk}},\frac{\partial E}{\partial b^l_j})
$$
Error neuron
$$
\delta^l_j = \frac{\partial E}{\partial h^l_j}
$$
Ecuación 1: error última capa
$$
\delta^L_j = \frac{\partial E}{\partial a^L_j}f'^L(h^L_j)
$$
Dónde para error cuadrático
$$
\frac{\partial E}{\partial a^L_j}= (a^L_j-y_j)
$$
Re-escribiendo: vector
$$
\delta^L = (a^L-y) \bigodot f'^L(h^L)
$$
Ecuación 2: error capa anterior
$$
\delta^l = ((W^{l+1})^T\delta^{l+1}) \bigodot f'^l(h^l)
$$
Ecuación 3: error en bias
$$
\frac{\partial E}{\partial b^l} = \delta^l
$$
Ecuación 4: error en bias
$$
\frac{\partial E}{\partial w^l_{j,k}} = a^{l-1}_k\delta^l_j
$$
Retropropagación
- Calcular los valores de $h^l$ y $a_l$, propagación de pesos
- Calcular el error de la última capa $\delta^L$
- Retropropagar el error $\delta^l$
- Calcular los gradientes
Deep learning
- Multiples capas
- Trucos para entrenar: batches (tensores), dropout, autograd
- Nuevas funciones de costo