Computer Science › Inteligência + Teoria
Esta disciplina começa exatamente onde `machine-learning` deliberadamente parou (uma rede de unidades parecidas com perceptrons, em camadas, com ativações não lineares) e lhe dá um mecanismo real e preciso. Cada camada densa é literalmente uma multiplicação de matriz seguida de uma não linearidade, e o forward pass inteiro é uma única função composta, pronta para ser treinada em escala.
O algoritmo com que toda rede desta disciplina é treinada. Representa-se o forward pass como um grafo computacional de pequenas operações localmente diferenciáveis e depois se percorre esse grafo de trás para frente aplicando a regra da cadeia multivariável um nó por vez, de modo que um único backward pass calcula o gradiente do loss em relação a todos os pesos de todas as camadas de uma vez.
A função de loss contra a qual quase todo classificador desta disciplina é de fato treinado. O softmax transforma os scores brutos de saída de uma rede em uma distribuição de probabilidade sobre as classes, e a cross-entropy, derivada aqui diretamente por máxima verossimilhança sobre essa distribuição (o mesmo argumento de MLE já usado na regressão logística), mede exatamente quão longe essa distribuição está do rótulo verdadeiro.
Por que uma rede profunda não pode simplesmente ser inicializada com pesos todos zero ou aleatórios arbitrários. O backpropagation multiplica as derivadas de muitas camadas, então um viés sistemático na escala dessas derivadas se compõe multiplicativamente com a profundidade, encolhendo os gradientes até perto de zero ou fazendo-os explodir; e por que esquemas calibrados, como as inicializações Xavier e He, existem especificamente para manter esse produto estável.
O gradiente descendente simples, já visto por completo em `machine-learning`, não é derivado de novo aqui, mas estendido. O momentum acumula uma velocidade ao longo dos passos para suavizar gradientes ruidosos e atravessar mais rápido regiões rasas, e o Adam combina esse momentum com uma taxa de aprendizado adaptativa por parâmetro, o otimizador padrão para quase todas as arquiteturas que o resto desta disciplina cobre.
O mesmo trade-off viés-variância e o mesmo overfitting já vistos para modelos lineares se aplicam a redes profundas com milhões de parâmetros, só que com mais urgência. O weight decay é exatamente a penalidade ridge já vista, aplicada aos pesos de uma rede, enquanto o dropout é uma técnica sem nenhum análogo em modelos rasos: apagar unidades aleatoriamente durante o treino para impedir que qualquer uma delas se coadapte em um detector de features específico demais e frágil.
Uma camada que não faz nada além de recentralizar e reescalar sua entrada para estatísticas de gaussiana unitária, usando a média e a variância do próprio mini-batch. Ela é inserida entre uma camada linear e sua ativação justamente para manter estável a distribuição de entrada de cada camada conforme os pesos abaixo dela mudam durante o treino, permitindo que taxas de aprendizado bem maiores convirjam de forma confiável.
A operação que o curso âncora desta disciplina (CS231n) existe para ensinar a fundo. Um pequeno filtro aprendido desliza sobre uma imagem calculando um produto escalar (exatamente a operação já vista como fato da álgebra vetorial) em cada posição, produzindo um mapa de features que acende onde quer que apareça o padrão que o filtro aprendeu a detectar.
A mecânica que transforma uma única convolução em uma camada prática e treinável. O stride controla quanto o filtro salta entre posições, o padding controla o que acontece na borda e o pooling descarta detalhes espaciais de propósito para embutir alguma tolerância à translação. E o motivo mais profundo de uma camada convolucional precisar de ordens de grandeza menos parâmetros que uma totalmente conectada: cada posição da imagem reaproveita exatamente os mesmos pesos do filtro.
Como empilhar blocos de convolução/pooling evoluiu do LeNet para o AlexNet, o VGG e o ResNet, e por que simplesmente empilhar mais camadas acabou piorando a acurácia até que as conexões residuais (skip connections) deixassem uma camada aprender uma correção sobre sua entrada, em vez de uma representação inteiramente nova, combatendo diretamente o problema do gradiente que desaparece em redes muito profundas. Também explica por que a operação central de toda esta disciplina, a multiplicação de matrizes, é exatamente o tipo de carga massivamente paralela em dados para a qual as GPUs foram construídas.
A arquitetura construída para dados com uma ordem inerente (texto, áudio, séries temporais), em que um único estado oculto é levado adiante e atualizado a cada passo de tempo usando os mesmos pesos compartilhados. O treino desdobra essa recorrência em um único grafo computacional longo, para que o backpropagation (já visto por completo) possa rodar ao longo do tempo, além de ao longo das camadas.
O mesmo problema do gradiente que desaparece já diagnosticado para redes feedforward muito profundas reaparece de forma ainda mais aguda quando uma rede recorrente é desdobrada ao longo de uma sequência longa. E o mecanismo de gating que o corrige: as portas de esquecimento, entrada e saída da LSTM (com a GRU como variante simplificada) mantêm uma célula de memória com um caminho de propagação de erro quase constante ao longo do tempo, permitindo que os gradientes sobrevivam a dezenas ou centenas de passos de tempo em vez de desaparecerem.
Uma resposta diferente para o mesmo problema que o gating de LSTM/GRU só resolve em parte. Deixar cada posição de saída olhar diretamente para cada posição de entrada, em vez de comprimir todo o histórico da sequência em um único estado oculto, calculado com nada mais exótico que o produto escalar. Um vetor query é comparado com cada vetor key, e as pontuações resultantes ponderam uma soma de vetores value.
Aplicar atenção aos próprios tokens de uma sequência, todos de uma vez, remove a dependência estrita da esquerda para a direita que força uma rede recorrente a processar um passo de tempo por vez, já que a atenção de cada posição pode ser calculada em paralelo. Mas esse mesmo paralelismo joga fora completamente a ordem das palavras, a menos que ela seja reinjetada explicitamente, e é exatamente isso que o positional encoding faz.
A montagem de self-attention, multi-head attention, conexões residuais (a mesma ideia de skip connection já vista para CNNs muito profundas) e camadas feed-forward por posição na arquitetura que hoje domina modelos de linguagem, de visão e multimodais. É o modelo em direção ao qual todo este bloco de atenção vinha construindo.
A ideia unificadora por baixo de toda arquitetura que esta disciplina cobriu. As primeiras camadas de uma CNN aprendem detectores genéricos de bordas e cores, enquanto as camadas posteriores aprendem features cada vez mais específicas da tarefa, e os embeddings de um transformer cumprem exatamente o mesmo papel para tokens. Nos dois casos, a rede não recebe features de um humano; ela aprende a própria representação da entrada diretamente dos dados, e é justamente por isso que um modelo treinado em um grande dataset se transfere tão bem para uma tarefa nova e relacionada.
O primeiro modelo generativo desta disciplina. Um encoder comprime uma entrada até um pequeno vetor de gargalo e um decoder reconstrói o original só a partir desse gargalo, treinados de ponta a ponta para minimizar o erro de reconstrução. É uma generalização direta e não linear do PCA (já visto como o caso linear exatamente dessa mesma ideia de compressão) e a base sobre a qual as arquiteturas generativas mais elaboradas que vêm a seguir são construídas.
Um olhar deliberadamente panorâmico sobre as duas famílias generativas que mais visivelmente definem as aplicações de IA atuais. O gerador e o discriminador de uma rede adversarial generativa presos em um jogo minimax, e o processo iterativo de remoção de ruído de um modelo de difusão, cobrindo a ideia central e por que cada um superou as reconstruções mais borradas de um autoencoder simples, deixando explicitamente a dinâmica completa de treino e as derivações matemáticas para uma disciplina futura e mais avançada.
Um roteiro de capstone que compara cada família de arquitetura vista nesta disciplina (redes multicamadas simples, CNNs, RNN/LSTM/GRU e Transformers) pela estrutura de dados que cada uma pressupõe (grade, sequência, conjunto) e pelas preocupações de treino (inicialização, regularização, otimizador, computação) que se aplicam a todas elas, estendendo o guia de decisão análogo que fechou `machine-learning` dos modelos clássicos para as arquiteturas profundas que esta disciplina acrescentou.
Part of the Computer Science curriculum.
Esta disciplina começa exatamente onde `machine-learning` deliberadamente parou (uma rede de unidades parecidas com perceptrons, em camadas, com ativações não lineares) e lhe dá um mecanismo real e preciso. Cada camada densa é literalmente uma multiplicação de matriz seguida de uma não linearidade, e o forward pass inteiro é uma única função composta, pronta para ser treinada em escala.
O algoritmo com que toda rede desta disciplina é treinada. Representa-se o forward pass como um grafo computacional de pequenas operações localmente diferenciáveis e depois se percorre esse grafo de trás para frente aplicando a regra da cadeia multivariável um nó por vez, de modo que um único backward pass calcula o gradiente do loss em relação a todos os pesos de todas as camadas de uma vez.
A função de loss contra a qual quase todo classificador desta disciplina é de fato treinado. O softmax transforma os scores brutos de saída de uma rede em uma distribuição de probabilidade sobre as classes, e a cross-entropy, derivada aqui diretamente por máxima verossimilhança sobre essa distribuição (o mesmo argumento de MLE já usado na regressão logística), mede exatamente quão longe essa distribuição está do rótulo verdadeiro.
Por que uma rede profunda não pode simplesmente ser inicializada com pesos todos zero ou aleatórios arbitrários. O backpropagation multiplica as derivadas de muitas camadas, então um viés sistemático na escala dessas derivadas se compõe multiplicativamente com a profundidade, encolhendo os gradientes até perto de zero ou fazendo-os explodir; e por que esquemas calibrados, como as inicializações Xavier e He, existem especificamente para manter esse produto estável.
O gradiente descendente simples, já visto por completo em `machine-learning`, não é derivado de novo aqui, mas estendido. O momentum acumula uma velocidade ao longo dos passos para suavizar gradientes ruidosos e atravessar mais rápido regiões rasas, e o Adam combina esse momentum com uma taxa de aprendizado adaptativa por parâmetro, o otimizador padrão para quase todas as arquiteturas que o resto desta disciplina cobre.
O mesmo trade-off viés-variância e o mesmo overfitting já vistos para modelos lineares se aplicam a redes profundas com milhões de parâmetros, só que com mais urgência. O weight decay é exatamente a penalidade ridge já vista, aplicada aos pesos de uma rede, enquanto o dropout é uma técnica sem nenhum análogo em modelos rasos: apagar unidades aleatoriamente durante o treino para impedir que qualquer uma delas se coadapte em um detector de features específico demais e frágil.
Uma camada que não faz nada além de recentralizar e reescalar sua entrada para estatísticas de gaussiana unitária, usando a média e a variância do próprio mini-batch. Ela é inserida entre uma camada linear e sua ativação justamente para manter estável a distribuição de entrada de cada camada conforme os pesos abaixo dela mudam durante o treino, permitindo que taxas de aprendizado bem maiores convirjam de forma confiável.
A operação que o curso âncora desta disciplina (CS231n) existe para ensinar a fundo. Um pequeno filtro aprendido desliza sobre uma imagem calculando um produto escalar (exatamente a operação já vista como fato da álgebra vetorial) em cada posição, produzindo um mapa de features que acende onde quer que apareça o padrão que o filtro aprendeu a detectar.
A mecânica que transforma uma única convolução em uma camada prática e treinável. O stride controla quanto o filtro salta entre posições, o padding controla o que acontece na borda e o pooling descarta detalhes espaciais de propósito para embutir alguma tolerância à translação. E o motivo mais profundo de uma camada convolucional precisar de ordens de grandeza menos parâmetros que uma totalmente conectada: cada posição da imagem reaproveita exatamente os mesmos pesos do filtro.
Como empilhar blocos de convolução/pooling evoluiu do LeNet para o AlexNet, o VGG e o ResNet, e por que simplesmente empilhar mais camadas acabou piorando a acurácia até que as conexões residuais (skip connections) deixassem uma camada aprender uma correção sobre sua entrada, em vez de uma representação inteiramente nova, combatendo diretamente o problema do gradiente que desaparece em redes muito profundas. Também explica por que a operação central de toda esta disciplina, a multiplicação de matrizes, é exatamente o tipo de carga massivamente paralela em dados para a qual as GPUs foram construídas.
A arquitetura construída para dados com uma ordem inerente (texto, áudio, séries temporais), em que um único estado oculto é levado adiante e atualizado a cada passo de tempo usando os mesmos pesos compartilhados. O treino desdobra essa recorrência em um único grafo computacional longo, para que o backpropagation (já visto por completo) possa rodar ao longo do tempo, além de ao longo das camadas.
O mesmo problema do gradiente que desaparece já diagnosticado para redes feedforward muito profundas reaparece de forma ainda mais aguda quando uma rede recorrente é desdobrada ao longo de uma sequência longa. E o mecanismo de gating que o corrige: as portas de esquecimento, entrada e saída da LSTM (com a GRU como variante simplificada) mantêm uma célula de memória com um caminho de propagação de erro quase constante ao longo do tempo, permitindo que os gradientes sobrevivam a dezenas ou centenas de passos de tempo em vez de desaparecerem.
Uma resposta diferente para o mesmo problema que o gating de LSTM/GRU só resolve em parte. Deixar cada posição de saída olhar diretamente para cada posição de entrada, em vez de comprimir todo o histórico da sequência em um único estado oculto, calculado com nada mais exótico que o produto escalar. Um vetor query é comparado com cada vetor key, e as pontuações resultantes ponderam uma soma de vetores value.
Aplicar atenção aos próprios tokens de uma sequência, todos de uma vez, remove a dependência estrita da esquerda para a direita que força uma rede recorrente a processar um passo de tempo por vez, já que a atenção de cada posição pode ser calculada em paralelo. Mas esse mesmo paralelismo joga fora completamente a ordem das palavras, a menos que ela seja reinjetada explicitamente, e é exatamente isso que o positional encoding faz.
A montagem de self-attention, multi-head attention, conexões residuais (a mesma ideia de skip connection já vista para CNNs muito profundas) e camadas feed-forward por posição na arquitetura que hoje domina modelos de linguagem, de visão e multimodais. É o modelo em direção ao qual todo este bloco de atenção vinha construindo.
A ideia unificadora por baixo de toda arquitetura que esta disciplina cobriu. As primeiras camadas de uma CNN aprendem detectores genéricos de bordas e cores, enquanto as camadas posteriores aprendem features cada vez mais específicas da tarefa, e os embeddings de um transformer cumprem exatamente o mesmo papel para tokens. Nos dois casos, a rede não recebe features de um humano; ela aprende a própria representação da entrada diretamente dos dados, e é justamente por isso que um modelo treinado em um grande dataset se transfere tão bem para uma tarefa nova e relacionada.
O primeiro modelo generativo desta disciplina. Um encoder comprime uma entrada até um pequeno vetor de gargalo e um decoder reconstrói o original só a partir desse gargalo, treinados de ponta a ponta para minimizar o erro de reconstrução. É uma generalização direta e não linear do PCA (já visto como o caso linear exatamente dessa mesma ideia de compressão) e a base sobre a qual as arquiteturas generativas mais elaboradas que vêm a seguir são construídas.
Um olhar deliberadamente panorâmico sobre as duas famílias generativas que mais visivelmente definem as aplicações de IA atuais. O gerador e o discriminador de uma rede adversarial generativa presos em um jogo minimax, e o processo iterativo de remoção de ruído de um modelo de difusão, cobrindo a ideia central e por que cada um superou as reconstruções mais borradas de um autoencoder simples, deixando explicitamente a dinâmica completa de treino e as derivações matemáticas para uma disciplina futura e mais avançada.
Um roteiro de capstone que compara cada família de arquitetura vista nesta disciplina (redes multicamadas simples, CNNs, RNN/LSTM/GRU e Transformers) pela estrutura de dados que cada uma pressupõe (grade, sequência, conjunto) e pelas preocupações de treino (inicialização, regularização, otimizador, computação) que se aplicam a todas elas, estendendo o guia de decisão análogo que fechou `machine-learning` dos modelos clássicos para as arquiteturas profundas que esta disciplina acrescentou.