Redes Neurais
Segunda playlist com o Dr. Francisco Boldt (a primeira foi Reconhecimento de Padrões), agora na disciplina de Redes Neurais. Mesmo estilo de sempre: código na mão, ao vivo, na aula, sem slide de fórmula pronta. Se você já leu a playlist anterior, sabe exatamente o que esperar.
O livro de referência muda: aqui eu uso Neural Networks and Deep Learning: A Textbook, do Charu Aggarwal (2018), pra fazer o papel que o Bishop fazia na playlist passada, encher de fundamento o que o notebook só mostra em código. Boa parte do assunto também conecta direto com o que eu já vi antes: regra delta e regressão linear já apareceram lá no Reconhecimento de Padrões, e funções de custo já apareceram na especialização do Andrew Ng, então sempre que der eu vou puxar esses fios em vez de reensinar do zero.
Os notebooks vêm do repositório da matéria, pablobelmiro/aulasann, um fork do repositório original do próprio Dr. Boldt, fboldt/aulasann, onde ele publica o código de cada aula. Mesma convenção da playlist anterior: quem "faz" o código é sempre ele, o professor; a explicação de fundamento é minha.
Um detalhe importante dessa vez: essa disciplina está sendo dada agora, ao vivo, e o repositório só tem o começo do curso até este momento (perceptron, Adaline, funções de custo, e um gancho bem no limite do que um único neurônio consegue resolver). Diferente da playlist de Reconhecimento de Padrões, que eu comecei só depois que a matéria inteira já tinha acabado, essa aqui é uma playlist viva: cresce toda vez que o professor publica uma aula nova, e eu volto pra continuar. Começamos pelo começo de tudo: o neurônio mais simples que existe.
Playlists · 7 posts
- Perceptron: o Primeiro Neurônio que Aprende Sozinho
Aula 1a: o professor implementa o Perceptron Learning Algorithm do zero, sem bias. Eu conto a história de dois papers que vêm antes dele e encontro um bug real escondido na condição de parada do algoritmo.
- Bias e Vetorização: Destravando o Perceptron
Aula 2a e 2b: o professor adiciona bias ao perceptron (resolvendo exatamente o limite que fechou a aula passada) e depois vetoriza a atualização de peso inteira, trocando o laço ponto a ponto por uma única conta em cima de todo o dataset.
- Da Classificação pra Regressão, e a Solução em Uma Linha
Aula 2c e 2d: o professor troca o sinal binário pela reta contínua (regressão linear) e depois substitui gradiente descendente inteiro por uma única conta fechada, a equação normal via pseudo-inversa.
- Adaline: Treinar na Reta, Classificar no Sinal
Aula 2e e 2f: o professor treina o Adaline ajustando uma reta contínua nos rótulos ±1 (em vez de ajustar direto no sinal), e eu conecto isso com a regra delta que já apareceu na outra playlist. No fim, um dataset artificialmente enviesado revela que o problema nunca foi o algoritmo de treino.
- Trocando a Função de Custo Como Quem Troca de Roupa
Aula 3a e 3b: o professor generaliza o treino pra aceitar qualquer função de custo plugável, e cada escolha (Widrow-Hoff, critério do perceptron, log-verossimilhança, hinge) recupera um algoritmo diferente dessa playlist. No meio do caminho, achei uma incompatibilidade real entre função de ativação e codificação de rótulo.
- Multiclasse: Quando um Peso Vira uma Matriz
Aula 3c: reusar o classificador binário direto num problema de 4 classes trava exatamente na acurácia de chute aleatório, 25%. A correção é generalizar peso de vetor pra matriz, um conjunto de pesos por classe, e trocar sign() por argmax.
- XOR: Onde um Neurônio Só Bate a Cabeça na Parede
Aula 3d, a última que o professor publicou até agora: o mesmo perceptron que aprende OR e AND sem esforço trava em XOR, preso em 50% de acurácia, pesos praticamente zerados. Fecho essa primeira leva da playlist exatamente onde a matéria de verdade também está: no limiar antes do MLP.