6 puntos por GN⁺ 2023-11-20 | 2 comentarios | Compartir por WhatsApp
  • Materiales de clases abiertas de deep learning organizados para el curso 14x050 de la Universidad de Ginebra, donde se pueden ver en un solo lugar las diapositivas, handouts y videos grabados de François Fleuret
  • Basado en ejemplos de PyTorch, cubre un rango amplio para principiantes, desde operaciones con tensores, diferenciación automática y descenso por gradiente hasta modelos generativos, recurrentes y de atención
  • El archivo PDF completo tiene una escala de 1107 diapositivas, y los subtítulos de los screencasts se ofrecen como un archivo ZIP generado automáticamente con OpenAI Whisper
  • También se incluyen Practical 1~6, código de soluciones y un Python prologue común, para usar de inmediato en prácticas de carga y preprocesamiento de MNIST/CIFAR10
  • Requiere álgebra lineal, cálculo, Python, probabilidad y estadística, optimización, algoritmos y fundamentos de procesamiento de señales, y el material se distribuye bajo CC BY-NC-SA 4.0

Resumen del curso

  • Deep Learning Course es una página que reúne las diapositivas y materiales grabados del curso 14x050 de deep learning de la Universidad de Ginebra impartido por François Fleuret
  • Está compuesto como un curso de introducción al deep learning que incluye ejemplos con el framework PyTorch
  • El alcance del curso sigue estos ejes
    • objetivos del machine learning y tareas principales
    • operaciones con tensores
    • diferenciación automática y descenso por gradiente
    • técnicas específicas de deep learning
    • modelos generativos, recurrentes y de atención
  • También ofrece por separado "The Little Book of Deep Learning"
    • Es una breve introducción al deep learning en formato móvil para lectores con formación STEM
  • Este curso se desarrolló por primera vez en 2018 en Idiap Research Institute y se dictó hasta 2022 en École Polytechnique Fédérale de Lausanne como EE-559

Formato del material y descargas

  • El PDF de diapositivas para clase usa orientación horizontal y overlays pensados para la presentación
  • El PDF de handouts se compila en orientación vertical, incluye notas adicionales y no usa efectos de overlay
  • Los screencasts pueden verse por streaming en el navegador o descargarse como archivos mp4
  • El archivo PDF completo puede descargarse en los siguientes archivos
  • Los subtítulos de los screencasts fueron generados automáticamente con Whisper de OpenAI, y el archivo dlc-video-subtitles.zip pesa 502.1Kb

Flujo de las 13 unidades

  • Todo el material del curso está compuesto por 13 grandes unidades, y en cada una se indican la cantidad de diapositivas y la duración del video
  • La parte inicial se enfoca en establecer los conceptos básicos de deep learning y machine learning
    • Introduction: de redes neuronales a deep learning, aplicaciones actuales y casos de éxito, fundamentos de tensores y regresión lineal, tensores de alta dimensión, estructura interna de los tensores
    • Machine learning fundamentals: pérdida y riesgo, sobreajuste y subajuste, dilema sesgo-varianza, protocolos de evaluación, clustering y embeddings
    • Multi-layer perceptron and back-propagation: perceptrón, perspectiva probabilística de clasificadores lineales, separabilidad lineal, MLP, descenso por gradiente, backpropagation
  • La parte intermedia pasa al uso de PyTorch y a capas y técnicas de entrenamiento para deep learning
    • Graphs of operators, autograd, and convolutional layers: redes DAG, Autograd, módulos de PyTorch y procesamiento por lotes, convolución, pooling, escritura de módulos PyTorch
    • Initialization and optimization: pérdida de entropía cruzada, descenso por gradiente estocástico, optimizer de PyTorch, penalización L2/L1, inicialización de parámetros, selección de arquitectura y protocolos de entrenamiento, escritura de funciones de Autograd
    • Going deeper: ventajas de la profundidad, Rectifier, Dropout, Batch Normalization, Residual Network, uso de GPU
  • La parte final se expande a modelos generativos, visión por computadora, análisis interno de modelos y modelos de secuencia
    • Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
      • El screencast de VAE no está actualizado, por lo que hay que revisar las diapositivas
    • Computer vision: tareas de visión por computadora, redes de clasificación de imágenes, redes de detección de objetos, redes de segmentación semántica, DataLoader y neuro-surgery
    • Under the hood: visualización de parámetros, visualización de activaciones, visualización del procesamiento desde la entrada, optimización de entrada
    • Autoregression and Normalizing Flows: autorregresión, Causal convolution, Non-volume preserving network
    • Generative Adversarial Networks: GAN, Wasserstein GAN, Conditional GAN y traducción de imágenes, persistencia del modelo y checkpoints
    • Recurrent models and NLP: RNN, LSTM y GRU, embeddings de palabras y traducción
    • Attention models: atención para memoria y traducción de secuencias, mecanismo de atención, Transformer Network
      • El screencast de la unidad de atención no está actualizado, por lo que hay que revisar las diapositivas

Material práctico y Python prologue

  • Las prácticas se ofrecen como Practical 1~6, y cada PDF está enlazado junto con su código de solución
  • El Python prologue para las prácticas se ofrece como dlc_practical_prologue.py
  • El prologue procesa argumentos de línea de comandos
    • --full: usar el dataset completo
    • --tiny: usar un dataset muy pequeño para verificaciones rápidas
    • --seed SEED: especificar la semilla aleatoria; si es menor que 0, no se aplica seeding
    • --cifar: usar el dataset CIFAR en lugar de MNIST
    • --data_dir DATA_DIR: especificar la ubicación de los datos de PyTorch; el valor predeterminado es $PYTORCH_DATA_DIR o ./data
  • La función load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True) descarga los datos si hace falta y, si flatten es verdadero, convierte las imágenes en vectores unidimensionales
  • Los valores devueltos son cuatro tensores: train_data, train_target, test_data, test_target
  • Si cifar=True, usa CIFAR10; si es False, usa MNIST; si es None, sigue el argumento --cifar
  • Si one_hot_labels=True, convierte los targets en un torch.Tensor 2D con una columna por clase, pone 1 solo en la posición correcta y -1 en el resto
  • Si normalize=True, normaliza los tensores de datos con base en la media y varianza de los datos de entrenamiento
  • Si flatten=True, los datos quedan como un tensor 2D N × D; si es falso, quedan como un tensor 4D N × C × H × W
  • El ejemplo predeterminado usa MNIST y, si no se incluye --full, se reduce a 1000 muestras de entrenamiento y 1000 de prueba, con tamaño de entrada torch.Size([1000, 784])

Conocimientos previos y documentación de referencia

  • Los conocimientos previos incluyen las siguientes áreas
    • álgebra lineal: vectores, matrices, espacio euclidiano
    • cálculo: Jacobian, Hessian, Chain rule
    • programación en Python
    • fundamentos de probabilidad y estadística: distribuciones discretas y continuas, ley de los grandes números, probabilidad condicional, Bayes, PCA
    • fundamentos de optimización: concepto de mínimo, descenso por gradiente
    • fundamentos de algoritmos: costo computacional
    • fundamentos de procesamiento de señales: Fourier transform, wavelet
  • Como documentación de referencia, se pueden consultar los documentos de Python, Jupyter notebook y PyTorch

Licencia de uso

  • Los materiales propios de la página se distribuyen bajo la licencia Creative Commons BY-NC-SA 4.0 International License
  • Se especifica que se permite su uso para fines de educación académica formal, pero con la condición de no usarlos en libros, YouTube con mucha publicidad u otros modelos de monetización

2 comentarios

 
bigtallee 2023-11-20

Es una lástima que las clases no tengan subtítulos...

 
GN⁺ 2023-11-20
Opiniones en Hacker News
  • También vale la pena ver el canal de YouTube de Stanford. Subieron una serie completa de clases de machine learning con 19 videos
    https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
    Si entras al canal, hay bastantes clases de ciencias de la computación subidas, y la calidad también es bastante buena

    • Este curso de Stanford parece un programa bastante avanzado y exigente
  • Se publicaron muchos buenos recursos, pero parece que en la lista falta Understanding Deep Learning
    Creo que Simon J.D. Prince hizo un trabajo realmente impresionante con este libro. No solo por el contenido principal: las notas de cada capítulo llevan directamente a bibliografía avanzada, y además ofrece ejercicios que ponen a prueba de verdad la comprensión y excelentes notebooks que implementan los conceptos en código real
    Si enseñara una clase de deep learning, también sería buen material gratuito de práctica para darles a los estudiantes, aunque probablemente esta comunidad no sea su público principal
    [0] https://udlbook.github.io/udlbook/

  • Si te interesa este curso, también vale mucho la pena revisar Little Book of Deep Learning, del mismo autor
    https://fleuret.org/francois/lbdl.html

  • Otro buen recurso es el curso NYU Deep Learning de Yann LeCun y Alfredo Canziani, y se puede ver completo en YouTube
    https://atcold.github.io/NYU-DLSP20/
    https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq

  • Practical Deep Learning for Coders también es una buena referencia
    https://course.fast.ai/

    • Me sorprendió que Jeremy Howard no estuviera en la lista de las 100 personas más importantes en IA. Este curso es realmente excelente
  • ¿Hay algún buen curso profundo que no requiera ver videos?

  • También recomiendo este conjunto de clases de Andrej Karpathy. La primera clase es bastante accesible incluso desde una perspectiva de principiante
    https://karpathy.ai/zero-to-hero.html

    • ¿También está bien para alguien a quien le falte algo de matemática avanzada?
  • Este curso de Sebastian Raschka también es bastante accesible en general. Si sabes un poco de Python o un lenguaje similar, puedes seguirlo
    https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY

  • Como desarrollador full-stack de hace algunos años, ya algo oxidado, me gustaría meterme en este campo, pero no tengo ninguna idea de si con 6 meses de estudio se puede entrar en alguna medida

    • Si recuerdas qué es una derivada y puedes manejar algo de matemática y probabilidad, es totalmente posible. Creo que la mayor parte se puede aprender incluso más fácil que React
      La pendiente de entrada no es tan empinada, pero el tiempo total puede ser mayor, así que se parece más a un maratón que a un sprint