Entendendo Deep Learning
(udlbook.github.io)- É um site de aprendizado que reúne em um só lugar práticas de programação, materiais de aula e leituras adicionais para estudar acompanhando o livro Understanding Deep Learning, de Simon J.D. Prince, publicado pela MIT Press em 2023
- São fornecidos 68 notebooks em Python cobrindo todo o livro, em um formato prático no qual o estudante preenche trechos de código em branco enquanto acompanha o texto
- Os materiais para instrutores incluem arquivos de figuras, videoaulas dos 12 primeiros capítulos, slides, livreto de respostas, figuras interativas para uso em aula e até arquivos LaTeX das equações
- Os slides foram organizados pensando em um curso universitário de deep learning com 20 aulas, indo de aprendizado supervisionado até CNN, geração de imagens, Transformers and LLMs
- Os materiais de leitura adicional se expandem para visão computacional, matemática para machine learning, otimização, aprendizado por reforço, teoria de ML, Responsible AI e mais, podendo ser usados tanto para estudo individual quanto para preparação de aulas
Informações do livro e citação
- Understanding Deep Learning é um livro escrito por Simon J.D. Prince, e as informações de citação em BibTeX indicam que ele foi publicado pela MIT Press em 2023
- A entrada BibTeX fornecida inclui as seguintes informações
author = "Simon J.D. Prince"title = "Understanding Deep Learning"publisher = "The MIT Press"year = 2023url = "http://udlbook.com"
Práticas de programação para acompanhar o livro
- O site oferece 68 práticas em notebooks Python cobrindo todo o livro
- As práticas seguem um formato de preenchimento de código em branco com base no texto
- Os notebooks estão no repositório
udlbook/udlbookno GitHub, e cada item pode ser aberto por linksipynb/colab -
Fundamentos e construção de redes neurais
- Os capítulos iniciais tratam de matemática de base, aprendizado supervisionado, redes neurais rasas, funções de ativação, composição de redes e redes neurais profundas
- As práticas de funções de perda incluem least squares loss, binary cross-entropy loss e multiclass cross-entropy loss
-
Otimização e cálculos de treinamento
- Os notebooks de otimização tratam de line search, gradient descent, stochastic gradient descent, momentum e Adam
- As práticas de cálculo de gradientes incluem backpropagation em toy model, backpropagation geral e initialization
-
Desempenho, regularização e CNN
- As práticas relacionadas a desempenho abordam MNIST-1D performance, bias-variance trade-off, double descent e high-dimensional spaces
- As práticas de regularização incluem L2 regularization, implicit regularization, ensembling, Bayesian approach e augmentation
- As práticas de convolução incluem 1D convolution, MNIST-1D convolution, 2D convolution, downsampling & upsampling e convolution para MNIST
-
Tópicos modernos de deep learning
- Os notebooks sobre estabilização e arquitetura de redes tratam de shattered gradients, residual networks e batch normalization
- As práticas de Transformer incluem self-attention, multi-head self-attention, tokenization e decoding strategies
- Os tópicos de redes neurais em grafos incluem graph representation, graph classification, neighborhood sampling e graph attention networks
- As práticas de modelos generativos tratam de GAN toy example, Wasserstein distance, normalizing flows, latent variable models e diffusion models
- As práticas de aprendizado por reforço abordam Markov decision processes, dynamic programming, Monte-Carlo methods, temporal difference methods e control variates
- Os tópicos finais incluem random data, full-batch gradient descent, lottery tickets, adversarial attacks, bias mitigation e explainability
Aulas e materiais para instrutores
- Os recursos para instrutores incluem materiais de figuras, slides e livreto de respostas
- Há um link de cadastro para receber o answer booklet após registro na MIT Press
- As Interactive figures são materiais usados para explicar ideias em aula
- É fornecido um arquivo Latex funcional com todas as equações
-
Slides de deep learning para graduação com 20 aulas
- Os slides são materiais para um curso universitário de deep learning com 20 aulas
- Os temas de slides publicados incluem Introduction, Supervised Learning, Shallow Neural Networks, Deep Neural Networks, Loss Functions, Fitting Models, Computing Gradients, Initialization, Performance, Regularization, Convolutional Networks, Image Generation, Transformers and LLMs
Leituras adicionais
- O site também reúne outros textos, blogs e livros em estilo semelhante e com a mesma notação de Understanding Deep Learning como materiais complementares
-
Visão computacional e fundamentos de machine learning
- Computer vision: models, learning, and inference é um livro publicado pela CUP em 2012, com foco em modelos probabilísticos e muito conteúdo de ML da era anterior ao deep learning
- Os materiais de matemática para machine learning cobrem álgebra linear, introdução à probabilidade, distribuições de probabilidade, ajuste de distribuições de probabilidade e distribuição normal
- Os materiais de machine learning incluem learning and inference, regression models, classification models, few-shot learning e meta-learning
-
Transformers, LLMs, NLP
- Os materiais sobre Transformers e LLMs incluem visão geral de LLMs, Transformers I·II·III, treinamento e fine-tuning de LLMs e aceleração de inferência de LLMs
- Os materiais de NLP tratam de neural natural language generation, parsing I·II·III e XLNet
- Os tópicos relacionados a Transformer incluem self-attention, position encoding, estrutura multi-head, Transformer block, encoder, decoder e training tricks
-
Otimização, modelos temporais e aprendizado por reforço
- Os materiais de otimização incluem gradient-based optimization, Bayesian optimization e SAT Solvers I·II·III
- Os materiais sobre modelos temporais tratam de Kalman filter, smoothing, Extended Kalman filter, Unscented Kalman filter e particle filtering
- O material de aprendizado por reforço Transformers in RL inclui tarefas em RL, vantagens de Transformers em RL, representation learning, reward learning, policy learning, interpretability e applications
-
ODEs, SDEs e teoria de ML
- O conjunto ODEs and SDEs in machine learning aborda ODEs, SDEs, gradient descent, stochastic gradient descent, residual networks, diffusion models e physics-informed machine learning
- Os materiais relacionados incluem introdução a ODE, closed-form solutions de ODE, métodos numéricos para ODE e stochastic processes and SDEs
- Os materiais de ML Theory incluem gradient flow, neural tangent kernel, aplicações de NTK, Bayesian ML I·II, Bayesian neural networks e neural network Gaussian processes
-
Aprendizado não supervisionado, modelos gráficos e Responsible AI
- Os materiais de aprendizado não supervisionado tratam de complex data densities, variational autoencoders e normalizing flows
- Os materiais de modelos gráficos incluem graphical models, models for chains and trees e models for grids
- Os materiais de Responsible AI incluem bias and fairness, explainability I·II e differential privacy I·II
1 comentários
Opiniões no Hacker News
Os comentários aqui geralmente se dividem em dois grupos: 1) dá para criar sistemas de IA sem esse conhecimento, então não é preciso saber; 2) para entender o que está acontecendo de fato, esse conhecimento básico é necessário.
Ambos estão certos, e acho que a área está se dividindo em duas competências: engenheiro de ML e cientista/pesquisador de ML.
É bom ter os dois no time. O cientista pode ser lento, e o engenheiro testa rapidamente várias APIs e modelos open source, mas, quando trava ou é preciso mudar o algoritmo, muitos engenheiros ficam perdidos. Nesse momento, é necessário um modo de pensar de P&D que é estranho para muitos engenheiros, e o cientista de IA passa a ser importante.
Nos últimos 10 anos, vi o mesmo padrão em várias equipes. Depois que uma empresa consegue algum orçamento e passa a acreditar que seu problema é especial, ela contrata cientistas de dados PhDs com alguns artigos publicados, mas muitas vezes eles só conhecem R e estão no nível de quem acabou de concluir um bootcamp de Python.
Depois de 3 meses, há pouco resultado e um monte de notebooks Jupyter; em alguns casos, não há código de produção nem sequer um ambiente de experimentação.
O problema de negócio continua o mesmo. A empresa percebe que, quando tem muitos cientistas de dados e poucos engenheiros de dados/ML, ela trava no deploy em produção ou acaba criando uma Estrela da Morte de pipeline de dados + algoritmo + infraestrutura por falta de compreensão de Python, consumindo 70% mais recursos.
O projeto atrasa e as pessoas ficam impacientes. Agora, uma equipe de US$ 2,5 milhões por ano não consegue entregar nem uma prova de conceito porque não consegue servir por batch ou REST API.
A empresa perde tração, enquanto concorrentes lançam soluções imperfeitas, mas mais avançadas, conquistam usuários e vão melhorando. Depois disso, PMs e gerentes de engenharia brigam sobre quem é o responsável, e os VPs de produto/engenharia procuram um bode expiatório. Alguns PhDs são demitidos e vão dar aula em universidades locais.
Nesse sentido, não sei de onde vem essa divisão entre engenheiro/cientista de ML, e ela parece uma distinção que alguns usam para se autoafirmar.
Como alguém que perdeu essa onda, fico me perguntando se aprender isso agora tem apenas significado histórico ou se ainda será relevante para empregos no futuro.
Em relação à IA, imagino que a OpenAI vá roubar o almoço de todo mundo; será que estou completamente enganado?
Materiais como o vídeo recente do Karpathy explicando LLMs são uma boa explicação semipopular para o público geral, mas uma sensibilidade prática um nível mais profunda é difícil de obter sem fazer você mesmo. Você não precisa decorar toda a matemática, mas é bom ter uma noção de como são as “interfaces” dos componentes.
O importante é o que cada técnica de modelo realmente faz, especialmente o que faz no momento da inferência, quando precisa estar bem integrada ao restante da stack.
Sobre a pergunta se isso continua relevante: deep learning, no sentido de redes neurais densas treinadas para otimizar uma função específica, não mudou fundamentalmente na prática há cerca de 15 anos; teoricamente é ainda mais antigo; e, para a maioria dos usos, é muito mais importante e amplamente usado do que coisas ao estilo OpenAI.
Coisas que envolvem estimativas numéricas, como otimização de anúncios ou modelagem financeira, não usam LLMs; usam modelos ajustados ao objetivo como parte de um sistema maior. A interface de “entra um número, sai um número” é explicável, fácil de integrar a uma stack de software e boa de medir.
Ela tem barras de erro compreensíveis e, às vezes, até é consistente. Também oferece uma interface controlável que não vai de repente cuspir segredos da empresa nem esquecer a serialização JSON. A latência e o custo também são muito menores.
Se você precisa renderizar uma página web em menos de 100 ms ou rodar uma otimização sobre milhões de opções, IA generativa não é uma escolha prática, e acho pouco provável que venha a ser.
Minha formação em matemática ou ML teórico não é grande, mas passei a maior parte dos últimos 10 anos criando infraestrutura, pipelines de dados e monitoramento junto com especialistas em ML. Não consigo integrar uma sigmoide de cabeça, mas esse não é o ponto central. Já fiz isso uma vez, tenho uma noção de como a função se comporta e consigo raciocinar sobre ela como um componente caixa-preta.
Diferentemente de outras áreas de ML, em deep learning os componentes se encaixam bem uns nos outros. Se quiser, você pode usar um Transformer junto com uma CNN. Ele também permite aplicar machine learning a qualquer tipo de dado, como texto, imagens, vídeo e áudio, e escala naturalmente do ponto de vista computacional.
Como alguém bastante envolvido nessa área, é uma pena ver que, por causa dos LLMs, as pessoas estão se afastando de ML e deep learning e seguindo o equívoco de que “não há mais motivo para fazer isso”. Algoritmos grandes são caros para executar, têm throughput lento e, em geral, performam pior do que modelos ajustados ao objetivo. Em muitas tarefas, eles nem são mais fáceis de usar do que redes encoder.
Posso estar enviesado, mas acho que é uma das áreas mais divertidas da computação para aprender. Se você tiver uma boa ideia, pode criar algo de nível atual até com uma GPU comum em casa. Basta encontrar um nicho que não receba tanta atenção quanto LLMs.
Deep learning é uma parte disso. Muitas partes já estão encapsuladas em bibliotecas e APIs, então o trabalho passa a ser preparar os dados corretos, chamar a API adequada e aproveitar os resultados.
Por exemplo, a OpenAI provavelmente não terá interesse em desenvolver uma pequena rede neural embarcada em um chip sensor que detecta em tempo real moléculas específicas no ar.
Este livro é impressionante. Também há um capítulo sobre um tema de que gosto, a eficácia irracional do deep learning. Será que há outros livros que valem a pena observar?
Quem estiver com pressa pode ver o slide 123. As principais recomendações são Murphy, Gelman, Barber e Deisenroth.
É preciso levar em conta que esses slides têm um viés bayesiano. Mesmo assim, Murphy é um excelente livro de deep learning, e passar por modelos lineares generalizados antes de entrar em deep learning também é um bom caminho.
Como curiosidade, o famoso artigo sobre Attention está chegando perto de 10 mil citações e deve atingir essa marca por volta do fim deste ano. É bem possível que seja o artigo que alcançou esse marco importante mais rapidamente.
Livros de deep learning escritos antes do artigo sobre Attention devem ser considerados desatualizados e precisam de atualização. É uma situação parecida com um velho livro de física que tem as leis de Newton, mas deixa de fora a equivalência energia-massa de Einstein.
Se eu começar agora a ler e estudar IA, será que consigo chegar a um nível próximo ao de especialista?
Tenho receio de estar começando uma jornada que exigiria mestrado ou doutorado.
Porém, podem faltar lições práticas, como pequenas dicas e intuições necessárias para fazer sistemas reais funcionarem. Isso leva tempo e, na minha opinião, é tanto arte quanto ciência.
Perguntas como “posso virar especialista?” são vagas demais para servirem como bons marcos.
Trabalhei por 10 anos com várias plataformas de machine learning em empresas de tecnologia famosas, e tudo em que trabalhei ficou obsoleto bem rápido.
De algoritmos de ML a plataformas de computação, tudo era muito transitório. Somando isso ao fato de que a maior parte da inovação em ML vem de um pequeno grupo de empresas de elite, aprender muito esse tipo de material parece quase contraditório.
Mas algoritmos e ideias de machine learning não. Se você aprendeu SVN ou naive Bayes e não tirou disso nada útil para hoje, então, na verdade, não aprendeu nada.
Por exemplo, o Transformer foi desenvolvido para resolver o desaparecimento do gradiente dos LSTMs em sequências longas e para melhorar o problema de baixa utilização de GPU causado pelo fato de o LSTM ser essencialmente sequencial na dimensão temporal.
Os fundamentos não mudam muito. Há várias correntes nessa área, e muitos algoritmos duram bastante e são usados de fato. Claro, é possível atualizar alguns deles se quiser, mas se você ficar perseguindo o coelho branco sem parar, tudo que sobra na mão é um chumaço de algodão.
Pessoalmente, acho que forças do mesmo tipo que a evolução movem a tecnologia. Acho que Linus Torvalds já disse que o Linux evoluiu por seleção natural.
É muito difícil julgar livros como este. Devemos julgar só pelo sumário?
Fico curioso para saber quem é o autor, se ele tem outras obras bem avaliadas, se há boas resenhas de pessoas que conhecem o conteúdo ou boas resenhas de alunos que não sabem nada.
Pretendo comprar este livro em papel.
Você perguntou se devemos julgar só pelo sumário, mas no site linkado é possível baixar os rascunhos dos capítulos 1 a 21, com mais de 500 páginas.
O autor, Simon J. D. Prince, é professor emérito de ciência da computação da University of Bath e autor de Computer Vision: Models, Learning and Inference. Ele é um cientista pesquisador especializado em IA e deep learning, e liderou equipes de cientistas pesquisadores tanto na academia quanto na indústria, incluindo Anthropics Technologies Ltd e Borealis AI.
Entre outras publicações bem avaliadas, há mais de 50 artigos revisados por pares em conferências de ponta como CVPR, ICCV e SIGGRAPH: https://scholar.google.com/citations?user=fjm67xYAAAAJ&hl=en
Quanto a resenhas, este livro ainda não foi publicado, e o que estamos vendo agora é literalmente um rascunho gratuito. Na Amazon, ele aparece em pré-venda por 85 dólares.
https://github.com/udlbook/udlbook/releases/download/v1.16/U...
Espero que não seja uma pergunta idiota, mas como posso comprar o livro impresso?
https://mitpress.mit.edu/9780262048644/understanding-deep-le...
Na figura do PDF, parece que Why does deep learning work aponta para Deep learning and ethics, e vice-versa
Do ponto de vista de quem leu pela última vez Deep Learning, de Ian Goodfellow, em 2016, é interessante que não haja um capítulo sobre RNN, mas haja um capítulo sobre Transformer
Por isso, hoje não são muito usadas. Ainda assim, pessoalmente acho que são conceitualmente interessantes o suficiente para serem abordadas em um curso como esse