Diferencias entre las técnicas de retropropagación

17

Solo por diversión, estoy tratando de desarrollar una red neuronal.

Ahora, para la propagación hacia atrás, vi dos técnicas.

El primero se usa aquí y en muchos otros lugares también.

Lo que hace es:

  • Calcula el error para cada neurona de salida.
  • Lo propaga hacia atrás en la red (calculando un error para cada neurona interna).
  • Actualiza los pesos con la fórmula: (dónde está el cambio de peso, la velocidad de aprendizaje, el error de la neurona que recibe la entrada de la sinapsis y la salida enviada en la sinapsis).
  • Se repite para cada entrada del conjunto de datos, tantas veces como sea necesario.

Sin embargo, la red neuronal propuesta en este tutorial (también disponible en GitHub) usa una técnica diferente:

  • Utiliza una función de error (el otro método tiene una función de error, pero no la usa para el entrenamiento).
  • Tiene otra función que puede calcular el error final a partir de los pesos.
  • Minimiza esa función (a través del descenso de gradiente).

Ahora, ¿qué método debería usarse?

Creo que el primero es el más utilizado (porque vi diferentes ejemplos usándolo), pero ¿funciona también?

En particular, no sé:

  • ¿No está más sujeto a los mínimos locales (ya que no utiliza funciones cuadráticas)?
  • Dado que la variación de cada peso está influenciada por el valor de salida de su neurona de salida, ¿las entradas del conjunto de datos que solo producen valores más altos en las neuronas (no solo las de salida) influyen en los pesos más que otras entradas?

Ahora, prefiero la primera técnica, porque me resulta más simple de implementar y más fácil de pensar.

Sin embargo, si tiene los problemas que mencioné (que espero no los tenga), ¿hay alguna razón real para usarlo en el segundo método?

Aspie96
fuente

Respuestas:

6

Los dos ejemplos presentan esencialmente la misma operación:

  • En ambos casos, la red se entrena con descenso de gradiente utilizando el error cuadrado retropropagado calculado en la salida.
  • Ambos ejemplos usan la función logística para la activación del nodo (la derivada de la función logística ses s(1 - s). Esta derivada es obviamente muy fácil de calcular, y esta es parte de la razón por la que se usó tan ampliamente (actualmente ReLU función de activación es más popular) , especialmente con redes convolucionales).
  • El primer método también usa impulso .

La principal diferencia que puedo ver es que en el primer caso la retropropagación es iterativa, mientras que en el segundo ejemplo se realiza en modo por lotes.

El último video de la serie de Welch Labs presenta un método cuasi-newtoniano que ofrece la ventaja de encontrar el mínimo de la función de costo calculando el Hessian (matriz de derivadas de segundo orden del error con respecto a los pesos). Sin embargo, esto se siente como comparar manzanas y naranjas: el descenso del gradiente de vainilla no utiliza información de segundo orden.

Cantordust
fuente