2 pontos por GN⁺ 2024-01-02 | 1 comentários | Compartilhar no WhatsApp
  • Uma introdução matemática ao deep learning, estruturada para ajudar estudantes e cientistas sem conhecimento prévio, além de profissionais que buscam uma compreensão mais rigorosa, a dominar os fundamentos dos algoritmos de deep learning
  • Redes neurais artificiais são definidas como composições repetidas de funções de ativação e funções afins; à medida que a profundidade da composição aumenta, tornam-se uma classe de funções tratada como deep ANN
  • A estrutura geral parte da arquitetura e do cálculo de ANNs e avança para teoria da aproximação, otimização, erro de generalização, análise do erro total e solução de PDEs
  • A parte de otimização aborda gradient flow ODE, GD, SGD, retropropagação (backpropagation), abordagem de Kurdyka–Łojasiewicz, batch normalization e inicialização aleatória
  • O código-fonte em Python pode ser obtido no repositório público do GitHub e na página do arXiv, e o conteúdo do livro pode ser relacionado ao código pelo nome do arquivo na legenda de cada listing

Como definir deep learning matematicamente

  • Este livro trata algoritmos de deep learning como métodos computacionais que usam deep ANNs e dados repetidamente para aproximar uma determinada relação, função ou quantidade
  • Uma ANN é uma classe de funções composta por várias composições de uma função de ativação não linear específica e funções afins
  • A profundidade de uma ANN corresponde ao número de repetições da composição; quando há mais de duas composições de funções não lineares e afins, passa-se a chamá-la de deep ANN
  • O público-alvo inclui estudantes e cientistas sem nenhum histórico em deep learning, mas que precisam de uma base sólida, e profissionais que desejam entender com mais segurança os objetos e métodos do deep learning

Partes I–II: arquitetura de redes neurais e teoria da aproximação

  • Após uma breve introdução, o corpo do texto é dividido em 6 partes, Partes I–VI
  • Parte I: Redes neurais artificiais

    • O Capítulo 1 introduz matematicamente vários tipos de ANN
      • ANN feedforward totalmente conectada
      • ANN convolucional (CNN)
      • ANN recorrente (RNN)
      • ANN residual (ResNet)
    • O Capítulo 2 aborda o cálculo (calculus) para ANNs feedforward totalmente conectadas
  • Parte II: Aproximação

    • Trata de vários resultados matemáticos que analisam quão bem uma ANN consegue aproximar uma dada função
    • Para facilitar o acesso, o Capítulo 3 primeiro se concentra em funções unidimensionais de reais para reais
    • O Capítulo 4 amplia o escopo para resultados de aproximação por ANN para funções multivariadas

Parte III: Otimização e algoritmos de aprendizado

  • O núcleo dos algoritmos de deep learning está em modelar ou reformular um problema como um problema de otimização adequado que inclua uma deep ANN
  • Esta parte trata de problemas de otimização e dos algoritmos que os resolvem aproximadamente, geralmente solucionando problemas de minimização com métodos de otimização baseados em gradiente
  • Métodos baseados em gradiente são procedimentos computacionais que resolvem o problema por etapas sucessivas baseadas na direção do gradiente negativo da função a ser otimizada
  • O Capítulo 5 aborda a ODE de gradient flow (GF) e suas aplicações para entender métodos do tipo GD e SGD
  • O Capítulo 6 examina e analisa métodos determinísticos de otimização baseados em gradiente, como gradient descent (GD)
  • O Capítulo 7 examina e analisa métodos estocásticos de otimização baseados em gradiente, como stochastic gradient descent (SGD)
  • O Capítulo 8 deriva e detalha a retropropagação, um método amplamente usado para calcular explicitamente gradientes no treinamento de ANNs
  • As análises dos Capítulos 5–7, na maioria dos casos, são limitadas para lidar com problemas de otimização no treinamento de ANNs, mas a abordagem de Kurdyka–Łojasiewicz (KL) do Capítulo 9 consegue tratar esses problemas
  • O Capítulo 10 examina rigorosamente batch normalization (BN), um método para acelerar procedimentos de treinamento de ANNs em problemas de aprendizado baseados em dados
  • O Capítulo 11 estuda uma abordagem que otimiza a função objetivo com diferentes inicializações aleatórias

Partes IV–VI: análise de erro e aplicações a PDEs

  • Parte IV: Erro de generalização

    • A análise matemática do deep learning não termina apenas com a capacidade de aproximação das ANNs e estimativas de erro dos métodos de otimização
    • Quando não é possível acessar explicitamente a distribuição de probabilidade do problema de aprendizado e ela é aproximada por um número finito de realizações e dados, são necessárias estimativas de erro de generalização
    • O Capítulo 12 examina estimativas probabilísticas de erro de generalização
    • O Capítulo 13 aborda estimativas de erro de generalização do tipo strong Lp
  • Parte V: Análise do erro total

    • Mostra, por meio de exemplos, como combinar o erro de aproximação da Parte II, o erro de otimização da Parte III e as estimativas de erro de generalização da Parte IV
    • O exemplo é o treinamento de ANNs baseado em um método de otimização do tipo SGD que usa muitas inicializações aleatórias independentes
    • O Capítulo 14 apresenta uma decomposição do erro total adequada a problemas de aprendizado supervisionado
    • O Capítulo 15 estabelece uma análise exemplificativa do erro total usando em conjunto alguns resultados das Partes II, III e IV
  • Parte VI: Deep learning para PDEs

    • Métodos de deep learning são usados não só em problemas de aprendizado baseados em dados, mas também para resolver aproximadamente equações diferenciais parciais (PDEs)
    • A Parte VI examina e implementa 3 métodos populares de deep learning para PDEs
    • O Capítulo 16 aborda physics-informed neural networks (PINNs) e deep Galerkin methods (DGMs)
    • O Capítulo 17 aborda deep Kolmogorov methods (DKMs)

Como acessar código e materiais

  • O livro inclui vários códigos-fonte em Python
  • O código-fonte pode ser baixado no repositório público do GitHub introdeeplearning/book
  • Também é possível obter o código-fonte na página do arXiv clicando em “Other formats” e depois selecionando “Download source”
  • A legenda de cada source listing contém o nome do arquivo-fonte correspondente, facilitando acompanhar as fórmulas e exemplos do livro junto com o código

1 comentários

 
GN⁺ 2024-01-02
Comentários do Hacker News
  • Parece uma boa coletânea que apresenta técnicas padrão de machine learning com uma notação matemática bem unificada e muitas demonstrações, mas são 600 páginas, então é realmente um trabalho enorme
    Ainda assim, dá a impressão de dar mais peso às partes mais fáceis de formalizar do que às partes mais interessantes de entender
    Por exemplo, o capítulo sobre SGD foi escolhido porque otimização é uma área em que matemáticos realmente podem contribuir de forma relevante para o machine learning, mas a maior parte das demonstrações é básica, como decomposição viés-variância ou desigualdade de Jensen, e os teoremas interessantes sobre convergência apenas citam a literatura, sem se conectarem aos lemas anteriores, enquanto métodos realmente interessantes na prática, como ADAM, quase não têm demonstrações nem teoria
    Depois de ler esse capítulo, você provavelmente vai entender bem os métodos modernos de SGD e como eles evoluíram, mas parece difícil entender por que eles funcionam para além de intuições confirmadas por experimentos numéricos
    Nesse caso, em vez de gastar tanto espaço provando conteúdos básicos como E(XY)=E(X)E(Y) para variáveis aleatórias independentes, talvez fosse mais útil usar esse espaço para as demonstrações de convergência já existentes do ADAM
    O capítulo sobre ANN também tinha muitas demonstrações longas de conteúdos básicos e menos interessantes, e o artigo sobre physics-informed neural networks é bom, mas tem um problema parecido
    A direção de explicar métodos de machine learning de forma mais rigorosa e unificada é boa em si, mas tenho dúvidas sobre como foi traçada a linha do que entra e do que fica de fora

    • Não saber “por que esses métodos funcionam” não é basicamente o estado atual de toda a área?
      Mesmo uma demonstração de convergência do ADAM não explica por que ele tende a funcionar melhor do que outros métodos
      É difícil culpar o livro por não explicar o que ninguém entende no momento, mas, se é uma teoria que não consegue prever o que realmente importa, a própria ideia de um ensino centrado em teoria fica enfraquecida
  • Quem quiser ver deep learning com mais profundidade matemática também pode olhar o livro do Francois Fleuret https://fleuret.org/francois/lbdl.html
    O PDF é gratuito, e a versão impressa é bem bonitinha

    • Fico curioso se alguém encontrou uma forma de imprimir o livro do Fleuret corretamente em papel A4
      Toda vez que tento, na impressora duplex uma página sim e outra não sai invertida de cabeça para baixo
    • Fico curioso sobre o que mais se destaca nele em comparação com o livro do post original
  • Fico me perguntando se as pessoas realmente leem livros assim do começo ao fim
    Estou olhando o PRML do Bishop, e leva um tempo enorme para terminar o livro de verdade e resolver todos os exercícios
    Vi alguém escrever num blog sobre ter feito isso, e disse que levou mais de 1500 horas
    No meu mestrado, ninguém terminou um livro desses; a gente só fazia as disciplinas e procurava no Google o resto do que precisava

  • Do ponto de vista de quem tem conhecimento de programação mais profundo do que de matemática, a notação matemática aqui é mais difícil de entender do que código
    Até mais difícil do que código em uma linguagem de programação que eu nem conheço
    Fico curioso se, para quem tem uma base mais forte em matemática, esse tipo de expressão matemática é mesmo mais fácil de entender do que código-fonte

    • Tenho experiência como doutor e pós-doc em matemática, depois migrei para trabalhar com deep learning, e neste ano ensinei deep learning para alunos de mestrado em matemática e estatística
      Tentei apresentar os conceitos matematicamente da forma mais precisa possível, mas no fim evitei a notação pesada desse tipo de livro, cortei bastante matemática para que os alunos conseguissem usar isso na indústria, e as aulas reais tinham muito mais código do que fórmulas
      Se você tenta escrever tudo com precisão total, rapidamente vira uma bagunça
      Em matemática, encontrar uma boa notação para conceitos novos é muito difícil, e notações que depois todos reconhecem como claras, como a notação de Einstein, os diagramas de Feynman ou a notação matricial, muitas vezes começaram com pessoas brilhantes criando algo novo
      Também não é porque você reescreve a notação da área A na notação da área B que isso se torna útil, e traduzir mecânica quântica para matemática como álgebras C* também foi um trabalho enorme e ainda hoje é, em certa medida, um campo de pesquisa em aberto
      Então, embora o esforço para escrever este livro tenha sido gigantesco, acho bem possível que a utilidade prática seja pequena
      Quem consegue ler essas equações com conforto em geral não precisa delas e, por exemplo, se você entende transformações afins, quase nunca precisa ver explicitamente todos os índices ijkl de um tensor de quarta ordem
      Já quem não entende provavelmente vai se intimidar e recuar
    • A notação matemática é mais compacta, então pode levar tempo para se acostumar
      Uma razão é que ela foi otimizada para escrita à mão
      Escrever código de programa à mão é extremamente tedioso, então dá para entender por que a notação matemática acabou ficando assim
      Além disso, não existe um equivalente de “aquele código” para a notação matemática
      A notação matemática serve para enunciar fatos ou proposições matemáticas, e isso é diferente do objetivo de um código que implementa algoritmos de deep learning
    • Este é um livro escrito por matemáticos aplicados para matemática aplicada, e embora o prefácio diga que é um livro para cientistas, alguns cientistas teóricos e engenheiros na prática estão bem próximos de matemáticos aplicados
      Então o tema e a forma de explicação acabam inclinados para esse público
      Por exemplo, quase nunca vi alguém em deep learning real se preocupar com condições de existência e unicidade de algoritmos de otimização baseados em gradiente, mas esse tipo de resultado é justamente o tipo de coisa que interessa a essas pessoas e sobre a qual elas escrevem artigos
      Pelo próprio título, é um livro sobre os fundamentos teóricos da área, então essa abordagem em si não é surpreendente
      Livros assim normalmente não são lidos do começo ao fim; a pessoa aprofunda só alguns capítulos com técnicas relacionadas à própria pesquisa
      Eu mesmo, quando pesquisava, escrevi uma coletânea de artigos parecidamente verbosa, mas a parte central que me interessava tinha umas 20 a 30 páginas
      É verboso demais para o meu gosto, tanto em rigor quanto em volume de conteúdo
      Por exemplo, inclui a desigualdade de Gronwall como lema e ainda a demonstra, e embora a versão usada seja um pouco mais geral do que a que costumo ver, a desigualdade de Gronwall é uma ferramenta extremamente padrão na análise de equações diferenciais ordinárias, a ponto de até livros rigorosos de teoria de controle que tenho simplesmente darem a referência bibliográfica sem prova para evitar sujeira
      Quanto mais alto o padrão de prova e menos hipóteses se quer assumir, mais esse tipo de verbosidade aparece
    • Os três autores são doutores ou doutorandos em matemática, então a notação é extremamente densa
      Fico me perguntando quem exatamente é o público-alvo de “estudantes e cientistas”
    • Mesmo com uma base forte em matemática, senti que a notação não fazia o menor sentido
      Logo no começo do capítulo 1 já aparecem subscritos dentro de subscritos, somatórios com subscritos dentro de sobrescritos, e entramos numa cadeia gigantesca de composição de funções
      Mais adiante, os subscritos chegam a quatro níveis de profundidade, criam pelo menos três novos operadores infixos e definem 30 novos símbolos vindos de três alfabetos diferentes, e isso antes de chegar sequer às 100 páginas de um livro de 600
      Não faço ideia para quem isso foi escrito nem quem conseguiriam esperar que acompanhasse e assimilasse tudo isso
  • Já vi vários livros tentando explicar deep learning sob uma perspectiva matemática, e isso sempre me surpreende
    Hoje, deep learning é claramente uma ciência empírica, e não acho que exista tanto trabalho teórico com impacto grande o bastante para justificar um livro
    Mesmo entre esses livros, este aqui parece ativamente próximo do pior
    Gasta um espaço considerável provando lemas só vagamente relacionados a deep learning e que quase não trazem entendimento adicional, e boa parte do código é código para gerar gráficos que nem dá para entender por que foi incluído
    Acho que muito poucas pessoas vão ler uma grande parte deste livro
    Ainda acho que os melhores livros-texto são Deep Learning, de Goodfellow e outros, e o mais moderno Understanding Deep Learning(https://udlbook.github.io/udlbook/)

    • Este não é um livro voltado para profissionais, mas mesmo assim não vejo motivo para chamá-lo de “ativamente próximo do pior”
      Embora a fronteira do deep learning seja muito empírica, há pesquisas interessantes tentando entender não só quais técnicas funcionam, mas por que funcionam
      Dizer que provas não são uma boa forma de obter compreensão não faz sentido
      Pode não ser um método bom para todo mundo, mas um livro chamado “introdução matemática a x” naturalmente é para pessoas com algum treinamento em matemática, e para esse tipo de leitor lemas e suas provas são uma forma natural de construir entendimento
    • O UDL também tem uma notação matemática bem densa
      Matemática não é só prova, também é uma forma de comunicação
      Há diagramas, código, palavras e também notação matemática bastante densa como formas de explicar como redes neurais funcionam
    • O pano de fundo matemático normalmente só começa a fazer sentido depois que você já entendeu razoavelmente bem o tema, e por isso parece que as pessoas assumem por engano que entender a matemática ajuda a aprender o tema inteiro
      Em vez de construir intuição a partir da teoria, geralmente é mais fácil primeiro obter intuição e depois entender as partes técnicas
      Isso costuma ser verdade nas ciências exatas, especialmente na matemática, e por isso exemplos ajudam
  • Fico pensando se o fato de deep learning ser uma ciência empírica é todo devido ao medo de matemática
    É uma área tão rica quanto a física moderna, mas estranhamente a maioria dos profissionais parece querer continuar pensando como se ainda fosse o velho oeste

    • Não
      Há muitos pesquisadores de deep learning com perfil fortemente matemático
      Deep learning é uma ciência empírica porque as ferramentas matemáticas que temos não são suficientes para explicar e prever os fenômenos observados com uma teoria unificada
      Ser uma ciência empírica não significa que a área seja “o velho oeste”
      Modelos de deep learning podem ser objeto de experimentos controlados e reproduzíveis, e isso permite melhorar nosso entendimento do que vai acontecer na maioria dos casos
      Bons profissionais sabem disso
    • Tem um pouco dos dois
      Dá para fazer muita coisa sem ir muito além de álgebra linear, cálculo e probabilidade de nível de graduação, e mesmo esse conhecimento serve mais para dar intuição e formalizar um pouco o problema em que você está trabalhando
      Dá para conseguir resultados, inclusive impressionantes, sem fazer quase nenhuma matemática
      Como resultado, as pessoas mostram e resolvem novos problemas empiricamente muito rápido, bem mais rápido do que surgem resultados teóricos explicando por que isso funciona
      Há vários motivos para a teoria ser difícil, mas um dos maiores é que muitos casos de sucesso do deep learning não se encaixam bem em estruturas já existentes, como estatística ou controle ótimo, então são difíceis de explicar
  • Fico pensando se alguém realmente usa essa matemática
    Meu palpite é que não, ou no melhor dos casos que ela serve como uma espécie de apoio psicológico para tranquilizar pesquisadores de deep learning de que o que querem fazer não é impossível
    Se eu estiver errado, admito sem problema

    • Sempre digo aos alunos uma coisa
      Você não precisa necessariamente de matemática para construir um bom modelo, mas precisa saber matemática para entender por que o modelo está errado
      Então matemática é necessária
      Sem matemática, você acaba se enganando e achando que só aumentar a escala vai levar à AGI
      Vai usar Transformer para tudo porque todo mundo usa, e vai se perder entre funções de ativação
      Você pode construir um modelo que funciona, mas há uma grande diferença entre um modelo que funciona e entender onde ele vai falhar e quais são seus limites
      Parece que muita gente acha que um bom resultado no conjunto de teste significa que o modelo não está sobreajustado
      Sem falar em ajustar hiperparâmetros com base no resultado do conjunto de teste
    • Chamar isso de “apoio psicológico” é subestimar demais
      Basta imaginar a ciência da computação sem teoria, como algoritmos de ordenação e busca, com correção provada e propriedades conhecidas
      Essa matemática cumpre um papel semelhante ao da teoria da ciência da computação
      Se você só ajusta modelos em bibliotecas como Keras, então de fato não está “usando” essa matemática
      Se o conjunto de dados estiver abaixo de certo tamanho, o problema abaixo de certa complexidade e o modelo já tiver sido implantado por anos com propriedades bem estudadas, dá para fazer bastante coisa com um entendimento superficial da matemática
      É parecido com conseguir construir uma aplicação web totalmente funcional sem saber profundamente como o runtime de Python ou Java funciona
      Mas, se você não entende como as coisas realmente funcionam, vai travar feio quando encontrar uma situação que ainda não esteja pronta na biblioteca
      Se quiser ver o que acontece quando falta a matemática de base, basta olhar para a geração atual de formados em “ciência de dados” que não conhece bem fundamentos de matemática e estatística
      Há muitos problemas também do lado de contratação, mas no fim eles não conseguem emprego porque nunca foram obrigados a aprender isso e, por isso, não sabem realmente o que estão fazendo
    • Algumas pessoas gostam de pensar e se comunicar com notação matemática densa
      Então há, sim, quem use
    • Na parte final do livro, que trata de PINN e outros métodos para equações diferenciais parciais, isso ajuda a olhar para esses métodos a partir de estruturas como a análise funcional usada no desenvolvimento de métodos numéricos tradicionais
      Nesse caso, oferece aos profissionais uma forma de verificar a consistência física entre diferentes métodos
    • Pelo resumo, parece cobrir várias estruturas de ANN, algoritmos de otimização e provavelmente também retropropagação
      Então me parece que isso é justamente o tipo de conteúdo que quem trabalha com machine learning usa todos os dias
  • Fico pensando se é comum colocar livros, especialmente livros recém-lançados, diretamente no ArXiv

    • Livros disponibilizados online em sua localização oficial não são tão raros
      Pelo menos em livros-texto de matemática e ciência da computação, vejo isso de vez em quando