Solid Day - Deep learning

Post on 20-Jan-2017

81 views 1 download

Transcript of Solid Day - Deep learning

Yaerespartedelaevolución

SolidDay

DeepLearning:Introducción,usoseimplementacióncon

TensorFlowEnriqueDanielZentenoJiménez

https://mx.linkedin.com/in/ezentenoj#sgnext

IntroducciónalAprendizajeProfundo

¿Qué se puede hacer con Visión por Computadora?

● Medir: saber la distancia que hay entre dos pixeles en la imagen o entre la cámara y el objeto.

o Visión estereoscópica: basado en dos cámaras. Simula la visión humana.

o Triangulación: utiliza una cámara y un emisor de luz. El mayor ejemplo es el Kinect de Microsoft.

● Segmentar: conocer el límite físico de un objeto.

● Clasificar: darle un nombre a un objeto.

¿Cómo se clasifica un objeto en una imagen?

Por medio de dos pasos: la extracción de las características y el entrenamiento de un clasificador.

● Búsqueda de características:

o Valor del pixel

o Filtros:

§ Pasa altas, bajas, bandas.

§ Convoluciones.

o Extracción de características:

§ Histogram of Oriented Gradients.

§ Scale-invariant feature transform.

§ Haralick texture features.

Filtros: convolución (detector de contornos)

Kernel

Generación de características: histograma orientado de gradientes

Clasificación de características

● Support Vector Machines

● Decision trees

● Random Forest

● Naive Bayes

● Multi-layer Perceptron

Aprendizaje profundo

La obtención de características también es por medio de un proceso iterativo de aprendizaje.

Extractor de características entrenable

Extractor de características entrenable

Extractor de características entrenable

Clasificador

Extractor de características entrenable

Contornos Texturas Objetos

*Ejemplo de una red neuronal convolucional entrenada con Imagenet

Características conectadas en imágenes

Pixel Contorno Textura Patrón Parte Objeto

Técnicadeaprendizajeprofundoparalaclasificacióndetexto

¿Qué características necesitamos construir?

Letra Palabra Frases Oración Enunciado Historia

Tratar texto como imagen (Zhang y LeCun, 2015)

El texto es transformado en una imagen binaria.

Dimensiones: (alfabeto x longitud máxima)

Juniperus =

Red neuronal convolucional

Características:

Profundidad de 9 capas

6 capas de filtros de convolución

3 capas de Multi-layer perceptron.

¿Cómo ha sido probado?

1. DBpedia

a. 14 clases.

b. 560,000 documentos para entrenar.

c. 70,000 para probar.

d. 98.40% de exactitud en el conjunto de prueba.

2. Amazon Review Sentiment Analysis

a. 5 clases (subjetividad en comentarios de productos)

b. 3,600,000 comentarios para entrenar.

c. 400,000 comentarios para probar.

d. 59.57% de exactitud en el conjunto de prueba.

3. SogouCA en Chino

a. 5 clases (notas de periódicos)

b. 90,000 documentos para entrenar.

c. 12,000 para probar.

d. 95.12% de exactitud en el conjunto de prueba.

EjemploprácticoenTensorflow

¿Qué es Tensorflow?

• Biblioteca de software libre para hacer computación numérica por medio de grafos.

• Los nodos representan las operaciones matemáticas; las conexiones, los datos.

• Fue originalmente desarrollado por ingenieros del proyecto Google Brain.

• Estadísticas de su repositorio en Github (https://github.com/tensorflow/tensorflow):

• +30k estrellas.

• +12k Forks.

• +300 contribuidores.

Implementacióndelaredpublicada enVeryDeepConvolutionalNetworksforNaturalLanguageProcessing,2016

Implementación usando tflearn

net= tflearn.input_data([None,7,1014,1])net= tf.pad(net,((0,0),(0,0),(1,1),(0,0)))net= tflearn.layers.conv_2d(net,64,[7,3],scope='conv1',padding='valid')for iin range(4):net= tflearn.layers.conv_2d(net,64,[1,3],scope='conv_64_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)

net= tflearn.layers.conv.max_pool_2d(net,[1,3],strides=2)for iin range(4):net= tflearn.layers.conv_2d(net,128,[1,3],scope='conv_128_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)

net= tflearn.layers.conv.max_pool_2d(net,[1,3],strides=2)for iin range(4):net= tflearn.layers.conv_2d(net,256,[1,3],scope='conv_256_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)

net= tflearn.layers.conv.max_pool_2d(net,[1,3],strides=2)for iin range(4):net= tflearn.layers.conv_2d(net,512,[1,3],scope='conv_512_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)

net= tflearn.layers.conv.max_pool_2d(net,[1,8],strides=16)net= tflearn.layers.core.flatten(net)

Implementación usando tflearn

for iin range(2):net= tflearn.layers.core.fully_connected(net,2048,activation='relu')

net= tflearn.layers.core.fully_connected(net,9,activation='softmax')sgd= tflearn.SGD(learning_rate=0.005)accuracy= tflearn.metrics.Accuracy()net= tflearn.regression(net,optimizer=sgd,metric=accuracy,loss='categorical_crossentropy',to_one_hot=True,n_classes=9)model= tflearn.DNN(net,checkpoint_path='message_tickets',tensorboard_verbose=2)model.fit(X_train,y_train,n_epoch=100,validation_set=(X_test,y_test),batch_size=128,snapshot_step=100,run_id='message_tickets',show_metric=True)

Training Step: 1769 | total loss: 1.11202| SGD | epoch: 030 | loss: 1.11202 - acc: 0.6327 -- iter: 3712/7611

Monitoreo de avance en Tensorboard

¿Preguntas?Contacto:daniel@holagus.com