Un Ejemplo Concreto: Aprendiendo la Función XOR
Clase 12 de 28 • Curso de Introducción al Deep Learning 2018
Contenido del curso
Proyecto práctico
Sesión interactiva: Configurar tu ambiente de trabajo
Conceptos básicos
- 7

¿Qué es una neurona?
06:10 min - 8

¿Qué es una red neuronal?
09:08 min - 9

Función softmax(z)
02:06 min - 10

¿Cómo aprende una red neuronal?
05:42 min - 11

Navegando la superficie de error con gradientes
06:59 min - 12

Un Ejemplo Concreto: Aprendiendo la Función XOR
Viendo ahora - 13

Recapitulación
01:28 min - 14

Proyecto: Diccionario en español
00:56 min
Algoritmos de Deep Learning y Redes Neuronales
- 15

Modelo #1: Logistic Classifier
04:13 min - 16

Sesión interactiva: Implementación de Logistic Classifier valores de entrada
11:12 min - 17

Sesión interactiva: Implementación de Logistic Classifier arquitectura
16:13 min - 18

Modelo #2: Multi Layer Perceptron (MLP)
01:17 min - 19

Sesión interactiva: Implementación de MLP ingresando datos
07:46 min - 20

Sesión interactiva: Implementación de MLP a nivel de arquitectura
15:45 min - 21

Modelo #3: Long-Short Term Memory (LSTM)
11:04 min - 22

Sesión interactiva: Implementación de LSTM definiendo entradas
11:12 min - 23

Sesión interactiva: Implementación de LSTM arquitectura y optimización
15:12 min - 24

Corriendo modelos
09:50 min - 25

Recapitulando
03:28 min
Evaluando un modelo
Conclusiones del curso
Contenido Bonus
Construiremos a continuación una red neuronal desde cero que aprenda la función XOR. La elección de esta función no lineal no es por casualidad. Sin backpropagation sería difícil aprender a separar clases con una línea recta.
Para ilustrar este importante concepto, nota a continuación cómo una línea recta no puede separar 0s y 1s, las salidas de la función XOR. Los problemas reales también son linealmente no separables.
La topología de la red es simple:
-
Entrada X es un vector de dos dimensiones
-
Pesos W1 son una matriz de 2x3 dimensiones con valores inicializados de forma aleatoria
-
Capa escondida h1 consiste de 3 neuronas. Cada neurona recibe como entrada la suma de sus observaciones escaladas por sus pesos, este es el producto punto resaltado en verde en la figura de abajo: z1 = [x1, x2][w1, w2]
-
Pesos W2 son una matriz de 3x2 con valores inicializados de forma aleatoria
-
Capa de salida h2 consiste de 2 neuronas ya que la función XOR retorna 0 (y1=[0,1]) o 1 (y2 = [1,0])
Más visualmente:
Entrenemos ahora el modelo. En nuestro ejemplo los valores entrenables son los pesos, pero ten en cuenta que la investigación actual está explorando nuevos tipos de parámetros a ser optimizados. Por ejemplo: atajos entre capas, distribuciones estables en las capas, topologías, velocidades de aprendizaje, etc.
Backpropagation es un método para actualizar los pesos en la dirección (gradiente) que minimiza una métrica de error predefinida, conocida como Función de Pérdida o Función de costo, dado un conjunto de observaciones etiquetadas. Este algoritmo ha sido repetidamente redescubierto y es un caso especial de una técnica más general llamada diferenciación automática en modo acumulativo reverso.
Inicialización de la red
Inicialicemos los pesos de la red con valores aleatorios.
Propagación hacia adelante:
El objetivo de este paso es propagar hacia delante la entrada X a cada capa de la red hasta calcular un vector en la capa de salida h2. Es así como sucede:
- Se proyecta linealmente la entrada X usando pesos W1 a manera de kernel:
- Se escala esta suma z1 con una función Sigmoid para obtener valores de la primera capa escondida. Nota que el vector original de 2D ha sido proyectado ahora a 3D.
- Un proceso similar toma lugar para la segunda capa h2. Calculemos primero la suma z2 de la primera capa escondida, la cual es ahora un vector de entrada.
- Y luego calculemos su activación Sigmoid. Este vector [0.37166596 0.45414264] representa el logaritmo de la probabilidad o vector predecido, calculado por la red dado los datos de entrada X.
Calculando el error total
También conocido como “valor real menos predecido”, el objetivo de la función de pérdida es cuantificar la distancia entre el vector predecido h2 y la etiqueta real proveída por un ser humano, y.
Note que la función de pérdida contiene un componente de regularización que penaliza valores de los pesos muy altos a manera de una regresión L2. En otras palabras, grandes valores cuadrados de los pesos incrementaran la función de pérdida, una métrica de error que en realidad queremos reducir.