14 de abril de 2020

Tipos de neuronas en redes profundas

Hola,
en esta segunda entrada sobre redes profundas hablaré sobre las neuronas.

En este contexto, una neurona es una función de activación que recibe información (input) de otras neuronas y emite una salida que significa si se activa o no.

El primer modelo de neurona es el perceptrón de Frank Rosenblatt, que agrega sus entradas por medio de una suma ponderada y se activa si el total supera un cierto umbral. El siguiente ejemplo muestra un perceptrón con tres entradas binarias con pesos 3, 2 y 6 y umbral de activación 4:

Figura 6.5 de Krohn J (2019) Deep Learning Illustrated
Esta función de activación z podemos expresarla así, siendo b = -umbral (usando https://www.codecogs.com/latex/eqneditor.php):



Si la representamos gráficamente veremos que la activación de 0 a 1 es abrupta y por tanto parece el margen para cambiar los valores de los pesos (w) es muy pequeño:

Figura 6.8 de Krohn J (2019) Deep Learning Illustrated
Por esta razón se utilizan otros tipos de neuronas donde la función de activación es gradual.

La activación sigmoidea es:


donde



Esta activación tiene como ventajas que pequeños cambios en los parámetros w y b producen cambios graduales de z :
Figura 6.9 de Krohn J (2019) Deep Learning Illustrated
Valores extremos producen valores de z de 0 o de 1, como puedes comprobar en el siguiente cuaderno: https://github.com/the-deep-learners/deep-learning-illustrated/blob/master/notebooks/sigmoid_function.ipynb

Otra función de activación frecuente es la tangente hiperbólica (tanh), que produce valores de activación entre 1 y -1 y centrados en el 0, y se expresar así:



Finalmente tenemos la neurona ReLU, que representa el mejor compromiso entre tiempo de entrenamiento y capacidad de aprendizaje:




Figura 6.11 de Krohn J (2019) Deep Learning Illustrated

La elección del tipo de neurona es importante porque determina la capacidad de aprender de la red. En este contexto aprender equivale a determinar los pesos (w) y los umbrales (b) para obtener un  output esperado.

Hasta pronto,
Bruno

Siguiente entrada: Capas de una red neuronal

13 de abril de 2020

Redes neuronales profundas

Hola, escribo esto durante la cuarentena del COVID-19, el lunes que muchos trabajadores vuelven al trabajo en España entre dudas por la seguridad pero acuciados por la economía.

En esta entrada y posiblemente otras posteriores me gustaría visitar el aprendizaje automático por medio de redes neuronales profundas, aquellas que tienen al menos 3 capas ocultas.

Es un tema apasionante y que ha evolucionado sin pausa en los últimos 20 años. Sin embargo, aunque diseñar y entrenar redes es complejo, están de moda y no es difícil leer por ahí que de la mano del aprendizaje profundo (Deep Learning, DL) podremos resolver cualquier problema que nos propongamos. Yo no soy experto, pero llevo leyendo sobre redes neuronales desde que escuché hablar de ellas a mi profesor de la Complutense Rafael Lahoz Beltrá y más tarde en la asignatura de aprendizaje automático de la UNED. Además, he podido verlas en acción por sus aplicaciones en bioinformática estructural.

Utilizaré figuras y contenidos que he ido leyendo estos días en el libro Deep Learning Illustrated (2019), cuyo autor principal es John Krohn:
cover.jpeg
https://www.deeplearningillustrated.com

En este libro la ilustradora Aglaé Bassens pone cara a los protagonistas de la historia, como este Santiago Ramón y Cajal y sus dibujos de neuronas en cortes de tejidos:
https://www.deeplearningillustrated.com
En realidad las redes neuronales son estructuras de datos hechas a semejanza de las observaciones de Cajal y otros neurocientíficos que estudiaron cómo las neuronas se tocan entre sí y reciben información de múltiples axones. Aunque no sepamos bien cómo la corteza cerebral procesa la información, su organización en capas de neuronas ha servido de base a la creación de redes neuronales artificiales.

La red neuronal que más he utilizado en mi trabajo como biólogo computacional es PSIPRED, que sirve para la predicción de estructura secundaria de proteínas a partir de información evolutiva:

Tomada de Jones DT (1999) J.Mol.Biol., 292(2):195-202

Cómo se ve en la figura, PSIPRED está compuesta por dos redes consecutivas, cada una con 3 capas, la de input, la oculta y la de output. De acuerdo con la definición de Krohn, ninguna de estas redes sería profunda, pues no cumplen el requisito de tener al menos 3 capas ocultas. Éste es el principal desarrollo desde 1999, ahora las redes son mas profundas y eso ha permitido en muchos casos tratar relaciones no lineales y abstractas:

Arquitectura de una red neuronal profunda, figura 4.2 de Krohn J (2019) Deep Learning Illustrated
El próximo día más, cuidáos,
Bruno

Siguiente entrada: Tipos de neuronas en redes profundas

10 de marzo de 2020

Introducción a la ciencia de datos

Hola,
en plena vorágine del coronavirus toca hablar del libro Introduction to Data Science, al que podéis acceder en https://rafalab.github.io/dsbook



El libro lo escriben Rafael Irizarry y más de 20 colaboradores. Rafa fue uno de los fundadores de Bioconductor, por lo que no debería sorprender que su lenguaje preferido para manipular y analizar datos sea R.

El libro se organiza en estas secciones:

El libro se puede descargar en formato PDF o comprar en papel, pero lo más interesante es que todo el texto y el código fuente está disponible en formato R markdown en https://github.com/rafalab/dsbook . De esta manera es posible reproducir todos los análisis del libro dentro de Rstudio.

Rafa está ahora tratando de traducir al español. Puedes ayudar con los términos que se puedan traducir contribuyendo al documento  https://github.com/rafalab/dslibro/blob/master/como-se-dice.md

Termino diciendo que podéis estar al tanto de actualizaciones en la cuenta de twitter https://twitter.com/rafalab

Hasta pronto,
Bruno