Curso de Deep Learning
(fleuret.org)- Material de aulas públicas de deep learning organizado para a disciplina 14x050 da Universidade de Genebra, reunindo em um só lugar os slides, handouts e vídeos gravados de François Fleuret
- Com base em exemplos em PyTorch, cobre uma faixa ampla para iniciantes, desde operações com tensores, autodiferenciação e descida do gradiente até modelos generativos, recorrentes e de atenção
- O arquivo completo em PDF tem 1107 slides, e as legendas dos screencasts são fornecidas em um arquivo ZIP gerado automaticamente com OpenAI Whisper
- Também são oferecidos os Practical 1~6, código das soluções e um Python prologue comum, que podem ser usados diretamente em exercícios com opções de carregamento e pré-processamento de MNIST/CIFAR10
- São necessários conhecimentos de álgebra linear, cálculo diferencial, Python, probabilidade e estatística, otimização, algoritmos e fundamentos de processamento de sinais; o material é distribuído sob CC BY-NC-SA 4.0
Visão geral do curso
- Deep Learning Course é uma página que reúne os slides e materiais gravados do curso 14x050 de deep learning da Universidade de Genebra, ministrado por François Fleuret
- É composto por aulas de introdução ao deep learning com exemplos no framework PyTorch
- O escopo do curso segue os seguintes eixos
- objetivos de machine learning e principais tarefas
- operações com tensores
- autodiferenciação e descida do gradiente
- técnicas específicas de deep learning
- modelos generativos, recorrentes e de atenção
- Como material separado, também é oferecido "The Little Book of Deep Learning"
- é uma introdução curta a deep learning em formato de celular para leitores com formação STEM
- Este curso foi desenvolvido inicialmente no Idiap Research Institute em 2018 e foi ministrado como EE-559 na École Polytechnique Fédérale de Lausanne até 2022
Formatos do material e download
- O PDF dos slides das aulas usa orientação horizontal e overlays para acompanhar a apresentação
- O PDF de handout é compilado em orientação vertical, sem efeitos de overlay, e inclui notas adicionais
- Os screencasts podem ser vistos por streaming no navegador ou baixados como arquivos mp4
- O arquivo completo em PDF pode ser baixado nos seguintes arquivos
- dlc-handout-all.zip: 101.7Mb
- dlc-slides-all.zip: 101.7Mb
- As legendas dos screencasts foram geradas automaticamente com Whisper da OpenAI, e o arquivo dlc-video-subtitles.zip tem 502.1Kb
Estrutura dos 13 módulos
- O material completo do curso é composto por 13 grandes módulos, e cada um traz a quantidade de slides e a duração do vídeo
- A parte inicial foca em estabelecer os conceitos básicos de deep learning e machine learning
- Introduction: de redes neurais a deep learning, aplicações atuais e casos de sucesso, fundamentos de tensores e regressão linear, tensores de alta dimensão, estrutura interna de tensores
- Machine learning fundamentals: perda e risco, overfitting e underfitting, dilema viés-variância, protocolos de avaliação, clustering e embedding
- Multi-layer perceptron and back-propagation: perceptron, visão probabilística de classificadores lineares, separabilidade linear, MLP, descida do gradiente, backpropagation
- A parte intermediária avança para o uso de PyTorch e técnicas de camadas e treinamento em deep learning
- Graphs of operators, autograd, and convolutional layers: redes DAG, Autograd, módulos PyTorch e processamento em lote, convolução, pooling, criação de módulos PyTorch
- Initialization and optimization: perda cross-entropy, stochastic gradient descent, optimizer do PyTorch, penalidades L2/L1, inicialização de parâmetros, escolha de arquitetura e protocolo de treinamento, criação de funções de Autograd
- Going deeper: vantagens da profundidade, Rectifier, Dropout, Batch Normalization, Residual Network, uso de GPU
- A parte final se expande para modelos generativos, visão computacional, análise interna do modelo e modelos de sequência
- Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
- o screencast de VAE não está atualizado, então é preciso consultar os slides
- Computer vision: tarefas de visão computacional, redes de classificação de imagens, redes de detecção de objetos, redes de segmentação semântica, DataLoader e neuro-surgery
- Under the hood: visualização de parâmetros, visualização de ativações, visualização do processamento a partir da entrada, otimização da entrada
- Autoregression and Normalizing Flows: autorregressão, Causal convolution, Non-volume preserving network
- Generative Adversarial Networks: GAN, Wasserstein GAN, Conditional GAN e tradução de imagens, persistência de modelo e checkpoints
- Recurrent models and NLP: RNN, LSTM e GRU, embeddings de palavras e tradução
- Attention models: atenção para memória e tradução de sequências, mecanismo de atenção, Transformer Network
- o screencast do módulo de atenção não está atualizado, então é preciso consultar os slides
- Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
Materiais práticos e Python prologue
- Os exercícios são oferecidos como Practical 1~6, com links para cada PDF e para o código da solução
- O Python prologue para os exercícios é fornecido em dlc_practical_prologue.py
- O prologue processa argumentos de linha de comando
--full: usa o conjunto de dados completo--tiny: usa um conjunto de dados muito pequeno para verificação rápida--seed SEED: define a seed aleatória; se for menor que 0, não faz seeding--cifar: usa o conjunto CIFAR em vez de MNIST--data_dir DATA_DIR: define a localização dos dados do PyTorch; o padrão é$PYTORCH_DATA_DIRou./data
- A função
load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True)baixa os dados quando necessário e, seflattenfor verdadeiro, converte as imagens em vetores unidimensionais - Os valores retornados são quatro tensores:
train_data,train_target,test_data,test_target - Se
cifar=True, usa CIFAR10; seFalse, usa MNIST; seNone, segue o argumento--cifar - Se
one_hot_labels=True, converte os alvos em umtorch.Tensor2D com uma coluna por classe, definindo 1 apenas na posição correta e -1 nas demais - Se
normalize=True, normaliza os tensores de dados com base na média e variância dos dados de treinamento - Se
flatten=True, os dados se tornam um tensor 2DN × D; se falso, tornam-se um tensor 4DN × C × H × W - O exemplo padrão usa MNIST e, sem
--full, reduz para 1000 amostras de treino e 1000 de teste, com tamanho de entradatorch.Size([1000, 784])
Pré-requisitos e documentação de referência
- Os pré-requisitos incluem as seguintes áreas
- álgebra linear: vetores, matrizes, espaço euclidiano
- cálculo diferencial: Jacobian, Hessian, Chain rule
- programação em Python
- fundamentos de probabilidade e estatística: distribuições discretas e contínuas, lei dos grandes números, probabilidade condicional, Bayes, PCA
- fundamentos de otimização: conceito de mínimo, descida do gradiente
- fundamentos de algoritmos: custo computacional
- fundamentos de processamento de sinais: Fourier transform, wavelet
- Como documentação de referência, é possível consultar Python, Jupyter notebook e PyTorch
Licença de uso
- Os materiais da própria página são distribuídos sob a licença Creative Commons BY-NC-SA 4.0 International License
- O uso para fins de educação acadêmica regular é permitido, mas a página explicita a condição de não usar o material em livros, YouTube com muitos anúncios ou outros modelos de monetização
2 comentários
É uma pena que as aulas não tenham legendas..
Opiniões no Hacker News
O canal do Stanford no YouTube também vale a pena. Eles publicaram uma série completa de aulas de machine learning com 19 vídeos
https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
Entrando no canal, há bastante conteúdo de aulas de ciência da computação, e a qualidade também é boa
Surgiram muitos materiais bons, mas acho que Understanding Deep Learning ficou de fora da lista
Simon J.D. Prince fez um trabalho realmente incrível com esse livro. Além do conteúdo principal, as notas anexadas a cada capítulo levam diretamente a referências avançadas, há exercícios que testam de verdade a compreensão e excelentes notebooks que implementam os conceitos em código real
Se eu fosse dar uma disciplina de deep learning, seria um ótimo material gratuito de exercícios para oferecer aos alunos, embora provavelmente esta comunidade não seja o público principal
[0] https://udlbook.github.io/udlbook/
Se você tem interesse nesse curso, também vale muito a pena conferir Little Book of Deep Learning, do mesmo autor
https://fleuret.org/francois/lbdl.html
Outro bom recurso é o curso NYU Deep Learning, de Yann LeCun e Alfredo Canziani, que pode ser assistido na íntegra no YouTube
https://atcold.github.io/NYU-DLSP20/
https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq
Practical Deep Learning for Coders também vale como referência
https://course.fast.ai/
Existe algum bom curso aprofundado que não exija assistir a vídeos?
Estou criando um curso com um pouco menos de teoria e um pouco mais de aplicação: https://github.com/VikParuchuri/zero_to_gpt
Todos os vídeos são opcionais e cobrem o mesmo conteúdo do texto
Também recomendo este conjunto de aulas do Andrej Karpathy. A primeira aula é bem acessível mesmo do ponto de vista de iniciantes
https://karpathy.ai/zero-to-hero.html
Este curso do Sebastian Raschka também é, no geral, fácil de acompanhar. Se você souber um pouco de Python ou de uma linguagem parecida, dá para seguir
https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY
Como desenvolvedor full-stack de alguns anos, meio enferrujado, tenho vontade de entrar nessa área, mas não faço a menor ideia se dá para conseguir algum nível de entrada com 6 meses de estudo
A curva de entrada é menos íngreme, mas o tempo total pode ser maior; por isso, está mais para uma maratona do que para uma corrida curta