Introducción al mundo de las Redes Neuronales
En el estudio de Machine Learning, se puede encontrar una de las ramas más importantes como es Redes Neuronales (RNA), del cual desprenden muchos conceptos tanto sencillos como complejos, si dejamos de ver a la RNA como una caja negra, pero primero teniendo en cuenta sus diferentes usos y así adentrarse en sus aplicaciones con un mayor grado de interés, pues bien, las RNA ayudan con la clasificación, regresión, reconocimiento de imágenes, de voz, traducción automática, conducción automática de autos, publicidad dirigida y entre muchos otras utilidades. Como se muestra, aún existe un mundo no explorado del todo, es por eso que, en este artículo se dará un vistazo inicial para comprender el funcionamiento de las RNA.
Una (RNA) consiste en un modelo matemático basado en el funcionamiento y comportamiento biológico de las neuronas que se organizan formando la estructura del cerebro humano (Caparrini, 2019).
En la Figura 1, se puede observar un ejemplo de red neuronal con varias entradas, donde la neurona puede adaptarse al medio que lo rodea y aprender de él modificando el valor de sus pesos sinápticos, y por ello son conocidos como los parámetros libres del modelo, los cuales pueden ser modificados y adaptados para llevar a cabo una tarea determinada (Caparrini, 2019).
Figura 1: Modelo neuronal -
Caparrini, 2019 |
Arquitectura de una red neuronal artificial
Perceptrón de una capa
Consta de una sola capa de nodos de salida; las entradas están conectadas directamente a las salidas a través de una serie de ponderaciones. La suma de los productos de las ponderaciones y las entradas es calculada en cada nodo y, si el valor es superior a algún umbral (típicamente 0), la neurona es disparada y toma el valor de activación (típicamente 1); de forma contraria, toma el valor de desactivación (típicamente -1) (Red neuronal prealimentada, 2020).
Perceptrón multicapa
Los perceptrones individuales pueden agruparse formando redes de neuronas conectadas entre sí (de forma que la salida de unas se convierte en la entrada de otras) (Caparrini, 2019).
Las conexiones que llegan y salen de las neuronas, se denominan sinápticas e indican el flujo de la señal a través de la red, y tienen asociadas el peso sináptico correspondiente (Caparrini, 2019).
Si la salida de una neurona va dirigida hacia dos o más neuronas de la siguiente capa, cada una de estas últimas recibe la salida neta de la neurona anterior. La cantidad de capas de una RNA es la suma de las capas ocultas más la capa de salida. En el caso de existir capas ocultas nos referimos a la RNA como un Perceptron multicapa (Caparrini, 2019).
Función de activación
Son las que permiten el paso o no del valor obtenido de la sumatoria de entradas por sus pesos correspondientes. A continuación, en las figuras 2, 3, 4, 5 y 6 se presentan algunas funciones de activación.
$$f(x)=x$$
Figura 2: Función Identidad |
Figura 3: Binary Step |
Figura 4: Rectificador lineal unitario |
Figura 5: Función Logística |
Figura 6: Función TanH |
Estructura de las capas
Capas de entrada
- Debe haber una neurona por cada variable
- Se deben centrar y reducir las variables
- Por defecto no acepta variables categóricas, para eso debemos pasarlas a variables dummy
Capas ocultas
- No es tan claro cuántas capas y neuronas usar
- Para problemas simples no usar muchas capas
- Generalmente 1 o 2 capas son suficientes
- Entre más capas y neuronas mayor tiempo de ejecución
Capas de salida
- Para regresión usa una neurona
- Para clasificación binaria usa una neurona
- Para clasificación multiclase usa una neurona por cada clase
- Se debe indicar una función de activación adecuada
Función de costos
Figura 7: Esquema de función de costos |
La idea es buscar el mínimo valor de $C$ e ir corrigiendo los pesos. No obstante, nos encontramos con el problema de que ir ajustando este valor por fuerza bruta es computacionalmente costoso, y es por eso que surge la definición del gradiente descendente (estocástico).
Gradiente descendente
Figura 8: Gradiente descendente - Raschka,
2015 |
Gradiente descendente estocástico.
Nos ayuda en caso de que la función de costes se muestre de la siguiente manera:
Figura 9: Función de costes no convexa |
En la Figura 9 se puede apreciar que el algoritmo halló un mínimo local y no global.
Y como podemos observar, el no estocástico toma una función de costes global, mientras que el estocástico va tomando por cada observación una función de costes y corrigiendo sus pesos. Esto tiene un exceso de coste computacional claramente, pero tiende a converger hacia un mínimo global.
Entonces para darle una solución se puede fusionar ambos métodos, en donde la idea es tomar unas cuantas observaciones por mini-bloques de manera aleatoria e ir calculando la función de costes y realizar los respectivos ajustes de pesos.
Backpropagation
El objetivo del algoritmo de retropropagación es calcular las derivadas parciales $\frac{\partial C}{\partial w}$ y $\frac{\partial C}{\partial b}$ las cuales nos permitirán modificar los pesos y al término b, denominado bias de cada neurona, para reducir el coste $C$ (Blanco).
El sesgo o bias, es un parámetro que ayuda a mover la línea que divide los datos de cada neurona, si el valor de b es cero, la línea pasa por el origen, dependiendo del número que tenga este parámetro es por donde pasará la línea que divide a los datos (Rodríguez, 2018).
En la práctica es común combinar el algoritmo de BP con algún algoritmo de aprendizaje como la regla delta o el método del descenso por el gradiente estocástico (Blanco).
Para implementar correctamente el gradiente descendiente se debería crear un loop externo que generara los mini-batches de manera aleatoria para iterar por las diferentes épocas (número de veces que se ejecutaran los algoritmos de forwardpropagation y backpropagation) del entrenamiento. (Blanco)
Tasa de aprendizaje
Figura 12: Demasiado bajo |
Figura 13: Correcto |
Figura 14: Demasiado alto |
¿Cómo funciona una red neuronal?
- Inicializar los pesos aleatoriamente con valores cercanos a $0$ (pero no $0$).
- Introducir la primera observación del dataset en la Capa de Entrada, cada característica es un nodo de entrada.
- Propagación hacia adelante: de izquierda a derecha, las neuronas se activan de modo que la activación de cada una se limita por los pesos. Propaga las activaciones hasta obtener la predicción $y$.
- Comparamos la predicción con el resultado real. Se mide entonces el error generado.
- Propagación hacia atrás: de derecha a izquierda, propagando el error hacia atrás. Se actualizan los pesos según lo responsables que sean del error. El ratio de aprendizaje gobierna cuánto deben actualizarse los pesos.
- Se repiten los pasos 1a 5 y se actualizan los pesos después de cada observación (Reinforcement Learning). O: Se repiten los pasos 1 a 5 pero actualiza los pesos después de un conjunto de observaciones (Batch Learning).
- Cuando todo el conjunto de entrenamiento ha pasado por la RNA, se completa un epoch. Hacer más epochs.
Consideraciones importantes:
- Si la función de activación de las neuronas es lineal, entonces la red completa solo podría calcular una función lineal (Caparrini, 2019).
- El valor de salida de la red dependerá de los valores de los pesos y de los rangos de salida de las funciones de activación, entonces es recomendable estandarizar los datos (Caparrini, 2019).
- La función sigmoide tiene algunas características que la hacen muy interesante para ser utilizada como función activadora de las en una red neuronal: Tiene un rango de salida $(0, 1)$ lo que hace que la propagación de las activaciones se mantenga siempre en ese rango y que no se descontrole, además la derivada de la función sigmoide es muy sencilla lo que implica que algoritmo de retropropagación sea más rápido (Blanco).
- Por otra parte, al ser la función sigmoide una función exponencial y, por tanto, también serlo su derivada, la transmisión de los errores hacia atrás provoca que estos sean cada vez más cercanos a $0$ y por tanto que el aprendizaje en las capas más alejadas de la capa de salida sea casi nulo, este es el motivo por el que no ha sido posible entrenar redes neuronales con un número de capas elevado (Blanco).
- El teorema de Aproximación Universal (TAU), dice que toda función continua se puede aproximar por una red neuronal con la estructura adecuada como consecuencia se puede con una única capa oculta (Caparrini, 2019).
Bibliografía
Caparrini, F. (14 de diciembre de 2019). Redes Neuronales: una visión superficial. Obtenido de www.cs.us.es/~fsancho/?e=72
Nielsen, M. (2015). Neural
Networks and Deep Learning. Determination Press.
Raschka, S. (2015). Python
Machine Learning. Packt Publishing Ltd.
Blanco, P. A. (s.f.). Algoritmo de Retropropagación.
Red neuronal
prealimentada. (11 de febrero de 2020). Obtenido de Wikipedia, La enciclopedia libre.:
https://es.wikipedia.org/w/index.php?title=Red_neuronal_prealimentada&oldid=123470407
Rodríguez, V. (30 de octubre de 2018). Conceptos básicos sobre redes neuronales. Obtenido de https://vincentblog.xyz/posts/conceptos-basicos-sobre-redes-neuronales
Comentarios
Publicar un comentario