6 pontos por GN⁺ 2023-11-20 | 2 comentários | Compartilhar no WhatsApp
  • 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
  • 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

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_DIR ou ./data
  • A função load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True) baixa os dados quando necessário e, se flatten for 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; se False, usa MNIST; se None, segue o argumento --cifar
  • Se one_hot_labels=True, converte os alvos em um torch.Tensor 2D 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 2D N × D; se falso, tornam-se um tensor 4D N × 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 entrada torch.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

 
bigtallee 2023-11-20

É uma pena que as aulas não tenham legendas..

 
GN⁺ 2023-11-20
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

    • Esse curso de Stanford parece ser um percurso bem avançado e puxado
  • 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/

    • Fiquei chocado que Jeremy Howard não estava na lista dos 100 principais nomes de IA. Esse curso é realmente excelente
  • Existe algum bom curso aprofundado que não exija assistir a vídeos?

  • 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

    • Será que é uma boa para quem não tem uma base de matemática mais avançada?
  • 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

    • Se você se lembra do que é derivada e consegue lidar minimamente com matemática e probabilidade, é perfeitamente possível. Acho que a maior parte é mais fácil de aprender do que React
      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