Introducción a Deep Learning
Introducción a Deep Learning
Profesor: Enzo Ferrante
eferrante@[Link]
Resumen y Objetivos del Curso
Durante los últimas décadas se ha desencadenado un proceso masivo de producción de datos:
imágenes capturadas con teléfonos celulares, información de geolocalización obtenida por GPS,
señales de audio, estudios médicos, perfiles de compra en línea, entre muchos otros. Interpretar
dichos datos en la actualidad es posible gracias al desarrollo de métodos de aprendizaje
automático (o “machine learning”). Un tipo particular de método de aprendizaje automático
conocido como ‘aprendizaje profundo’ (o ‘deep learning’ en inglés), ha revolucionado el mundo
de las ciencias de la computación en los últimos años y desplazado las fronteras del estado del
arte en problemas tan diversos como la detección de objetos en imágenes o la interpretación
automática del habla.
El objetivo de este curso es brindar a los estudiantes los conceptos teóricos fundamentales y las
herramientas prácticas necesarias para construir sus propios modelos profundos para el análisis
de datos. Si bien el curso abordará principalmente la construcción de modelos para análisis de
imágenes (dado que este tipo de datos constituye el ejemplo prototípico que ilustra las bondades
de deep learning en comparación a los enfoques clásicos de machine learning) se estudiarán
aplicaciones de dichos modelos en el contexto empresarial y de toma de decisiones.
Breve descripción del temario para el curso
Bloque 1: Introducción
● Introducción y contexto histórico.
● Redes neuronales feedforward.
○ Perceptrón simple.
○ Perceptrón multicapa.
○ Funciones de pérdida.
Bloque 2: ¿Cómo entrenar una red neuronal?
○ Método del gradiente descendiente. Variantes del método: adaptativo, con
momento y por mini-batches.
○ Derivación automática y algoritmo de retropropagación. Introducción a
Tensorflow.
○ Métodos de regularización. Dropout.
○ Normalización de Batches. Métodos de inicialización.
Bloque 3: Redes Neuronales Convolucionales
● Redes neuronales inspiradas en el sistema visual.
○ Contexto histórico.
○ Introducción al análisis de imágenes.
● Redes neuronales convolucionales (RNC).
○ Concepto de convolución.
○ Operaciones de pooling.
● Arquitecturas estándar de RNC para clasificación.
○ LeNet
○ AlexNet
○ VGG Net
● Arquitecturas estándar de RNC para segmentación.
○ Redes totalmente convolucionales: FCN, U-Net.
○ Medidas para evaluar la calidad de los algoritmos de segmentación.
● Aproximaciones clásicas al análisis de imágenes y su diferencia con los métodos basados
en deep learning.
Bloque 4: Tópicos Avanzados de Deep Learning
● Transferencia de aprendizaje y adaptación de dominio
● Modelos generativos adversarios
● Auto-codificadores y aprendizaje de representaciones
● Interpretando las predicciones de una red convolucional: Mapas de activación de clases
Evaluación
La nota final estará compuesta por un trabajo práctico integrador (60%) y un examen final
escrito (40%). Además. será requisito para la aprobación de la cursada la realización de los
prácticos obligatorios que se abordarán durante las clases. La aprobación de la materia requiere
la aprobación del examen final individual con un mínimo de 60/100 puntos.
Prácticos obligatorios
Los trabajos prácticos a realizar durante la cursada (en grupos de dos integrantes) serán en
lenguaje Python, utilizando Jupyter Notebooks con secciones de código faltantes a completar por
los alumnos, y las bibliotecas TensorFlow y P. Para el entrenamiento de modelos profundos que
requieran GPU, se utilizarán los notebooks gratuitos de Google Golab, que permiten ejecución
en GPU en la nube.
Examen final
El examen final escrito tendrá como objetivo evaluar la comprensión de las clases teóricas
dictadas.
Trabajo práctico integrador
Finalmente, se solicitará la realización de un trabajo práctico integrador (que podrá ser individual
o en grupos de dos integrantes) a definir durante la cursada, con el objetivo de que los
estudiantes puedan abordar temáticas de interés en su campo profesional particular. Se solicitará
un informe corto con la descripción del modelo desarrollado y el análisis de los resultados
obtenidos. Para aquellos alumnos que no cuenten con un tema de interés particular, existirá un
trabajo práctico integrador sugerido.
Pre-requisitos
● Conocimientos de programación (preferentemente Python) y algoritmos.
● Conocimiento básicos de álgebra lineal y operaciones matriciales.
● Conocimientos básicos de análisis matemático.
● Haber realizado los cursos "Fundamentos de Algoritmos" y "Machine Learning".
Bibliografía
Recomendada:
- Deep Learning. Ian Goodfellow, Yoshua Bengio and Aaron Courville. MIT Press. 2016
- Convolutional Neural Networks for Visual Recognition. Stanford University. Apuntes
del curso CS231 de la Universidad de Stanford. Disponibles en [Link]
- Deep learning. LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. Nature 521.7553
(2015): 436.
Complementaria:
- Pattern recognition and machine learning. Bishop, C. M. (2006). Springer.
- Neural Networks and Deep Learning. Michael Nielsen. Libro disponible online en
[Link]