49
Visió per Computador Deep learning Felipe Lumbreras Dept. Ciències de la Computació / Centre de Visió per Computador Universitat Autònoma de Barcelona http://www.cvc.uab.es/shared/teach/a102784/

Visió per Computador - cvc.uab.es · Visió per Computador Deep learning Felipe Lumbreras Dept. Ciències de la Computació / Centre de Visió per Computador Universitat Autònoma

Embed Size (px)

Citation preview

Visió per ComputadorDeep learning

Felipe LumbrerasDept. Ciències de la Computació / Centre de Visió per Computador

Universitat Autònoma de Barcelonahttp://www.cvc.uab.es/shared/teach/a102784/

Índice

• Intro• Red básica• Arquitectura• Loss• Datos• Regularización• Ajuste• Zoo• Otros• Links

Qué es el deep learning

• “[…] to allow computers to learn from experience and understand theworld in terms of a hierarchy of concepts, with each concept defined in terms of its relation to simpler concepts. By gathering knowledge fromexperience, this approach avoids the need for human operators to formally specify all of the knowledge that the computer needs. Thehierarchy of concepts allows the computer to learn complicatedconcepts by building them out of simpler ones. If we draw a graphshowing how these concepts are built on top of each other, the graph isdeep, with many layers. For this reason, we call this approach to AI deeplearning”

http://www.deeplearningbook.org/contents/intro.html

• “Deep Learning is a new area of Machine Learning research, which has been introduced with the objective of moving Machine Learning closerto one of its original goals: Artificial Intelligence”

http://deeplearning.net/

• Redes neuronales

Intro

Esquema

Intro

Alexey Grigorevich Ivakhnenko, 1965

McCulloch-Pitts neuron, 1943

Historia

• McCulloch-Pitts, Neuron [1943]. Pesos configurados a mano

• Rosemblatt, perceptron [1957]. Clasificador, aprendía de ejemplos

• Widrow and Hoff, ADALINE (adaptive linear element) [1960]. Regresor, usaba descenso estocástico de gradiente

• Minsky and Papert, XOR problem [1969]. Los modelos lineales tienen limitaciones

• Fukushima, Neocognitron [1980]. Campos receptivos, precursor de CNN

• Backpropagation + Multilayer perceptron ideas ya establecidas pero rescatadas por Rumelhart, Hinton y Willians [1986] para resolver problemas complicados.

• LeCun, LeNet-5 [1998]. Utiliza Convolutional Neural Networks para reconocer patrones visuales (dígitos) a partir de píxeles

• …

Intro

http://beamandrew.github.io/deeplearning/2017/02/23/deep_learning_101_part1.html

• Bases de datos (datos etiquetados)

• Capacidad de la red: más neuronas y más conectividad

• Mejora computacional (GPUs)

Intro

Claves del éxito

Qué hace una red

• Parte de ejemplos (datos-etiquetas, entradas-salidas, x-y)

• Aproxima/genera una función. Dada una entrada genera unas salida.

– Clasifica

– Regresiona

– Genera

– …

• Con una única capa oculta y un número finito de neuronas se puede aproximar cualquier función: universal approximation theorem

• Cómo lo hace: parte de un estado inicial (aleatorio, otro problema, …), altera los pesos de manera que se minimiza el error entre las respuestas deseadas (presentadas) y lo que genera la red

Intro

cs.stanford.edu/people/karpathy/convnetjs/

z1

x2

x1

x1

xn

z1x2

𝑔(𝒙)z2

zo

...

Para qué se usan en VC

• Clasificación de imágenes: 1K–10K clases

http://image-net.org/

www.nature.com/articles/nature21056.epdf

• Detección de objetos: 20-1K clases

• Segmentación semántica: 3 – 20 clases

Intro

Para qué se usan

• En todos los ámbitos de la VC se está apostando por este tipo de soluciones– Generación de imágenes, phillipi.github.io/pix2pix/

– Style transfer, github.com/fzliu/style-transfer, arxiv.org/abs/1705.01088v1

– Superresolución arxiv.org/abs/1501.00092, arxiv.org/abs/1702.00783

– Colorización, richzhang.github.io/ideepcolor/

– 3D, ...

• En otros ámbitos:– Gaming,

– Síntesis de texto,

– Reconocimiento de habla,

– Chatbots,

– Criptografía,

– Gráficos: generación de escenas, recolorización, reiluminación,

– Simulaciones: astrofísica, ingeniería, ...

Intro

Redes neuronales

Intro

AlexNet (2012)

VGG-16 (2014)

Esquema típico de red feedforward

Redes famosas y usadas en la resolución de varios problemas

Perceptrón

• Neurona

• Neurona computacional , n inputs y una salida, parámetros (pesos 𝜔), función de activación = threshold binario (ajustado en cada caso, t)

Red básica

Modelo simple:- Pesos sinápticos- Estímulo acumulado- Salida todo o nada

Clasificador lineal binario

XOR problem

playground.tensorflow.org

𝑦 = 𝜎𝑡(𝝎′ · 𝒙)

𝑏

𝜎

Multilayer perceptron

• MLP red neuronal feedforward

• Más capas -> ocultas (hidden layers) -> deep

• Conseguimos fronteras y funciones más complicadas (no lineales)

• Neurona base: para no ajustar el threshold de la función de activación lo trataremos como un peso extra conectado a una entrada fija (bias 𝑏)

• Dispondremos varias capas

• Usaremos funciones de activación derivables (permiten el aprendizaje)

Red básica

𝑦 = 𝜎(𝝎′ · 𝒙 + 𝑏)

𝒛 = 𝜎(𝑾𝟐𝒚 + 𝒃2) = 𝜎(𝑾𝟐𝜎 𝑾𝟏𝒙 + 𝒃1 + 𝒃2)

x1

xn

z1

x2z2

zo

......

...

𝑾𝟐, 𝒃2𝑾𝟏, 𝒃1 𝑦1

𝑦m

𝑦2

Backpropagation

• El objetivo es minimizar la diferencia entre la función objetivo (respuestas conocida) y la respuesta de la red, Coste (C)

• Utilizaremos un

descenso del gradiente

• El error que observamos en la salida, C, lo propagamos hacia el interior. Se recalcularán pesos y bias

• Se utiliza la regla de la cadena para conocer cómo se ve afectado cada parámetro

Red básica

neuralnetworksanddeeplearning.com/chap2.html

Arquitectura

• ConvNets: input + [CNN + subsampling]xN + [FC]xM + output -> loss

C: ConvolutionalS: Sampling

FC: Fully connected

• LeNet-5: activations: tanh or sigmoidsinput: 32x32C1: 28x28x6S2: 14x14x6C3: 10x10x16S4: 5x5x16F5: 120 F6: 84output: 10

Arquitectura

LeNet-5 (1998)

Mapas de características

Clasificador

Cascada

Arquitectura

Arquitectura

AlexNet (2012)

• AlexNet: activations: ReLUs

input: 227x227

C1: 55x55x96

C2: 27x27x256

C3: 13x13x384

C4: 13x13x384

C5: 13x13x256

FC6: 4096

FC7: 4096

FC8 (output): 1000

Capas convolucionales (CNN)

• Campo receptivo, solo hay conectividad local

• Los pesos son los mismos para cada posición (filtro)

• Equivale y se calcula con convoluciones

Ejemplo: entrada 32x32x3

campo receptivo: 5x5

pesos que conectan una región y una neurona: 5x5x3

• Hiperparámetros: – Depth: número de filtros que queremos usar

– Stride: salto entre convoluciones, si >1 se reduce el volumen espacial

– zero-padding: incrementa el borde del input con ceros, para ajustar tamaños de entradas y salidas y que se puedan comprar.

Arquitectura

Subsampling, Max pooling

• Podemos interponer capas de pooling que reducen el tamaño de la red

• En algunas arquitecturas podemos tener capas de upsampling, para ello nos guardaremos en las capas de max pooling de qué pixel sacamos el valor

Arquitectura

stride=3

subsampling

Max pooling

0.1 0.7

-0.2 0.6

0.1 0.7

-0.2 0.6

0.7

Average pooling

0.3

Funciones de activación

• Sigmoidea: 𝜎 𝑥 =1

1+𝑒−𝑥

• Tanh: tanh 𝑥

• ReLU: max 0, 𝑥

• Leaky ReLU: max 0.1𝑥, 𝑥

• ELU: ቊ𝑥 𝑥 ≥ 0

𝛼(𝑒𝑥 − 1) 𝑥 < 0

• Maxout: max(𝜔1′ 𝑥 + 𝑏1,𝜔2

′ 𝑥 + 𝑏2)

Arquitectura

1

x

Capa completamente conectada (FC)

• Las últimas capas no buscan características

• Clasifican, regresionan, …

• La información se ha ido reduciendo

• Conectamos todas con todas las neuronas en un esquema tradicional

Arquitectura

z1

z2

zo

...

......

FC1 FC2

output

Softmax

• Los outputs de la red para el caso de un clasificador necesitamos que se adapten al rango 0,1 y que sean una probabilidad (sumen 1).

• Para ellos utilizaremos la función softmax que ajusta las salidas de nuestra red al rango 0,1

𝜎(𝒛)𝑗=𝑒𝑧𝑗

σ𝑘 𝑒𝑧𝑘

Arquitectura

Loss/Cost function

Loss

• Para poder usar backpropagation, definiremos una cost/loss/error function(*) que tiene que satisfacer dos propiedades:1. Se debe poder expresar como un promedio de costes para muestras de entrenamiento

individuales .

𝐶 =1

𝑛

𝑥

𝐶𝑥

2. La función de coste C no debe depender de ningún valor de activación por detrás de los de la última capa

(*) en algunos contextos se distinguen estas, siendo loss (perdida) la función que evalua el error para un dato concreto, y cost (coste) la que aglutina un conjunto de muestras y términos regularizadores

Loss para regresión

• L2 o cuadrática

𝐶 =1

2

𝑗

(𝑎𝑗𝐿 − 𝑦𝑗)

2

• L1 o absoluta o Laplace, no diferenciable en cero.

𝐶 =

𝑗

|𝑎𝑗𝐿 − 𝑦𝑗|

• Huber: cuadrática para valores pequeños, absoluta para valores grandes

Loss

Loss para classificación

• Logistic

𝐶 = −𝑦𝑗 log 𝑎𝑗𝐿 − 1 − 𝑦𝑗 log(1 − 𝑎𝑗

𝐿)

• Hinge

𝐶 = max(0,1 − 𝑎𝑗𝐿𝑦𝑗)

Loss

Qué datos usaremos

• Muchos y etiquetados

• Bases de datos grandes – MNIST: 70K imágenes en grises 20x20

representa dígitos escritos a mano

60K training, 10K testing

– CIFAR-10: 60K imágenes en color 32x32

10 clases, 6K/clase. 50K training,10K test

– CIFAR-100: lo mismo pero con 100 clases, 600/clase

– ImageNet: organizada según WordNet

10M imágenes color, 10K categorías

– Places: 2,44M imágenes color.

– ….

Datos

Training, Validation, Test

• Training: datos usados para aprender, la diferencia de las respuesta de la red a estos datos con respecto a las salidas esperadas es la diferencia que propagaremos hacia atrás.

• Validation: la manera correcta de sintonizar los hyperparámetros sin tocar el resto de los datos. La idea es partir el training en dos: uno mayor para entrenar y otro para validar. Podemos evaluar la accuracy obtenida cada cierto tiempo y ver cómo evoluciona en el tiempo.

• Test: Se evalúan una única vez al final. No podemos usar el test para aprender la red o sus hiperparámetros

• En el caso de tener pocas muestras y no poder partir en 3 se puede optar por hace una Cross-validation

Datos

Epoch, batch, iterations

• Epoch: una pasada de los datos forward y backward de todos los datos de entrenamiento

• batch size: número de muestras de entrenamiento en un paso forward/backward. Cuanto mayor sea este batch size mejor representado estará el gradiente pero más memoria se necesitará.

• Iterations: número de pasos, cada uno usa batch size número de ejemplos

Datos

Evolución temporal de un aprendizaje

Datos

Regularización

• Hacer más robusto el aprendizaje, reducir el overfitting… Contamos con varias técnicas:

– Data augmentation

– Early stopping

– Dropout

– Batch normalization

– Weight decay

Datos

Data augmentation

• Generar más muestras plausibles a partir de:

• - ligeras traslaciones (random crops)

• - simetrías horizontales y verticales

• - rotaciones

• Manipulación del color

• Distorsiones geométricas

• Añadir ruido a los datos

• Utilizar partes y reconstruir nuevas imágenes

• Nota: siempre que sean creíbles, por ejemplo una escena con el cielo en el suelo no es creíble dentro del ámbito de un coche autónomo, pero una naranja en cualquier dirección sí en un entorno industrial de control de calidad de fruta.

Datos

Early stopping

• El training genera overfitting de sus datos, la red acaba ajustando muy bien las respuestas del training. Cuando pasa esto la red se equivocará más en un caso no visto. Lo que haremos es vigilar y parar cuando el validation error comience a subir

Datos

Dropout

• Más “barato” que Batch normalization

• Máscara de 1/0

Datos

Batch normalization

Datos

Weight decay

• Evita que la importancia del resultado recaiga en pocas neuronas limitando el peso de estas.

• Añadimos a la función de coste un término que penaliza que los pesos se hagan grandes

Datos

ሚ𝐶 = 𝐶 +𝜆

2𝑊2

Ajuste (hiperparámetros)

• Babysitting

• Random search vs. Gridded search

• Simulated annealing

• Metalearning

Ajuste

Aceleración (GPU)

• En esencia una red consiste en multiplicar unos vectores de entrada por unas matrices de pesos … y aprender consiste en reducir el error en la salida propagándolo backwards

• GPUs

• Cuda, openC, …

Aceleración

Entornos de programación

• Caffee• MatConvNet (Matlab)• Theano• Torch• Tensorflow• Keras (sobre Theano o Tensorflow)• Lasagne• PyTorch• Caffe2 • …

Entornos

Zoo

Zoo

https://adeshpande3.github.io/adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-About.html

Siamesas

Zoo

Tripletas

Zoo

Reccurrent (RNN)

• Las salidas se utilizan como entradas, esto genera un estado interno de la red que exhibe un comportamiento temporal.

• Usadas con éxito con secuencias: modelización del lenguaje, traducción automática, reconocimiento de voz, image captioning entre otras.

• LSTM (Hochreiter & Schmidhuber, 1997) es uno de los tipos de RNN más usados en la que el gradiente se propaga unos cuantas veces hasta que se olvida.

• Esta redes que tienen millones de parámetros requieren semanas de entrenamiento en sistemas multiGPU.

Zoo

Resnet

Zoo

• Mezclas las salidas de una capa, con las salidas de unas cuantas capas antes.

• Necesitas profundidades muy grandes de redes

• Dan buenos resultados

Autoencoders

• “Comprimes” los datos,

• Quitas lo superfluo

• Reduces la dimensionalidad

Zoohttp://cs.stanford.edu/people/karpathy/convnetjs/demo/autoencoder.html

GAN

• "If it doesn't work, try a GAN".

• Motivación:

Zoo

GAN

• Esquema

Zoo

GAN

Zoo

https://github.com/junyanz/CycleGAN

GAN

Zoo

https://github.com/phillipi/pix2pix

Otros conceptos interesantes

• Embedings

• Domain adaptation

Misc.

Links interesantes

• http://cs231n.stanford.edu/2016/

• http://www.deeplearningbook.org/

• http://neuralnetworksanddeeplearning.com/

• http://cs.stanford.edu/people/karpathy/

• http://distill.pub/

• http://deeplearning.net/

Links