Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema06-apendices

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:1eval:tema06-apendices [2021/12/27 12:50]
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:
 {{ :clase:iabd:pia:1eval:inicializadores.png?direct |}} {{ :clase:iabd:pia:1eval:inicializadores.png?direct |}}
  
 +
 +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
 +
 +{{ :clase:iabd:pia:1eval:inicializadores_de_pesos-resumen.png?direct&600 |}}
  
 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{  \frac{e^{ax+b}}{e^{ax+b}}   }{ \frac{1+e^{ax+b}}{e^{ax+b}}   } \\
 +
 +
 +p=\frac{  1   }{ 1+\frac{1}{e^{ax+b}}   } \\
 +p=\frac{  1   }{ 1+e^{-(ax+b)}   } \\
 +$$
 +
 +Que es exactamente la función sigmoide
 +
 +  * Más información
 +    * [[https://en.wikipedia.org/wiki/Odds|Odds (Wikipedia)]]
 +    * [[https://towardsdatascience.com/https-towardsdatascience-com-what-and-why-of-log-odds-64ba988bf704|WHAT and WHY of Log Odds]]
 +    * [[https://medium.com/nerd-for-tech/understanding-logistic-regression-782baa868a54|Understanding Logistic Regression]]
 +    * [[https://stats.stackexchange.com/questions/162988/why-sigmoid-function-instead-of-anything-else|Why sigmoid function instead of anything else?]]
 +    * [[https://towardsdatascience.com/why-sigmoid-a-probabilistic-perspective-42751d82686|Why Sigmoid: A Probabilistic Perspective]] 
  
 ==== 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 "famosas" que han aparecido. GELU: Se usa con Transformers. La usa Google con [[https://paperswithcode.com/method/bert|BERT]] y OpenAI en GPT-2  y GPT-3.((https://mlfromscratch.com/activation-functions-explained/#gelu)) GELU es de la últimas funciones de activación "famosas" que han aparecido. GELU: Se usa con Transformers. La usa Google con [[https://paperswithcode.com/method/bert|BERT]] y OpenAI en GPT-2  y GPT-3.((https://mlfromscratch.com/activation-functions-explained/#gelu))
 +
 +$$
 +GELU(x)=0.5x(1+ \frac {2}{ \sqrt {\pi} } \int_{0}^{ \frac {x}{ \sqrt {2}}} e ^ {-t^{2}}dt)
 +$$
  
 {{ :clase:iabd:pia:1eval:funciones_activacion_tipo_gelu.png?direct |}} {{ :clase:iabd:pia:1eval:funciones_activacion_tipo_gelu.png?direct |}}
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}}$$
  
 {{ :clase:iabd:pia:1eval:funciones_activacion_tipo_swish.png?direct |}} {{ :clase:iabd:pia:1eval:funciones_activacion_tipo_swish.png?direct |}}
Línea 198: Línea 248:
  
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.activations.swish)) +model.add(Dense(3, activation=tf.keras.activations.swish)) 
-model.add(Dense(3, input_dim=1,activation="swish"))+model.add(Dense(3, activation="swish"))
 </sxh> </sxh>
  
 +  * [[https://www.tensorflow.org/api_docs/python/tf/keras/activations/swish|tf.keras.activations.swish(x)]]
   * [[https://towardsdatascience.com/activation-functions-you-might-have-missed-79d72fc080a5|Activation functions you might have missed]]   * [[https://towardsdatascience.com/activation-functions-you-might-have-missed-79d72fc080a5|Activation functions you might have missed]]
   * [[https://arxiv.org/pdf/1710.05941v1.pdf|Swish: A Self-Gated Activation Function]]: Paper original de Swish   * [[https://arxiv.org/pdf/1710.05941v1.pdf|Swish: A Self-Gated Activation Function]]: Paper original de Swish
 +
  
 ==== 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 es un poco más lenta es mejor. Es muy similar a Swish
  
 +$$
 +mish(x)=x \cdot tanh(softplus(x))
 +$$
 +
 +{{ :clase:iabd:pia:1eval:funciones_activacion_mish.png?direct |}}
 +
 +{{ :clase:iabd:pia:1eval:funciones_activacion_swish_vs_mish.png?direct |}}
 +
 +  * Uso en Keras
 +
 +<sxh python>
 +model.add(Dense(3, activation=tf.keras.activations.swish))
 +model.add(Dense(3, activation="mish"))
 +</sxh>
 +
 +  * [https://www.tensorflow.org/api_docs/python/tf/keras/activations/mish|tf.keras.activations.mish(x)]]
   * [[https://towardsdatascience.com/activation-functions-you-might-have-missed-79d72fc080a5|Activation functions you might have missed]]   * [[https://towardsdatascience.com/activation-functions-you-might-have-missed-79d72fc080a5|Activation functions you might have missed]]
   * [[https://arxiv.org/pdf/1908.08681.pdf|Mish: A Self Regularized Non-Monotonic Activation Function]]: Paper original de Mish   * [[https://arxiv.org/pdf/1908.08681.pdf|Mish: A Self Regularized Non-Monotonic Activation Function]]: Paper original de Mish
 +
 +
 +
 +===== Tiempo de cálculo  =====
 +Para cada problema puede que una función sea mejor que otra, es decir que cosiga entrenar en un menor número de épocas. Aun así a veces no puede preocupar el tiempo de CPU/GPU que usa cada función de activación.
 +
 +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.
 +
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.scatter.png?direct|}}
 +
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.regresion.png?direct|}}
 +
 +
 +
 +
 +
 +
clase/iabd/pia/1eval/tema06-apendices.1640605852.txt.gz · Última modificación: 2021/12/27 12:50 por admin