Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:iabd:pia:1eval:tema06-apendices [2022/01/15 16:08] admin [Tipos de funciones de activación en capas ocultas] |
clase:iabd:pia:1eval:tema06-apendices [2024/01/06 11:58] (actual) admin [Tipos de funciones de activación en capas ocultas] |
||
---|---|---|---|
Línea 41: | Línea 41: | ||
{{ : | {{ : | ||
+ | |||
+ | Ahora vamos a ver como se comportan 4 redes distintas según el número de capas, el inicializador y la función de activación usada | ||
+ | |||
+ | {{ : | ||
Mas información: | Mas información: | ||
Línea 130: | Línea 134: | ||
===== Tipos de funciones de activación en capas ocultas ===== | ===== Tipos de funciones de activación en capas ocultas ===== | ||
+ | |||
+ | ==== sigmoid ==== | ||
+ | La fórmula de la sigmoide se obtiene a partir de la función $logit$ o $log odds$. | ||
+ | |||
+ | $$odds(p) = \frac{p}{1-p} $$ | ||
+ | $$logit(p) = log(odds(p))=log(\frac{p}{1-p}) $$ | ||
+ | |||
+ | Ahora: | ||
+ | |||
+ | $$logit(p) = ax+b $$ | ||
+ | $$log(\frac{p}{1-p}) = ax+b $$ | ||
+ | |||
+ | Si despejamos $p$ de la anterior fórmula: | ||
+ | |||
+ | $$ | ||
+ | log(\frac{p}{1-p}) = ax+b \\ | ||
+ | e^{log(\frac{p}{1-p})} = e^{ax+b} \\ | ||
+ | \frac{p}{1-p}=e^{ax+b} \\ | ||
+ | p=e^{ax+b} \cdot (1-p) \\ | ||
+ | p=e^{ax+b}-pe^{ax+b} \\ | ||
+ | p+pe^{ax+b}=e^{ax+b} \\ | ||
+ | p(1+e^{ax+b})=e^{ax+b} \\ | ||
+ | p=\frac{e^{ax+b}}{1+e^{ax+b}} \\ | ||
+ | |||
+ | |||
+ | p=\frac{ | ||
+ | |||
+ | |||
+ | p=\frac{ | ||
+ | p=\frac{ | ||
+ | $$ | ||
+ | |||
+ | Que es exactamente la función sigmoide | ||
+ | |||
+ | * Más información | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
==== ReLU y Leaky ReLU ==== | ==== ReLU y Leaky ReLU ==== | ||
Línea 169: | Línea 213: | ||
==== GELU ==== | ==== GELU ==== | ||
GELU es de la últimas funciones de activación " | GELU es de la últimas funciones de activación " | ||
+ | |||
+ | $$ | ||
+ | GELU(x)=0.5x(1+ \frac {2}{ \sqrt {\pi} } \int_{0}^{ \frac {x}{ \sqrt {2}}} e ^ {-t^{2}}dt) | ||
+ | $$ | ||
{{ : | {{ : | ||
Línea 187: | Línea 235: | ||
* | * | ||
==== Swish ==== | ==== Swish ==== | ||
- | Se usa cuando ReLU pero es un poco más lenta pero es mejor | + | Se usa cuando ReLU pero es un poco más lenta pero es mejor. |
+ | |||
+ | $$swish(x)=x \cdot sigmoid(x)=x \cdot \frac{1}{1+e^{-x}}=\frac{x}{1+e^{-x}}$$ | ||
{{ : | {{ : | ||
Línea 198: | Línea 248: | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
</ | </ | ||
+ | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | |||
==== Mish ==== | ==== Mish ==== | ||
- | Se usa cuando ReLU pero es un poco más lenta pero es mejor. Es similar a Swish | + | Se usa cuando ReLU pero aunque |
- | | + | $$ |
+ | mish(x)=x \cdot tanh(softplus(x)) | ||
+ | $$ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | * Uso en Keras | ||
+ | |||
+ | <sxh python> | ||
+ | model.add(Dense(3, | ||
+ | model.add(Dense(3, | ||
+ | </ | ||
+ | |||
+ | | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | === Poetry === | ||
- | Para usar Mish deberemos instalar [[https:// | ||
- | Desde conda a veces falla la instalación así que lo recomendable es usar [[https:// | ||
- | Para usar poetry debemos primero instalarlo en el sistema operativo mediante los comandos: | ||
- | <sxh bash> | ||
- | pip install --user poetry | ||
- | poetry config virtualenvs.in-project true | ||
- | </ | ||
- | Una vez instalado (se puede comprobar con '' | + | ===== Tiempo de cálculo |
+ | Para cada problema | ||
+ | |||
+ | En la siguiente gráfica se puede ver el tiempo de entrenamiento de una red neuronal con 14 capas y 1521 neuronas usando cada una de las funciones de activación. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
- | <sxh bash> | ||
- | pip install --user poetry | ||
- | poetry config virtualenvs.in-project true | ||
- | </ | ||