Maquinas Discriminativas Profundas´ Deep Learningmlazaro/Docencia/DL/DL-Sesion-01-LAB-2p.pdf ·...
Transcript of Maquinas Discriminativas Profundas´ Deep Learningmlazaro/Docencia/DL/DL-Sesion-01-LAB-2p.pdf ·...
Maquinas Discriminativas Profundas(Deep Learning)
Ejemplo practico en laboratorio.
http://www.tsc.uc3m.es/˜mlazaro/Docencia/DL.html
Marcelino Lazaro
Universidad Carlos III de Madrid
Marcelino Lazaro, 2020 1 / 27
Instrucciones iniciales
Ficheros necesarios en el directorio de trabajohttp://www.tsc.uc3m.es/˜mlazaro/Docencia/DL.html
I Python NotebookF practicaDL-2020.ipynb
I Fichero de metodos de aprendizajeF metodosDL.py
I Ficheros de datos (http://yann.lecun.com/exdb/mnist/)F train-images-idx3-ubyte.gzF train-labels-idx1-ubyte.gzF t10k-images-idx3-ubyte.gzF t10k-labels-idx1-ubyte.gz
Librerıas necesariasI numpyI matplotlibI gzipI tensorflowI scikit-learn
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 2 / 27
Indice de contenidos
Aprendizaje profundo (“deep learning” ) para clasificacion
I Aplicacion a una version reducida de la base de datos MNISTBreve descripcion de las funciones de aprendizaje disponiblesDiseno de varias soluciones neuronales
I Diseno de una red neuronal no profunda (1 capa oculta)I Diseno de una red neuronal profunda (4 capas oculta)I Diseno de una red de autocodificadores apilados (SDAs:
Stacked Denoising Autoencoders)F Entreno de autocodificadoresF Uso de autocodificadores para la construccion de una red
profundaI Redes profundas con Dropout (y/o Batch normalization)I Redes convolucionales (CNNs: Convolutional Neural Networks)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 3 / 27
Python
Descripcion de las funciones presentes enmetodosDL.py
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 4 / 27
Funciones en Python (evaluacion MLPs)
(o,H)=mlp(x,W,tAct)I x: patrones de entrada (Np ⇥ Ne)I W: pesos de la red: lista the No + 1 elementos
F Capa oculta 1 : (Ne+1) ⇥ Nn1F Capa oculta i : (Nn(i-1)+1) ⇥ NniF Capa de salida : (Nnu+1) ⇥ Ns
I tAct : parametro que define el tipo de funciones de activacion delas diferentes capas (lista de No+1 elementos)
F ‘linear’F ‘sigmoid’F ‘tanh’F ‘relu’F ‘softmax’
Nni: numero de neuronas de la capa oculta i (si i=0, Nni=Ne)Nnu: numero de neuronas de la ultima capa ocultaNo: numero de capas ocultas
I o: salida de la red neuronal (Np ⇥ Ns)I H: lista con las salidas de las capas ocultas (No elementos)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 5 / 27
Funciones de activacion
Lineal
f (x) = x+1
�1Logıstica (sigmoide)
f (x) = 11+e�x
+1
�1Tangente Hiperbolica
f (x) = tanh(x)+1
�1
Lineal rectificada (ReLU)
f (x) =
(0, x < 0x, x � 0
+1
�1Softmax
oi =ezi
MX
k=1
ezk
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 6 / 27
Funciones en Python (entrenamiento MLPs)
Entrenamiento de MLPs con distinto numero de capas ocultas(W,paso,coste,dWm)=entrena mlp(x,y,W,Nepoch)
I x: patrones de entrada (Np ⇥ Ne)I y: etiquetas de salida (Np ⇥ Nc)I W: lista con los pesos de la red (No + 1 elementos)I Nepoch: lista con el numero de iteraciones y el tamano del mini-batch
F Nepoch=[Niter,Nbatch]
Parametros adicionalesI fCoste: funcion de coste a minimizar (’mmse’, ’entropia’, ’wmmse’)I optimizador: metodo de optimizacion (’gradiente’, ’momento’)I tAct: tipo de funciones de activacion de las capas de la redI pDO: probabilidad de Drop-Out de la entrada y capas ocultas (lista No+1 el.)I paso: parametros del paso de adaptacion
F Gradiente: paso=[mu,muCrec,muDec]F Momento: paso=[mu,momento]
I flagEvo: True para que se obtenga el coste cada iteracion
Nc : numero de clases para un problema de clasificacion (ONE-HOT ENCODING)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 7 / 27
Funciones en Python (entrenamiento AE)
Funciones para el entrenamiento de autocodificadores (AE)(we,wd,coste,mu)=entrena AE(x,we,wd,Nepoch,tAct,mu)Entrenamiento de un autocodificador(we,wd,coste,mu)=entrena AEtied(x,we,wd,Nepoch,tAct,mu)Entrenamiento de un autocodificador con pesos “atados”(we,wd,coste,mu)=entrena DAE(x,we,wd,Nepoch,tAct,mu,pRuido)Entrenamiento de un autocodificador con ruido(we,wd,coste,mu)=entrena DAEtied(x,we,wd,Nepoch,tAct,mu,pRuido)Entrenamiento de un autocodificador con ruido y pesos “atados”
I we: pesos del codificador (Ne+1 ⇥ Nn)I wd: pesos del decodificador (Nn+1 ⇥ Ne)I pRuido: probabilidad de ruido (de poner una entrada a cero)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 8 / 27
Perceptron multicapa
(MLP: Multi-Layer Perceptron)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 9 / 27
Red neuronal no profunda: 1 capa oculta (M-ario)
...
......
......
......
......
......
......
......
x(0) x(1) x(2)
Entrada CO-1 CS
o1
o2
o3
o4
o5
oM
y
maximo
y = Ci
si oi > oj 8j 6= i
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 10 / 27
Red profunda: red neuronal con L capas ocultas (M-ario)
...
......
...... ...
...
......
......
......
......
......
......
......
x(0) x(1) x(2) x(L�1) x(L) x(L+1)
EntradaCO-1 CO-2 CO-(L � 1) CO-L CSo1
o2
o3
o4
o5
oM
y
maximo
y = Ci
si oi > oj 8j 6= i
...
· · ·
· · ·
· · ·
· · ·
· · ·
· · ·
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 11 / 27
Autocodificadores Apilados
(SDAs: Stacked Denoising Autoencoders)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 12 / 27
Autocodificadores (“autoencoders”)
...
......
......
x x(k) x
CO-k CS⇤
El entrenamiento de una capa oculta serealiza para obtener una proyeccion de suentrada sin perdida de informacion
I Entrada: x = x(k�1)
I Salida deseada: x = x(k�1)
Denoising autoencodersI Se incluye ruido en la entrada para hacer la
proyeccion robusta a perturbaciones sobre laentrada (y para evitar soluciones triviales)
F Entrada: x = x(k�1) + nF Salida deseada: x = x(k�1)
La capa de salida se descartaI Se usa como mecanısmo para evitar la perdida
de informacion, al garantizar que la proyeccionobtenida es reversible
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 13 / 27
Construccion de red profunda con autocodificadores
x
AE1
xAE1
D1
x xAE1
AE2
xAE2
D2
xAE1
xAE2
AE3
xAE3
D3
xAE2 xAE3
COCS
y
x
AE1
xAE1
AE2
xAE2
AE3
xAE3
COCS
y
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 14 / 27
Redes profundas con Drop-Out
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 15 / 27
x1
x2
x3
x4
x5
o1
o2
o3
o4
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 16 / 27
x1
x2
x3
x4
x5
o1
o2
o3
o4
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 17 / 27
x1
x2
x3
x4
x5
o1
o2
o3
o4
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 18 / 27
x1
x2
x3
x4
x5
o1
o2
o3
o4
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 19 / 27
x1
x2
x3
x4
x5
o1
o2
o3
o4
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 20 / 27
x1
x2
x3
x4
x5
o1
o2
o3
o4
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 21 / 27
Redes Convolucionales
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 22 / 27
Convolutional Neural Network (CNN)
x
CONV1 SUB1 CONV2 SUB2 MLP
y
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 23 / 27
Convolucion (con “padding”)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 24 / 27
Max-Pooling
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 25 / 27
Resultados (Aproximados)
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 26 / 27
Resultados aproximados esperables
Resolucion 10 ⇥ 10 (2.000 patrones de entrenamiento)I Red neuronal de 1 capa oculta: ⇡ 87 %I Red neuronal de 4 capas ocultas (tanh): ⇡ 86 %I Red neuronal profunda con autocodificadores: ⇡ 88,5 %I Red neuronal profunda (relu) con Dropout: ⇡ 89,75 %I Red neuronal profunda (relu) con Dropout + BN: ⇡ 90,5 %I Red CNN: ⇡ 91,5 %
Resolucion 28 ⇥ 28I Red neuronal de 1 capa oculta: ⇡ 92 %I Red neuronal profunda con autocodificadores: ⇡ 98 %I Red neuronal profunda con Dropout: ⇡ 98,25 %I Red CNN: ⇡ 99 %I Resultados detallados (a lo largo del tiempo)
F http://yann.lecun.com/exdb/mnist/
Marcelino Lazaro, 2020 Maquinas Discriminativas Profundas (LAB) 27 / 27