Cómo calcular gradientes en una red neuronal de avance utilizando matrices

Primero asegurémonos de que entendemos cuál es el gradiente.

El gradiente es un vector de todas las derivadas parciales de la función de pérdida con respecto a los diferentes pesos o parámetros de características.

Por simplicidad, supongamos una red neuronal con una sola capa.

Una función de pérdida no regularizada podría definirse como:

[matemáticas] \ frac {1} {m} \ sum {(\ theta ^ {T} x ^ {(i)} – y ^ {(i)})} [/ matemáticas]

Donde [math] m [/ math] es el número de ejemplos de entrenamiento, la suma corre sobre todos los ejemplos de entrenamiento [math] i [/ math], [math] \ theta ^ {T} [/ math] es el vector de peso transpuesto , [math] x ^ {(i)} [/ math] es el vector de entrenamiento, y [math] y ^ {(i)} [/ math] es el vector de respuesta correcta.

El término: [matemática] \ theta ^ {T} x ^ {(i)} [/ matemática] es, por lo tanto, la hipótesis de cuál es la respuesta correcta, por lo que si estuviéramos usando una función de activación, la envolveríamos con esto.

Para encontrar el gradiente, o la derivada parcial, para cada peso [math] \ theta_j [/ math] en el vector de peso, puede modificar lo anterior para:

[matemáticas] \ frac {\ costo parcial (\ theta)} {\ partial \ theta_j} = \ frac {1} {m} \ sum {(\ theta ^ {T} x ^ {(i)} – y ^ { (i)})} x_j ^ {(i)} [/ math]

Donde, nuevamente, el subíndice [math] j [/ math] denota la característica de un vector.

Si se hace para todas las funciones, terminará con un vector de gradiente que puede usar con el descenso de gradiente. Cada peso se puede actualizar utilizando:

[matemáticas] \ theta_j: = \ theta_j \ alpha \ cdot \ frac {\ costo parcial (\ theta)} {\ partial \ theta_j} [/ matemáticas]

Donde [math]: = [/ math] es el operador de asignación (básicamente [math] = [/ math] de la programación), y [math] \ alpha [/ math] es la tasa de aprendizaje. (Una cosa a tener en cuenta es que para que el descenso de gradiente funcione correctamente, todos los pesos deben actualizarse simultáneamente)

En cuanto a cómo puede implementarlo en el código, puede usar el patrón de reducción de mapa para ejecutar la operación en todo el vector.

More Interesting

¿Preferiría que una novela sobre la era medieval fuera históricamente precisa y llena de conceptos verificables o fácilmente legible pero de hecho escasa?

¿Por qué la agrupación de datos del panel reduce los errores estándar?

¿Puedo entrenar una red neuronal convolucional (CNN) con imágenes de fondo diferente en blanco y negro?

¿Qué es la regresión de Ridge en términos simples?

¿El filtrado colaborativo se considera aprendizaje automático?

¿Cómo agrega Quora el aprendizaje automático a su aplicación web?

Cómo construir un motor de recomendación en tiempo real

¿Cuáles son algunos modelos de detección de rostros basados ​​en aprendizaje profundo disponibles gratuitamente?

¿Hay alguna trampa en los recientes anuncios de Microsoft e IBM sobre los avances en el reconocimiento de voz?

Soy Editor de Adquisiciones y para obtener conocimiento y autoaprendizaje de análisis de datos y habilidades de aprendizaje automático. ¿Alguien podría ayudarme a trazar un plan?

¿Cuál es la solución del ejercicio 1.3 del libro Machine Learning de Tom M. Mitchell?

¿Qué significa realmente la matriz de covarianza de la estimación de máxima verosimilitud de la distribución normal multivariante?

El mejor ajuste de línea se puede encontrar analíticamente por el método de mínimos cuadrados. ¿Podemos decir que la regresión lineal (mínimos cuadrados) tiene un optimizador?

¿NVIDIA GTX 1050 Ti 4GB es suficiente para Deep Learning?

¿Por qué no hay bloqueadores de anuncios impulsados ​​por el aprendizaje automático?