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 [2022/02/07 19:43]
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 134: 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 197: Línea 237:
 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)=\frac{x}{1+e^{-x}}$$+$$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 208: 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>
  
Línea 228: Línea 268:
 {{ :clase:iabd:pia:1eval:funciones_activacion_swish_vs_mish.png?direct |}} {{ :clase:iabd:pia:1eval:funciones_activacion_swish_vs_mish.png?direct |}}
  
-  * [[https://www.tensorflow.org/addons/api_docs/python/tfa/activations/mish|tfa.activations.mish(x)]] +  * Uso en Keras
-  * [[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+
  
-=== Poetry === +<sxh python> 
-Para usar Mish deberemos instalar [[https://www.tensorflow.org/addons/overview|TensorFlow Addons]] +model.add(Dense(3, activation=tf.keras.activations.swish)) 
-Desde conda a veces falla la instalación así que lo recomendable es usar [[https://python-poetry.org/|Poetry]] +model.add(Dense(3, activation="mish"))
- +
-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 +
 </sxh> </sxh>
  
-Una vez instalado (se puede comprobar con ''poetry --version'') iremos a la carpeta donde tenemos nuestro programa en Python (o donde lo vamos a tener) y ejecutaremos lo siguiente:+  * [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://arxiv.org/pdf/1908.08681.pdf|Mish: A Self Regularized Non-Monotonic Activation Function]]Paper original de Mish
  
-<sxh bash> 
-poetry init 
-poetry add libclang = "<12.0.0" numpy pandas matplotlib seaborn scikit-learn tensorflow tabulate PyMySQL SQLAlchemy ipympl keras-tuner tensorflow-addons 
-poetry install 
-</sxh> 
  
-Para ejecutar el código hay 2 formas: 
  
-  * Desde la línea de comandos: +===== Tiempo de cálculo  ===== 
-<sxh python> +Para cada problema puede que una función sea mejor que otra, es decir que cosiga entrenar en un menor número de épocasAun así a veces no puede preocupar el tiempo de CPU/GPU que usa cada función de activación.
-poetry run python my_script.py +
-</sxh>+
  
-  * Desde VS Code seleccionar en los entornos de ejecución la carpeta ''.venv'' del propio proyecto: +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:vs-code-poetry.png?direct |}}+
  
-  * Si queremos usar el entorno de poetry pero no está en nuestra carpeta se puede indicar a VS Code cual es el ejecutable de python que debe usar siempre para ello hay que crear en la carpeta de nuestro proyecto el fichero ''./.vscode/settings.json''+{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.scatter.png?direct|}}
  
-<sxh base> +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.regresion.png?direct|}}
-{ +
-    "python.pythonPath""/home/logongas/python_default_env/.venv/bin/python" +
-} +
-</sxh>+
  
-=== Tiempos === 
-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 36 neuronas usando cada un de las funciones de activación. 
  
  
  
  
clase/iabd/pia/1eval/tema06-apendices.1644259384.txt.gz · Última modificación: 2022/02/07 19:43 por admin