Está en la página 1de 8

[REDES NEURONALES CONVOLUCIONALES] Dr.

Erik Zamora

Enfocado: a enseñar los principios básicos y el estado del arte


Basado en
Deep Learning Tutorial, Computer Science Department, Stanford University http://ufldl.stanford.edu/tutorial/
Yann LeCun et al. "Convolutional Networks and Applications in Vision" 2010.
CS231n: Convolutional Neural Networks for Visual Recognition http://cs231n.stanford.edu/

Eje Conceptual  Aprendizaje


 ¿Para qué sirve? o Descenso por gradiente estocástico
 Arquitectura o Estrategias adicionales
o Convolución o Retro-propagación
o No-linealidades o Función Objetivo
o Agrupamiento (Pooling)  Librerías
 Demostración en Matlab
 Tarea

¿Para qué sirve?

Red Neuronal Convolucional: Esta red es diseñada especialmente para procesar datos estructurados en 2D como imágenes o
señales de voz presentadas en espectrogramas. Sin embargo, se pueden adaptar para procesar datos en arreglos multidimensionales
de 1D, 3D o más. Su principal ventaja es que tiene menos parámetros a entrenar que una red multicapa con conexión total del
mismo número de capas ocultas, por lo que su entrenamiento es más rápido. Además, presenta invarianza a la traslación de los
patrones a identificar.

Aplicaciones comerciales:
 LeNet: Lectura de cheques automático usado en U.SA. y Europa en los 90s en un DSP por AT&T (video http://ow.ly/SCpir
LeCun 98, “Gradient-based learning…”)
 Reconocimiento de números y letras manuscritas incluyendo caracteres arábigos y chinos por Microsoft (Abdulkader 06,
Chellapilla & Simardvideos 06, http://ow.ly/SCtEX, http://ow.ly/SCri0 )
 Detección y borrado automático de rostros y placas vehiculares para protección de la privacidad en Google Street View
(Frome et al. 09, “Large-scale Privacy Protection…”)
 Identificación del género y la edad de los usuarios de máquinas expendedoras por la empresa NEC Labs en Japón
(http://ow.ly/SCKhe)
 Detección y seguimiento de clientes en supermercados por NEC Labs (Fan et al. 10, Human Tracking using…” video
http://ow.ly/SFqFs )
 Detección de intrusos y ladrones por la empresa AgilityVideo (http://www.agilityvideo.com/)
Aplicaciones experimentales:
 Detección de rostros con record en velocidad y precisión (Nasse et al. 09 “Face Detection using GPU…”)
 Identificación de expresiones faciales (video http://ow.ly/SCMyB Kahou et al. 13, “Combining modality…”)
 Evasión de obstáculos para robots móviles usando visión (video http://ow.ly/SCN0S Hassell, LeCun et al. 09)
 Detección de obstáculos a gran distancia (Hassell, LeCun et al. 09)
 Segmentación de imágenes biológicas (Ning 08 “Toward automatic phenotyping…” video http://ow.ly/SFqxg )
 Restauración de imágenes (eliminación del ruido) (Jain et al. 08 “Natural image denoising…”)
 Reconstrucción de circuitos neuronales a partir de imágenes transversales del cerebro con espesor nanométrico (Jain et al..
2007 “Supervised learning of image restoration …”)
 Y cuando combinan las redes neuronales con algoritmos evolutivos, una computadora puede aprender a jugar Mario Bros
(video http://ow.ly/SDKAp Stanley y Miikkulainen “Evolving Neural Networks.”)
 Robot que aprende a hacer tareas (video http://ow.ly/SP3y2 Levine et al. 2015 “End-to-End Training…”)
1
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

Arquitectura

Una red neuronal convolucional es una red multicapa


que tiene capas convolucionales y de submuestreo
alternadas, y al final tiene capas de conexión total como
una red Perceptron multicapa. La entrada de una capa
convolucional es una imagen 𝑚 × 𝑚 × 𝑟 donde 𝑚 es
tanto la altura como el ancho de la imagen y 𝑟 es
número de canales (en RGB son 3). Las capas convolucionales tienen k filtros (o
kernels) cuyas dimensiones son 𝑛 × 𝑛 × 𝑞 donde 𝑛 y 𝑞 son elegidas por el
diseñador y pueden variar de filtro en filtro. Cada filtro genera mediante
convolución un mapa de rasgos (feature maps) de tamaño 𝑚 − 𝑛 + 1. Después
cada mapa es sub-muestrada con la operación “mean pooling” o “max pooling”
sobre regiones contiguas de tamaño 𝑝 × 𝑝 donde 𝑝 puede tomar valores desde 2
para imágenes pequeñas (e.g. MNIST) y comúnmente no más de 5 para imágenes
grandes. Antes o después del submuestreo, se aplica una función de activación
sigmoidal más un sesgo para cada mapa de rasgos. (Figura: las unidades de distintos
colores son mapas de rasgos distintos).

Convolución. Problema: En el reconocimiento de imágenes, la conectividad total en las redes Perceptron multicapa es una
limitación cuando el tamaño de las imágenes crece. Esta red funciona bien para imágenes pequeñas e.g. 20x20 pixeles, pero con
imágenes más grandes e.g. 100x100 pixeles, el número de parámetros a entrenar crece demasiado haciendo lento el aprendizaje.
Por lo tanto, es necesario proponer soluciones para agilizar el aprendizaje. Algunas posibles
soluciones son:
 Redes con conexiones locales (no total). Permitir que las unidades ocultas solo
estén conectadas a una región contigua de los pixeles de entrada.
 Procesamiento en paralelo (FPGA o GPU)
 Redes con Convolución (en seguida las describimos)
La convolución es una operación de productos y sumas entre la imagen de entrada y un
filtro (o kernel) que genera un mapa de rasgos. Los rasgos extraídos corresponden a cada
posible ubicación del filtro en la imagen original. La ventaja es que el mismo filtro (=
neurona) sirve para extraer el mismo rasgo en cualquier parte de la imagen. Esto reduce el número de conexiones y el número de
parámetros a entrenar en comparación con una red multicapa de conexión total. Si la imagen es 𝑛 × 𝑚 y hay 𝑘 filtros de 𝑎 × 𝑏 en
una capa convolucional, entonces se generan 𝑘 mapas de rasgos que en total forman un arreglo de 𝑘 × (𝑛 − 𝑎 + 1) × (𝑚 − 𝑏 + 1)
rasgos. Cada rasgo está dado por 𝑓 = 𝜎(𝑊𝑥 + 𝑏).
Convolución completa: se extiende la imagen para ubicar el filtro en todos sus pixeles.
Convolución valida: se convoluciona solo donde cabe el filtro dentro de la imagen.
2
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

No-linealidades. Después de convolución, se aplica a los mapas de rasgos funciones de activación no lineales como:
1
 Sigmoide Logistica 𝑓(𝑥) = . Actualmente, se usa muy poco está función porque: 1) satura la salida y mata los
1+𝑒 −𝑥
gradientes en la retro-propagación, además, cuando los pesos tienen valores muy grandes pueden saturar las neuronas lo
que provoca que el aprendizaje sea malo; 2) no está centrada en cero lo que puede producir una dinámica de zig-zag
durante el aprendizaje.
 Sigmoide Hiperbolica 𝑓(𝑥) = tanh(𝑥). Da siempre mejores resultados que la sigmoide logística porque es centrada en
cero. Aunque sigue presentando el problema de la saturación y desvanecimiento del gradiente.
 Sigmoide rectificada 𝑓(𝑥) = abs (g i ∙ tanh(𝑥)) donde 𝑔𝑖 es un parámetro ajustable durante el aprendizaje. Se usa para el
reconocimiento de imágenes naturales y suele ir antes de una normalización de contraste local. Esta normalización forza la
competencia entre rasgos adyacentes de un mapa y entre rasgos con la misma localización espacial.
 ReLU (Rectified linear unit) 𝑓(𝑥) = max(0, 𝑥) es muy popular actualmente, y en especial, en las redes profundas porque
acelera el entrenamiento por un factor de 6 (Krizhevsky et al. 2012) comparado con las funciones sigmoide/tanh y evita el
problema del desvanecimiento de gradiente cuando hay muchas capas. Esto es debido a que es lineal y no hay saturación
en el sentido positivo de su dominio. Sin embargo, algunas neuronas pueden “morir” durante el entrenamiento. Si el
gradiente mueve los pesos tal que la neurona no se activa para ninguno de los ejemplos de entrenamiento, entonces el
gradiente siempre será cero para esa neurona y nunca se activará. A veces pueden morir hasta 40% de las neuronas si el
índice de aprendizaje es muy alto. Este problema se puede reducir con un ajuste adecuado de la tasa de aprendizaje o
usando algunas de las siguientes variaciones de esta función:
o Función Softplus 𝑓(𝑥) = ln(1 + 𝑒 𝑥 ) es una versión aproximada y continua de ReLU.
𝑥 𝑠𝑖 𝑥 > 0
o Leaky ReLUs 𝑓(𝑥) = { permiten tener un gradiente pequeño (no cero) cuando la neurona no está
0.01𝑥 𝑜𝑡𝑟𝑜
activa, usada en reconocimiento de voz.
o Noisy ReLUs 𝑓(𝑥) = max(0, 𝑥 + 𝑁(0, 𝜎(𝑥))) usadas en máquinas de Boltzmann restringidas
 Neurona Maxout max(𝑤1𝑇 𝑥 + 𝑏1 , 𝑤2𝑇 𝑥 + 𝑏2 ) (Goodfeloow et al. 2013). Es una generalización de las funciones ReLU y Leaky
ReLU que tiene las ventajas de ReLU (lineal, no saturación), pero sin el problema de la muerte de neuronas. Sin embargo,
puede aumentar el número de parámetros al doble.
 …Qué más?

¿Qué función debería usar? Use ReLU, elija una tasa de aprendizaje adecuada y monitoree la fracción de neuronas muertas. Si cree
podría tener mejores resultados, intente con Leaky ReLu o Maxout. Nunca use la sigmoide logística. Puede intentarlo con tanh, pero
espere peores resultados que con ReLU/Maxout.

Agrupamiento (pooling) Problema: Los mapas de rasgos ya generados podrían usarse para
clasificar las imágenes, pero demandaría aún mucho procesamiento y sería propenso al sobreajuste
(overfitting). Por ejemplo, si tuviéramos una imagen de 100 × 100 pixeles y 400 filtros de 8 × 8 en
una capa convolucional, entonces tendríamos 400 mapas con (100 − 8 + 1) × (100 − 8 + 1) =
8649 rasgos que en total serían 400 × 8649 = 3,429,600 rasgos utilizados para la clasificación. Lo
cual es demasiado grande, así que se desea reducir el total de rasgos. Algunas soluciones son:
 Sub-muestrear los mapas de rasgos
 Extraer algunas estadísticas de los mapas de rasgos (agrupamiento o pooling)

El agrupamiento extrae estadísticas como el promedio o el máximo de una región fija del mapa de rasgos. Esto reduce el número de
rasgos usados para la clasificación y reduce el problema del sobreajuste. Adicionalmente, si la región de agrupamiento es contigua,
entonces los rasgos agrupados presentaran cierta invarianza la traslación del patrón a reconocer. Es decir, el rasgo agrupado se
activará si el patrón a reconocer no se sale de la región de agrupamiento que le corresponde. Cabe mencionar el agrupamiento
divide el mapa de rasgos en regiones disjuntas (sin traslape). Por otro lado, varias capas de agrupamiento hacen que se pierda la
información de la localización del rasgo, provocando que por ejemplo se pueda reconocer rostros, pero no de quien pertenece.
3
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

Aprendizaje Supervisado (también hay versión no supervisada)

Descenso por gradiente estocástico. En principio, se puede usar cualquier método de optimización para entrenar las redes
convolucionales, pero se prefiere el método del descenso por gradiente estocástico. Este método calcula el gradiente de la función
objetivo 𝐽(𝜃) respecto a los parámetros 𝜃 = (𝑊, 𝑏) para un subconjunto de los ejemplos de entrenamiento (𝑥 (𝑖) , 𝑦 (𝑖) ) escogidos
aleatoriamente en cada iteración, de tal manera que los parámetros son ajustados por:
𝜃: = 𝜃 − 𝛼∇𝜃 𝐽(𝜃; 𝑥 (𝑖) , 𝑦 (𝑖) )
donde 𝛼 es el índice de aprendizaje, 𝑊 es la matriz de pesos sinápticos y 𝑏 es el vector de polarizaciones.

Estrategias adicionales (buenas prácticas). Al aplicar este método se suele seguir las siguientes estrategias:

1. Subconjuntos de ejemplos: se elige calcular el gradiente promedio a partir de un subconjunto de ejemplos en lugar de un
solo ejemplo porque: 1) se reduce la varianza en la actualización de los parámetros, llevando una convergencia más estable;
y 2) permite el uso de métodos numéricos altamente optimizados para procesar matrices. El tamaño del subconjunto
comúnmente es de 256 ejemplos, pero puede ser cambiado de aplicación en aplicación.

2. Aleatoriedad: Los ejemplos deben ser elegidos aleatoriamente para evitar introducir sesgo en el gradiente que provoque
una pobre convergencia hacia la optimalidad.

3. Adaptación del índice de aprendizaje: elegir un índice de aprendizaje y determinar su evolución adecuada puede ser algo
complicado. Algunas heurísticas que se siguen son:
a. Fijar el índice inicial tal que la convergencia en la(s) primera(s) época(s) sea estable y disminuir a la mitad su valor
conforme la convergencia avanza.
b. Cambiar el índice de aprendizaje tal que entre épocas la función de objetivo (error) cambie por debajo de cierta
cantidad umbral evaluándola con subconjunto de ejemplos.
𝑎
c. Cambiar el índice de aprendizaje mediante 𝜎 = donde a y b son parámetros para enfriar (disminuir) la
𝑏+𝑡
intensidad del aprendizaje conforme las iteraciones 𝑡 avanzan.

4. Momento: cuando la función objetivo tiene valles angostos y largos, el descenso por
gradiente puede oscilar entre las paredes del valle y converger muy lentamente hacia el
óptimo local (Las funciones objetivo de las redes profundas tienen esta forma cerca del
minimo local). En esta situación es conveniente usar la estrategia del momento, la cual
aumentará el tamaño del paso de búsqueda si el gradiente mantiene la misma dirección
entre iteraciones, y disminuirá el paso de búsqueda si el gradiente está cambiando de
dirección consistentemente. Esto acelerará la convergencia y suavizará los cambios de
dirección del gradiente. La actualización de los parámetros con momento es dada por:
𝑣: = 𝛾𝑣 + 𝛼∇𝜃 𝐽(𝜃; 𝑥 (𝑖) , 𝑦 (𝑖) )
𝜃: = 𝜃 − 𝑣
Donde 𝑣 es vector de velocidad de 𝜃 y 𝛾 ∈ (0,1] regula cuantas iteraciones de los gradientes previos son considerados para
la actualización de los parámetros. Generalmente, 𝛾 es fijado a 0.5 hasta que el aprendizaje inicial se estabiliza y entonces
se incrementa a 0.9 o más para aumentar el efecto del momento.

4
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

5. Pre-procesamiento. Con el fin de mejorar el aprendizaje, se suele usar tres formas para pre-procesar los datos de
entrenamiento:
a. Sustracción de la media. Se trata de quitar el valor medio de los datos y
dejarlo en el origen.
b. Normalización. Cada dimensión de los datos se transforma a una misma
escala. Hay dos formas: 1) dividiendo los datos entre sus desviaciones
estándar; y 2) dividiendo por sus máximos y mínimos para dejarlos entre -1 y
1.
c. PCA y Blanqueado. El análisis de componentes principales (PCA) reduce las
dimensiones de los datos, quedándose con las dimensiones con mayor
varianza. El blanqueado normaliza la escala dividiendo cada dimensión de los datos en su base propia por su valor
propio. El resultado es que si los datos se distribuían como una gaussiana multivariable, entonces los datos
blanqueados serán gaussianos con media cero y con matriz de covarianza igual a la identidad.
Las trasformaciones PCA y blanqueado son poco usadas en las redes convolucionales. Sin embargo, centrar y normalizar los
datos es muy importante porque mejoran el aprendizaje en las redes convolucionales.
6. Inicialización
a. Pesos. Nunca inicialice todos los pesos al mismo valor, especialmente, a cero; porque el gradiente sería el mismo,
actualizando siempre los pesos al mismo valor. En su lugar, inicialice los pesos en valores pequeños cercanos a cero
de manera aleatoria dentro de una ventada [−𝜀, 𝜀],
𝑤𝑖 = 𝜀(2rand(𝑛𝑖 ) − 1)
Donde rand genera números aleatorios con dist. uniforme para 𝑛𝑖 entradas en la neurona 𝑖. Recientemente (He et
al. 2015 “Delving Deep into Rectifiers…”), para redes profundas, se ha mostrado que la convergencia se puede
mejorar siguiendo una distribución gaussiana con media cero y una varianza normalizada con el número de
entradas:
𝑤𝑖 = randn(𝑛𝑖 )√2/𝑛𝑖
b. Polarizaciones. Aquí es posible inicializar todas las polarizaciones igual a cero, ya que la asimetría de gradientes la
proporcionan los pesos aleatorios. Para las redes con ReLUs, algunas personas prefieren usar un pequeña
constante positiva e.g. 0.01 para todas las polarizaciones y así asegurar que las unidades ReLUs disparen al inicio.
Sin embargo, no es claro si esto mejora la convergencia o no.
7. Regularización. Son una serie de métodos para reducir el sobreajuste del modelo a los datos durante el aprendizaje.
1
a. Regularización L2. Penaliza la magnitud de todos los parámetros mediante añadir 𝜆𝑤 2 en la función objetivo,
2
donde 𝜆 es la intensidad de la regularización. Tiene el efecto de preferir pesos distribuidos más difusamente.
b. Regularización L1. Hace lo mismo que la anterior, pero añadiendo 𝜆|𝑤|.
c. Norma máxima. Se limita a la norma de los vectores de pesos a tener un
valor máximo ‖𝑤 ⃗⃗ ‖2 < 𝑐. Los valore típicos para 𝑐 son del orden de 3 o 4.
Una ventaja es que se evita que el entrenamiento se vuelva inestable
tomando parámetros cada vez más grandes.
d. Dropout (Apagado Aleatorio). Este altamente efectivo, simple y fue
recientemente introducido por Srivastava et al. 2014 “Dropout: a simple
way…” para complementar los métodos anteriores. Durante el entrenamiento, algunas neuronas son mantenidas
activas con una probabilidad 𝑝 y las otras son apagadas a cero. En consecuencia, solo los pesos de las neuronas
activas son actualizados, acelerando el aprendizaje y reduciendo el sobreajuste. Durante la evaluación de la red,
no aplica el apagado aleatorio. Actualmente, hay mucha investigación acerca de este método y sus variantes.
e. Otros métodos aleatorios. En la misma dirección que el dropout, se encuentra: 1)DropConnect, donde un
conjunto aleatorio de pesos son puestos a cero durante el paso adelante del entrenamiento, 2) agrupamiento
(pooling) estocástico, 3) agrupamiento fraccional, o 4) aumento de los datos.

5
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

f. Regularización de polarizaciones. No hay necesidad de regularizar las polarizaciones porque no son factores
multiplicativos, solo son términos aditivos. Sin embargo, si se hace no empeora el desempeño del aprendizaje; así
algunos regularizan las polarizaciones.
En la práctica, lo más usado es la regularización L2 cuya intensidad es ajustada con los datos de validación. También es
común combinar esto con el dropout aplicado después de todas las capas (el valor p=0.5 es usado comúnmente, pero
también puede ser ajustado con los datos de validación).

Retro-propagación. El cálculo del gradiente requiere retro-propagar el error de la última capa hacia las capas anteriores. Para
una capa 𝑙 con conexión completa con la capa 𝑙 + 1, el error 𝛿 𝑙 para la capa 𝑙 es retropropagado por

𝛿 𝑙 = ((𝑊 𝑙 )𝑇 𝛿 𝑙+1 ) ∙ 𝑓 ′ (𝑧 𝑙 )
y los gradientes son
∇𝑊 𝑙 𝐽(𝑊, 𝑏; 𝑥, 𝑦) = 𝛿 𝑙+1 (𝑎𝑙 )𝑇
∇𝑏𝑙 𝐽(𝑊, 𝑏; 𝑥, 𝑦) = 𝛿 𝑙+1

Donde 𝑓 ′ (𝑧𝑘𝑙 ) es la derivada de las funciones de activación y 𝑎𝑙 es la salida de capa (𝑎1 es la imagen de entrada).

Si la capa 𝑙 es una capa convolucional y de agrupamiento, el error es retro-propagado por

𝑇
𝛿𝑘𝑙 = upsample ((𝑊𝑘𝑙 ) 𝛿𝑘𝑙+1 ) ∙ 𝑓 ′ (𝑧𝑘𝑙 )

donde 𝑘 indica el filtro. La función upsample debe calcular el error a través de la capa de agrupamiento para cada unidad que entra
en ella. Para el agrupamiento por promedio, upsample distribuye uniformemente el error de una única unidad de agrupamiento
entre las unidades que la alimentan de la capa anterior. Para el agrupamiento por máximo, la unidad que fue escogida como
máximo de la capa anterior recibe todo el error.

Finalmente, los gradientes respecto los mapas de rasgos están dados por
𝑚
𝑇
∇𝑊 𝑙 𝐽(𝑊, 𝑏; 𝑥, 𝑦) = ∑(𝑎𝑖𝑙 ) ∗ rot90(𝛿𝑘𝑙+1 , 2 )
𝑘
𝑖=1

∇𝑏𝑙 𝐽(𝑊, 𝑏; 𝑥, 𝑦) = ∑(𝛿𝑘𝑙+1 )𝑎,𝑏


𝑘
𝑎,𝑏

Donde la operación 𝑎𝑖𝑙 ∗ 𝛿𝑘𝑙+1 es la convolución valida entre la entrada 𝑖 de la capa 𝑙 y el error del filtro 𝑘. La función rot90(𝐴, 𝑛)
rota la matriz A 90 grados 𝑛 veces en el sentido de las manecillas del reloj.

Función Objetivo. La función objetivo se puede dividir en dos partes: la regularización que penaliza la complejidad del modelo y
el error de predicción que penaliza el error entre la predicción y la respuesta que debería ser. El error de predicción 𝐿 es el
1
promedio de los errores 𝐿𝑖 de cada ejemplo individual del entrenamiento, esto es, 𝐿 = ∑𝑖 𝐿𝑖 donde 𝑁 es número total de
𝑁
ejemplos. Usted debe elegir una forma adecuada para 𝐿𝑖 dependiendo del tipo de problema que este resolviendo. En la siguiente
tabla lo resumimos.

Nombre Expresión Matemática ¿Para qué sirve? Descripción


Norma L2 𝐿𝑖 = ‖𝑓 − 𝑦𝑖 ‖22 Regresión Acumula el error cuando la diferencia
Norma L1 𝐿𝑖 = ‖𝑓 − 𝑦𝑖 ‖1 𝑓 − 𝑦𝑖 es distinta a cero.

6
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

SVM 𝐿𝑖 = ∑ max(0, 𝑓𝑗 − 𝑓𝑦𝑖 + 1) Clasificación Acumula los errores cuando la diferencia


Multiclase excluyente entre la clase correcta y las clases
𝑗≠𝑦𝑖
incorrectas <1. Las salidas son
consideradas como puntaje para cada
clase.
Clasificador 𝑒 𝑓𝑦𝑖 Clasificación Penaliza la diferencia entre la
Softmax 𝐿𝑖 = − log ( 𝑓𝑗
) excluyente distribución verdadera y la distribución
∑𝑗 𝑒
(entropía estimada por las salidas. Las salidas son
cruzada) probabilidades de que la entrada
pertenezca a las clases (si se
normalizan).
Softmax (Mikolov et al. 2013) Clasificación de Descompone las etiquetas en un árbol,
Jerárquico un gran número representándolas por camino en un
de clases. árbol
𝐿𝑖 = ∑ max(0, 1 − 𝑦𝑖𝑗 𝑓𝑗 ) Clasificación no Donde 𝑦𝑖𝑗 ∈ {+1, −1}. El error se
𝑗
excluyente acumula cuando un ejemplo positivo
tiene una puntuación menor a +1 o
cuando un ejemplo negativo tiene una
puntuación mayor a -1.
Regresión 𝐿𝑖 = ∑ 𝑦𝑖𝑗 log (𝜎(𝑓𝑗 )) + (1 − 𝑦𝑖𝑗 ) log (1 − 𝜎(𝑓𝑗 )) Clasificación no Se usa un clasificador de regresión
logística 𝑗
excluyente logística para cada clase de manera
binaria independiente.
Donde 𝑖 es el ejemplo y 𝑗 es la dimensión de la predicción.

Nota: En la práctica, es más difícil de optimizar un problema de regresión que uno de clasificación. Si está resolviendo una regresión,
primero piense si es realmente es necesario interpretarlo como problema de regresión. Quizá sea mejor discretizar sus salidas en
grupos y resolverlo como un problema de clasificación excluyente.

7
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

Librerías
 Caffe (C++ con interfaces para Matlab y Python) Es la más popular http://caffe.berkeleyvision.org/
 Torch (C y Lua) usado por Facebook Research, Google Deepmind y Twitter http://torch.ch/docs/cvpr15.html
 Theano (Python) http://deeplearning.net/software/theano/
 MatConvnet (Matlab) http://www.vlfeat.org/matconvnet/
 Cuda-convnet (CUDA) https://code.google.com/p/cuda-convnet2/
 Deepleaning4j (Java) http://deeplearning4j.org/
 A Modern Computer Vision Library - ConvNet: Deep Convolutional Networks http://libccv.org/doc/doc-convnet/

Deep Learning Libraries by Language


http://www.teglor.com/b/deep-learning-libraries-language-cm569/

Demostración en Matlab

……

T2: Redes Neuronales Convolucionales


Fecha de Entrega: V011215

Realice el ejercicio propuesto en el tutorial http://ufldl.stanford.edu/tutorial/supervised/ExerciseConvolutionAndPooling/. El


ejercicio pide completar el código solo en los archivos cnnConvolve.m and cnnPool.m. Para verificar si lo ha hecho bien, deberá
correr el código cnnExercise.m. Si lo completo bien, verá el siguiente mensaje
Congratulations! Your convolution code passed the test.
Congratulations! Your pooling code passed the test.

Envié en un único archivo ZIP los dos arcihvos cnnConvolve.m and cnnPool.m al correo ezamora1981@gmail.com antes o durante de
la fecha de entrega.

Nota: Tiene que bajar el código completo del tutorial desde https://github.com/amaas/stanford_dl_ex; y bajar la base de datos
MNIST: train-images.idx3-ubyte desde http://yann.lecun.com/exdb/mnist/ para guardarla en la carpeta “…/stanford_dl_ex-
master/common/”.

8
“La Tecnología y la Ciencia en beneficio de los Mexicanos”
“Por nuestra Independencia Intelectual”

También podría gustarte