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.
- ¿Cuál es el orden para aprender a usar los campos aleatorios de Markov para el procesamiento de imágenes?
- ¿Cómo puede una red neuronal convolucional aprender características invariables?
- Estoy tratando de construir un proyecto de aprendizaje automático para predecir el precio del automóvil usado. ¿Dónde puedo obtener una base de datos para la reventa de los autos usados?
- ¿Qué es el aprendizaje de características?
- Árboles de decisión: ¿Cómo podar un CARRITO?
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.