Diferentes técnicas de las redes neuronales

DIFERENTES TÉCNICAS DE LAS REDES NEURONALES

En la entrada anterior hemos visto, un poco por encima, lo que son las redes neuronales artificiales y de que se componen. La explicación de como se consigue  la salida de las neuronas y de la red en su totalidad, encaja con una técnica de las redes neuronales: Forward Propagation. La primera técnica que se va a explicar en esta entrada.

Forward propagation

El Forward propagation es una implementación vectorial de las funciones de las redes neuronales, es decir, explica como pasan los valores de entrada (x) a ser los valores de salida, como se transforman. 

Aunque ya se haya explicado este proceso en la entrada anterior, vemos necesario volver a explicarlo, para entender correctamente las demás técnicas (si lo habéis entendido bien, podéis saltar un poco más hacia adelante).

Bien pues, primero las entradas (x) se multiplican con una matriz de pesos (θ) que controla la función de mapeo de una capa a otra. Después, una vez insertado en el cuerpo de la neurona se le aplica una función de activación para conseguir la activación (a). Esta función de activación es la función sigmoidea (g), la misma que se utiliza en la regresión lineal. Y al final la señal va a otra neurona o a la salida. Si la señal o información va a otra neurona esta pasa a ser la entrada, y se repite la secuencia.

Deciros que se conoce como Forward propagation a este método porque se empieza con la activación de las entradas hasta llegar a la salida.

Si aun así, no se ha entendido del todo como funciona esta técnica, podéis veros el video insertado a la derecha del texto. En el video se explica más detenidamente el funcionamiento del Forward propagation. He de recalcar que está en inglés, pero se entiende bien. A mí, personalmente, me ayudo mucho a entender algunos conceptos de las redes neuronales. Tiene más de un vídeo, los cuales podéis pasaros a ver su canal (Welch Labs), ya habrá más referencias a sus vídeos durante este blog...

La propagación hacia delante solamente es una técnica que calcula valores. Si los valores de la red, los pesos, no están bien ajustados la red no sirve para nada. Entonces ¿Cómo se ajustan los pesos? ¿Cómo se entrena una red? 

Pues parece que nos estamos repitiendo una y otra vez, pero aquí también se utiliza la función de coste (J).

Función de coste en redes neuronales

Para aquellos que todavía no sepan lo que es la función de coste, por favor, pasaros a leer tanto la entrada de Regresión lineal como la de Regresión logística

Deciros que la función de coste de las redes neuronales es una generalización de la que se usa en la regresión logística. La mayor diferencia es que hay más de una salida, en vez de una. Así como, el tener un término de regularización.

Aquí tenéis una comparación de ambas funciones, una sirve para diferenciar dos clases y la otra para más de una.

Pero espera... ¿Cómo que las redes neuronales son capaces de diferenciar más de una clase? Pues sí, habéis estado atentos. Las redes neuronales no tienen que tener solamente una salida, pueden tener varias salidas, lo que las hace muy útiles a la hora de clasificar.

Clasificación multiclase

En pocas palabras, la clasificación dentro de las redes neuronales funciona con más de una salida. La salida final se define en una matriz donde están todas las salidas posibles. Por ejemplo, si existen 4 salidas, 4 grupos posibles, la salida será una matriz de 4x1. Si se activa la primera salida significa que el dato introducido a la entrada pertenece al primer grupo, si se activa la segunda salida pertenece a la segunda... Y así con todas.

La siguiente imagen deja bastante claro lo que queremos explicar:

En este caso hay 4 salidas posibles. Si se activa uno significa que la entrada pertenece a ese grupo. 

Una vez dejado claro como clasifican las redes neuronales, podemos proseguir con la explicación de cómo aprenden las redes neuronales.

Tal como comentábamos, tanto en la regresión lineal, como en la regresión logística, entrenar a una inteligencia artificial consiste en minimizar la función de coste. Para ello en las entradas anteriores utilizábamos el gradiente de descenso. En el entrenamiento de las redes neuronales también se utiliza el gradiente de descenso, pero antes de explicar como se entrenan, debemos presentar otra técnica que es parte del entrenamiento: Backpropagation.

Backpropagation

La técnica de Backpropagation o propagación hacia atrás sirve para ver cual es el error de cada nodo de la red neuronal y así poder ajustarlos para que el error disminuya. Es decir, una vez hecho el Forward propagation y haber conseguido los valores de activación (a) se aplica el Backpropagation a la red para sacar los errores del los nodos (δ), desde atrás hacia adelante. Se ve que pesos han tenido mayor contribución al error y se ajustan para que cometan menos error.

Primero se hace la Forward propagation

Para después sacar los errores mediante la Backpropagation

Una vez que sabemos que contribución tiene cada nodo al error se puede minimizar estos para mejorar la red, es decir, entrenarla. Para ello se pueden utilizar diferentes técnicas, entre ellas nuestra ya conocida gradiente de descenso.

Tal como hemos comentado antes también hay un vídeo explicando el fenómeno de Backpropagation del canal mencionado:


Entrenamiento de una red neuronal

En resumidas cuentas, el entrenamiento de una red neuronal consiste en empezar con unos pesos aleatorios de la red; hacer la Forward propagation para sacar la relación entre la salida y la entrada, y el valor de las activaciones; después hacer la Backpropagation para sacar los valores de los errores y la contribución de cada nodo, y al final minimizar estos errores con la gradiente de descenso. Se repite esta secuencia tantas veces sea necesario y se consigue una red bien entrenada.

Comentarios

Entradas populares de este blog

Proyecto Estación Meteorológica 4: Visualización de Resultados Mediante HTML y D3.js

Proyecto Estación Meteorológica 3: Obtención y Envío de Datos Mediante Python