TensorFlowPost

 

Hoy, en esta quinta entrega de la introducción práctica al Deep Learning con TensorFlow de Google (primera entrega,  segunda entrega, tercera entrega, cuarta entrega) vamos una nociones mínimas sobre redes neuronales y introducir el modelo sencillo que vamos a usar en este tutorial.

Recordemos un poco el propósito de este tutorial: ser capaces de comprender un ejemplo concreto y sencillo para learn by doing de manera gradual e incremental.

9- Mi primera red neuronal

Como ya avanzamos al principio, en este tutorial  consideraremos como modelo una red neuronal (neural network) sencilla que dados unos valores de entrada  retorna una salida, en nuestro caso la clasificación de las imágenes de los dígitos. Como veremos esta red neuronal tiene otros parámetros, conocidos como pesos (weights) and sesgos (biases). Aprender un modelo de red neuronal conlleva el ajuste de los parámetros weightsbiases de tal manera que ajusta el mapeo entrada-salida. Sin duda un tema nada simple, por ello vamos a empezar explicando el elemento básico de una red neuronal: la neurona.

La función básica de una neurona en una red neuronal consiste, a partir de un determinado número de valores de entrada x1,x2,…xn, multiplicar cada uno de ellos por un peso (weight) específico w1,w2, …wn. A continuación se suman todos ellos para producir un valor entre 0 y 1 como resultado:Screen Shot 2015-11-30 at 15.58.00

 

En muchos casos, tal como ya hemos avanzado la neurona añade un parámetro de sesgo (bias) que es una constante.

Veamos un ejemplo muy simple que creo que puede ser muy ilustrativo. Supongamos que tenemos n puntos en un plano etiquetados con “cuadrado” y “redonda”. Dado un nuevo punto “x”, queremos saber que etiqueta le corresponde:

Screen Shot 2015-11-30 at 16.02.52

Una aproximación razonable es dibujar una línea que separe los dos grupos y usar esta línea como clasificador:

Screen Shot 2015-11-30 at 16.10.18

En este caso los datos de entrada serán representados por un vector  (x1,x2)  y nuestra función retornará “‘0’ o ‘1’  (encima o debajo de la línea). Matemáticamente la línea  (el clasificador) puede ser definido por un vector de pesos w y un offset vertical (o sesgo) b.

Para ello nuestra función debe calcular primero una suma ponderada de las entradas además del sesgo y el resultado sería entonces la entrada a una función de activación para producir un etiquetado. En el ejemplo anterior, nuestra función de activación es un punto de corte de umbral (por ejemplo, 1 si es mayor que un cierto valor):
Screen Shot 2015-11-30 at 16.32.20

 

Esquemáticamente se resumen los conceptos-componentes detrás de una neurona artificial de la siguiente manera:

Screen Shot 2015-11-30 at 16.35.06

10- Un modelo sencillo para empezar: “Softmax”

Pero recordemos que nuestro problema a resolver consiste en ser capaces de dada una imagen de entrada, obtener las probabilidades de que sea cada uno de los 9 posibles dígito. Por ejemplo, nuestro modelo podría predecir en una imagen un nueve y estar seguro en un 80% de que es un nueve, pero asignar un 5% de posibilidades de que sea un ocho (debido al bucle superior) y asignar una cierta probabilidad de poder ser cualquier otro número. Esto es debido a una cierta incertidumbre por no ser seguro, es decir, no podemos reconocer los dígitos con un 100% de confianza (confidence). En este caso usar una distribución de probabilidades nos puede dar una mejor idea de cuánto de confiados estamos de nuestra predicción.

Es decir, queremos como vector de salida una distribución de probabilidad sobre un conjunto de etiquetas mutuamente excluyentes. Nuestro vector de outputs es de la forma

Screen Shot 2015-11-30 at 16.39.23
y que la suma de todas sus componentes es 1.

 

Esto se logra mediante el uso de una capa de salida especial llamado una capa softmaxLa salida de una neurona en una capa softmax depende de las salidas de todas las otras neuronas en su capaEsto es porque se requiere la suma de todas las salidas para ser igual a 1.

La regresión softmax se realiza en dos pasos principales.  Primero calculamos “las evidencias” de que una determinada imagen pertenece a una clase en particular y después  convertimos estas evidencias en probabilidades de que pertenezca a cada una de las 10 clases. En la siguiente entrega entramos en más detalle.

Y mañana más, ahora ya he cogido el ritmo! 🙂

 

Link a la siguiente entrega: parte 6

  Cualquier consulta, sugerencia o detección de error les agradecería que me lo notificaran a  través de este correo electrónico DeepLearningBarcelona@gmail.com