Julia

Redes neuronales

Author

David Gómez-Castro

Redes neuronales

https://commons.wikimedia.org/wiki/File:Colored_neural_network.svg

Una capa

https://commons.wikimedia.org/wiki/File:Single_layer_ann.svg

  • x1,x2, son las entradas

  • y1,y2, son las salidas

  • w11,w12, son los

  • Se calcula b1=w11x1+w21x2+w31x3+

  • Y luego y1=f(b1)

  • f es la llamada

Denotamos x=(x1,,xp), y=(y1,,yq), W=(w11,w12,)

Red de neuronas

Se pueden hacer redes

de varias capas:

la salida de una

es la entrada de la otra.

Si tenemos muchos pares de entradas y sus respectivas salidas

yi^=F(xi,W)

Buscar los mejores pesos W se llama

entrenar la red

Hay muchas generalizaciones de esta idea: redes profundas (muchas capas), redes convolucionales, …

¿Cómo de potente es esto? Vídeo de Google DeepMind

Evaluación de la red: forward-propagation

Al algoritmo para, dados los pesos y la entrada calcular la salida se lo llama forward propagation.

Entrenamiento de redes

Se separan los datos en un conjunto de entrenamiento y conjunto de pruebas

Para ajustar la red tenemos que elegir una función de pérdida d(y,y^). Por ejemplo |yy^|2.

A partir de ella elegimos una función de coste, que tenga en cuenta todos las pérdidas. Por ejemplo el error cuadrático medio J(W)=1Ni=1N|yiyi^|2

Así:

  • Se elige W minimizando el coste sobre el conjunto de entrenamiento
  • Se comprueba que es “bueno” en general el coste con este W sobre el conjunto de prueba (que debe ser distinto al de entrenamiento)

Hay múltiples opciones para la elección de función de coste y hacer la optimización eficientemente es gran parte de la dificultad.

Optimización en el entrenamiento

Para optimizar se utilizan múltiples procedimientos.

El ejemplo más sencillo es el descenso por gradiente Wn+1=WnγΔJ(Wn).

Para calcular J se emplea la regla de cadena. A este proceso lo llama back-progation.

Un ejemplo detallado en Julia

Flux.jl

Flux es una de las mejores librerías de ML en Julia.

Video de introducción

Ajustar una línea

Un ejemplo no trivial

Otros paquetes

MLJ.jl