Rastrear el error hacia atras: la retropropagacion
Antes aprendimos que una red neuronal hace fluir las senales hacia adelante para dar una respuesta. Pero cuando esa respuesta es incorrecta, como la arreglamos? Una red tiene incontables pesos, asi que como hallamos cual tiene la culpa del error? La respuesta es sorprendentemente simple. Rastreamos el error hacia atras, de la salida hacia la entrada, y calculamos la parte de culpa de cada peso. Como seguir una fila de fichas de domino al reves para hallar al culpable. Esto es la retropropagacion.
Primero, predecir hacia adelante
Para dar una respuesta, una red hace fluir las senales hacia adelante.
Partiendo de la entrada,
pasa por cada capa a su turno,
y en la salida sale una prediccion.
Es el flujo hacia adelante que vimos la leccion pasada.
Pero una red recien construida
tiene sus pesos puestos algo al azar,
asi que la prediccion puede estar lejos de la correcta.
Miremos primero este flujo hacia adelante.
Toca para hacer fluir la senal hacia adelante una capa cada vez, de la entrada a la salida. Al final sale una prediccion, pero aun difiere de la respuesta.
Salio una prediccion, pero difiere de la respuesta.
Esta brecha es justo el error.
Medir cuanto se equivoco como un numero
es lo que llamamos la perdida.
Una perdida grande significa muy equivocado,
y una perdida cerca de cero significa buen acierto.
Nuestra meta es reducir esta perdida.
Pero una red tiene incontables pesos.
Cual debemos arreglar para bajar la perdida?
Quien tiene la culpa del error?
La salida esta mal.
Pero la salida no se equivoca sola.
La salida hizo su respuesta con la senal de la capa justo anterior,
y esa capa hizo la suya con la de antes.
Asi que la culpa del error
no recae en un solo peso,
se reparte un poco
entre cada peso que tomo parte en la prediccion.
Primero veamos el tamano del error en la salida.
Compara la prediccion de la salida con la respuesta. Toca para marcar el error (perdida), y queda claro que hay que rastrear hacia atras para hallar de donde vino.
Vimos el tamano del error en la salida.
Ahora debemos remontar este error.
Pienselo.
Cuando varias conexiones alimentan la salida,
algunas mandaron una senal grande
y otras una pequena.
Cuanto mayor la senal de una conexion,
mas contribuyo a la salida equivocada.
Asi que la culpa de esa conexion tambien es mayor.
Devolver el error, al reves
Ahora viene la verdadera retropropagacion.
Enviamos el error hacia atras,
de la salida hacia la entrada, una capa cada vez.
La direccion opuesta exacta a ir hacia adelante.
Es como seguir las fichas caidas al reves
para hallar quien volco la primera.
Cada vez que retrocedemos una capa,
cada conexion de esa capa
recibe su parte de cuanto causo el error.
Toca para enviar el error hacia atras una capa cada vez, de la salida hacia la entrada. Al retroceder, cada conexion recibe una parte de culpa. Mas grueso, mas culpa.
Rastreamos hasta el final.
Ahora cada peso de la red
ha recibido su propia parte de culpa.
Algunos pesos contribuyeron mucho al error,
y otros casi no cargan culpa.
Lo llamativo es que desde un solo error en la salida,
las partes hasta de los pesos internos profundos
se calcularon todas.
Gracias a seguir las fichas de domino al reves.
Arreglar cada peso segun su parte
Ahora que sabemos la culpa, toca arreglar.
Recuerda el descenso de gradiente de la leccion anterior.
Ese metodo de bajar un poco,
en la direccion donde la perdida disminuye.
Ajustamos cada peso segun su parte.
Los pesos con parte grande cambian mucho,
los de parte pequena cambian solo un poco.
No lo arreglamos todo de golpe,
arreglar poco a poco es lo que importa.
Toca ajustar para arreglar cada peso segun su parte, un paso por toque. Cada toque encoge la barra de perdida, y predecir adelante de nuevo cae mas cerca de la respuesta.
Cuanto mas ajustamos, menor la perdida.
Pero arreglar una vez no es el final.
Predecimos adelante otra vez,
medimos el error otra vez,
rastreamos atras las partes otra vez,
y ajustamos esa medida otra vez.
Repite esta vuelta incontables veces
y la prediccion de la red se acerca a la respuesta.
Asi una red mejora por si misma.
Resumamos
Reunido en una linea, es esto.
Primero haz fluir la senal adelante para una prediccion.
Compara con la respuesta y mide el error como perdida.
Envia esa perdida de la salida hacia la entrada,
hacia atras, para hallar la parte de cada peso.
Luego ajusta esa parte con descenso de gradiente.
Repite este predecir adelante, rastrear atras, ajustar
incontables veces, y la prediccion se acerca a la respuesta.
Es seguir las fichas de domino al reves para hallar al culpable.
Toca los puntos clave en orden para repasar. (predecir adelante -> medir el error como perdida -> rastrear atras las partes -> ajustar segun la parte)
Ahora sabes como una red neuronal arregla sus errores.
Fluye hacia adelante para dar una respuesta,
y cuando se equivoca rastrea el error hacia atras,
averigua quien tiene la culpa,
y arregla cada peso un poco en esa medida.
Gracias a esta idea simple de rastrear al reves,
incluso una red grande con incontables pesos
puede aprender por si misma.
Este es justo el secreto de como aprenden las maquinas listas de hoy.