Articles

Entendiendo las redes neuronales 2: La matemática de las redes neuronales en 3 ecuaciones

En la primera parte de esta serie discutimos el concepto de una red neuronal, así como la matemática que describe una sola neurona. Sin embargo, hay muchas neuronas en una sola capa y muchas capas en toda la red, por lo que necesitamos llegar a una ecuación general que describa una red neuronal.

Una neurona

Lo primero que debe hacer nuestra red es pasar información a través de las capas. Ya sabemos cómo hacer esto para una sola neurona:

la Salida de la neurona es la función de activación de una suma ponderada de la neurona de entrada

2 las neuronas

Ahora podemos aplicar la misma lógica cuando tenemos 2 neuronas en la segunda capa.

En este ejemplo, cada neurona de la primera capa está conectada a cada neurona de la segunda capa, este tipo de red se denomina red completamente conectada. La neurona Y1 está conectada a las neuronas X1 y X2 con los pesos W11 y W12 y la neurona Y2 está conectada a las neuronas X1 y X2 con los pesos W21 y W22. En esta notación, el primer índice del peso indica la neurona de salida y el segundo índice indica la neurona de entrada, por ejemplo, W12 es el peso en la conexión de X2 a Y1. Ahora podemos escribir las ecuaciones para Y1 y Y2:

Ahora esta ecuación se puede expresar usando multiplicación de matrices.

visualización de la multiplicación de matrices desde http://matrixmultiplication.xyz/

Si es nuevo en la multiplicación de matrices y el álgebra lineal y esto lo confunde, recomiendo encarecidamente la serie de álgebra lineal 3blue1brown.

Ahora podemos escribir la salida de la primera neurona como Y1 y la salida de la segunda neurona como Y2. Esto nos da la siguiente ecuación:

Capa completa

De esto podemos abstraer la regla general para la salida de la capa:

Ahora en esta ecuación todas las variables son matrices y el signo de multiplicación representa la multiplicación de matrices.

El uso de la matriz en la ecuación nos permite escribirla de una forma simple y la hace verdadera para cualquier número de entrada y neuronas en la salida.

En la programación de redes neuronales también utilizamos la multiplicación de matrices, ya que esto nos permite hacer que la computación sea paralela y usar un hardware eficiente para ella, como las tarjetas gráficas.

Ahora tenemos la ecuación de una sola capa, pero nada nos impide tomar la salida de esta capa y utilizar como entrada para la siguiente capa. Esto nos da la ecuación genérica que describe la salida de cada capa de red neuronal. Una cosa más, necesitamos agregar, es la función de activación, explicaré por qué necesitamos funciones de activación en la siguiente parte de la serie, por ahora puedes pensar como una forma de escalar la salida, para que no se vuelva demasiado grande o demasiado insignificante.

Con esta ecuación, podemos propagar la información a través de muchas capas de la red neuronal como queremos. Pero sin aprendizaje, la red neuronal es solo un conjunto de multiplicaciones de matrices aleatorias que no significan nada.

Entonces, ¿cómo enseñar nuestra red neuronal? En primer lugar, tenemos que calcular el error de la red neuronal y pensar cómo pasar este error a todas las capas.

2: Pasar el error-Back-propagation

Para entender el algoritmo de propagación de errores tenemos que volver a un ejemplo con 2 neuronas en la primera capa y 1 neurona en la segunda capa.

supongamos que la Y es la capa de la capa de salida de la red y Y1 neurona debe devolver algún valor. Ahora bien, este valor puede ser bastante diferente del valor esperado, por lo que hay algún error en la neurona Y1. Podemos pensar en este error como la diferencia entre el valor devuelto y el valor esperado. Conocemos el error en Y1, pero necesitamos pasar este error a las capas inferiores de la red porque queremos que todas las capas aprendan, no solo la capa Y. Entonces, ¿cómo pasar este error a X1 y X2? Bueno, un enfoque ingenuo sería dividir el error Y1 de manera uniforme, ya que hay 2 neuronas en la capa X, podríamos decir que el error X1 y X2 es igual al error Y1 ideado por 2.

sin embargo, Hay un problema importante con este enfoque, las neuronas tienen diferentes pesos conectados a ellos. Si el peso conectado a la neurona X1 es mucho mayor que el peso conectado a la neurona X2, el error en Y1 está mucho más influenciado por X1 ya que Y1 = ( X1 * W11 + X2 * X12). Así que si W11 es mayor que W12 deberíamos pasar más del error Y1 a la neurona X1 ya que esta es la neurona que contribuye a ello.

Ahora que lo hemos observado, podemos actualizar nuestro algoritmo para no dividir el error de manera uniforme, sino para dividirlo de acuerdo con la ración del peso de la neurona de entrada a todos los pesos que llegan a la neurona de salida.

actualización el peso

Ahora podemos ir un paso más allá y analizar el ejemplo, donde hay más de una neurona en la capa de salida.

En este ejemplo vemos que, por ejemplo, la neurona X1 contribuye no solo al error de Y1, sino también al error de Y2 y este error sigue siendo proporcional a sus pesos. Por lo tanto, en la ecuación que describe el error de X1, necesitamos tener tanto el error de Y1 multiplicado por la relación de los pesos como el error de Y2 multiplicado por la relación de los pesos que vienen a Y2.

Esta ecuación puede escribirse también en la forma de la multiplicación de la matriz.

Ahora hay un truco más que podemos hacer para que esta cita más sencillo sin perder una gran cantidad de información relevante. El denominador de la relación de peso, actúa como un factor de normalización, por lo que no nos importa mucho, en parte porque la ecuación final tendremos otros medios para regular el aprendizaje de la red neuronal.

Esta es también una observación más podemos hacer. Podemos ver que la matriz con peso en esta ecuación es bastante similar a la matriz del algoritmo de avance. La diferencia es que las filas y columnas se cambian. En álgebra llamamos a esta transposición de la matriz.

Dado que no hay necesidad de usar 2 variables diferentes, podemos usar la misma variable del algoritmo feed forward. Esto nos da la ecuación general de la vuelta algoritmo de propagación

Tenga en cuenta que en el feed-forward algoritmo íbamos forma la primera capa a la última, pero en la propagación hacia atrás vamos formulario de la última capa de la red a la primera, ya que para calcular el error en una determinada capa necesitamos información sobre el error en la siguiente capa.

Artículos de tendencia de IA:

1. Cómo utilicé el aprendizaje automático como inspiración para pinturas físicas

2. EM o Trabajo de inicio: ¿Qué camino tomar para construir una carrera en Aprendizaje Profundo?

3. Los 100 mejores artículos de medios relacionados con Inteligencia Artificial

4. Conferencia de Inteligencia Artificial

Ahora que sabemos cómo pasar la información hacia adelante y pasar el error hacia atrás, podemos usar el error en cada capa para actualizar el peso.

3: Actualización de los pesos

Ahora que sabemos qué errores produce la red neuronal en cada capa, finalmente podemos comenzar a enseñar a nuestra red a encontrar la mejor solución al problema.

Pero ¿cuál es la mejor solución?

El error nos informa de lo erróneas que son nuestras soluciones, por lo que, naturalmente, la mejor solución sería aquella en la que la función de error sea mínima.

La función de error depende de los pesos de la red, por lo que queremos encontrar valores de pesos que resulten en el mínimo global en la función de error. Tenga en cuenta que esta imagen es solo para el propósito de visualización. En aplicaciones de la vida real, tenemos más de 1 peso, por lo que la función de error es una función de alta dimensión.

Pero, ¿cómo encontramos el mínimo de esta función? Una idea simple aquí es comenzar con pesos aleatorios, calcular la función de error para esos pesos y luego verificar la pendiente de esta función para ir cuesta abajo.

Pero ¿cómo podemos llegar a conocer la pendiente de la función?

Podemos usar álgebra lineal una vez más y aprovechar el hecho de que la derivada de una función en un punto dado es igual a la pendiente de una función en este punto. Podemos escribir la derivada de la siguiente manera:

Donde E es nuestra función de error y W representa el peso. Esta notación nos informa que queremos encontrar la derivada de la función de error con respecto al peso. Usamos n + 1 con el error, ya que en nuestra salida de notación de red neuronal después de los pesos Wn está En+1.

Luego podemos usar este derivado para actualizar el peso:

Esto representa el «ir cuesta abajo» cada iteración de aprendizaje (época) actualizamos el peso de acuerdo con la pendiente de la derivada de la función de error.

Hay una cosa más que necesitamos antes de presentar la ecuación final y es la tasa de aprendizaje. La tasa de aprendizaje regula qué tan grandes pasos estamos dando durante el descenso.

Como se puede ver con mayor tasa de aprendizaje, hemos de tomar pasos más grandes. Esto significa que podemos llegar al óptimo de la función más rápido, pero también hay una mayor probabilidad de que lo perdamos.

Con la tasa de aprendizaje más pequeña, tomamos pasos más pequeños, lo que resulta en la necesidad de más épocas para alcanzar el mínimo de la función, pero hay una menor posibilidad de que la perdamos.

Es por eso que en la práctica a menudo usamos la tasa de aprendizaje que depende de los pasos anteriores, por ejemplo. si hay una fuerte tendencia a ir en una dirección, podemos dar pasos más grandes (mayor tasa de aprendizaje), pero si la dirección sigue cambiando, debemos dar pasos más pequeños (menor tasa de aprendizaje) para buscar el mínimo mejor. En nuestro ejemplo, sin embargo, vamos a tomar el enfoque simple y usar un valor de tasa de aprendizaje fijo. Esto nos da la siguiente ecuación.

la tasa de Aprendizaje (Lr) es un número de rabia 0 — 1. Cuanto más pequeño sea, menor será el cambio en los pesos. Si el aprendizaje es cercano a 1. usamos el valor completo de la derivada para actualizar los pesos y si está cerca de 0, solo usamos una pequeña parte de ella. Esto significa que la tasa de aprendizaje, como su nombre indica, regula cuánto «aprende» la red en una sola iteración.

Actualizar los pesos era la ecuación final que necesitábamos en nuestra red neuronal. Son las ecuaciones las responsables del aprendizaje real de la red y de enseñarle a dar resultados significativos en lugar de valores aleatorios.

Poniendo todo junto

Feed-forward

propagación hacia Atrás

la Actualización de los pesos

Deja una respuesta

Tu dirección de correo electrónico no será publicada.