Fundamentos Teoricos
Este documento resume a base conceitual por tras da implementacao deste repositorio.
O que uma rede neural faz
Uma rede neural recebe um vetor de entrada, aplica transformacoes lineares e funcoes nao lineares em camadas sucessivas, e produz uma saida.
Neste projeto, a saida final pode representar:
- uma probabilidade binaria
- uma distribuicao de probabilidades entre multiplas classes
Componentes principais
Neuronio artificial
Cada neuronio calcula:
z = x . w + b
a = f(z)
Onde:
xe o vetor de entradawsao os pesos aprendidosbe o biasfe a funcao de ativacao
Camadas
- camada de entrada: recebe as features
- camadas ocultas: aprendem representacoes intermediarias
- camada de saida: produz a previsao final
Forward propagation
No forward propagation, os dados passam camada por camada ate a saida:
z(l) = a(l-1) @ W(l) + b(l)
a(l) = f(z(l))
Neste projeto:
- as camadas ocultas usam a ativacao escolhida no construtor
- a camada final usa
sigmoidousoftmax
Backpropagation
Backpropagation e o processo usado para calcular como cada peso contribuiu para o erro final. Com esses gradientes, o modelo atualiza seus parametros por gradiente descendente.
Em alto nivel:
- faz o forward
- calcula a perda na saida
- propaga esse erro para tras
- atualiza pesos e biases
Funcoes de ativacao
Sigmoid
sigmoid(x) = 1 / (1 + e^(-x))
Boa para saida binaria, pois produz valores entre 0 e 1.
Softmax
Transforma logits em probabilidades que somam 1 por amostra. Ela e a escolha natural para classificacao multiclasse exclusiva.
ReLU
relu(x) = max(0, x)
Simples e eficiente, muito usada em camadas ocultas.
Tanh
Tem saida entre -1 e 1 e pode ajudar quando dados centrados em zero fazem sentido.
Leaky ReLU
Uma variacao da ReLU que mantem gradiente pequeno para valores negativos.
Linear
Usada como identidade. Neste repositorio ela fica disponivel para experimentos didaticos.
Inicializacao de pesos
Inicializar bem os pesos ajuda a evitar treinamento instavel.
Xavier
Boa escolha para sigmoid e tanh.
He
Boa escolha para ReLU e variantes.
Aleatoria simples
Util como baseline, mas normalmente menos robusta.
Funcoes de custo
Binary cross-entropy
E a perda padrao para classificacao binaria com saida sigmoide.
Categorical cross-entropy
E a perda mais natural para classificacao multiclasse com softmax.
MSE
Tambem esta disponivel como opcao didatica para comparacoes.
Otimizacao
O projeto suporta dois modos principais:
SGDAdam
SGD ajuda a entender a atualizacao basica por gradiente.
Adam adiciona medias moveis dos gradientes e costuma convergir melhor em muitos cenarios praticos.
Regularizacao
L2
Penaliza pesos muito grandes e ajuda a suavizar a complexidade do modelo.
Dropout
Desativa aleatoriamente parte das ativacoes ocultas durante o treino para reduzir co-adaptacao.
Gradient clipping
Limita a norma dos gradientes para evitar atualizacoes explosivas.
Callbacks
Do ponto de vista didatico, callbacks ajudam a separar responsabilidades:
EarlyStoppingcuida da parada antecipadaHistoryarmazena logsCSVLoggersalva o historicoModelCheckpointsalva os melhores pesos
Esse desenho deixa o loop de treino mais organizado e mais proximo de bibliotecas reais.
Multiclasse e one-hot
Para tarefas multiclasse, o repositório aceita:
- rotulos inteiros, como
0,1,2 - rotulos em one-hot
Internamente, a rede converte o formato quando necessario para manter a API pratica.
Normalizacao de dados
Antes de treinar, normalizar os dados costuma ajudar bastante.
O projeto oferece:
padrao: z-scoreminmax: escala para o intervalo[0, 1]robusto: usa mediana e IQR
Reprodutibilidade
Do ponto de vista didatico, reproducibilidade e parte da explicacao. Por isso o repositorio usa seeds explicitas e evita depender do estado global do gerador aleatorio do NumPy quando isso nao e necessario.
Limites intencionais
O projeto nao tenta competir com frameworks de producao. Ele foi desenhado para ser:
- pequeno o bastante para estudar
- previsivel o bastante para testar
- organizado o bastante para evoluir
Referencias sugeridas
- Michael Nielsen, Neural Networks and Deep Learning
- Ian Goodfellow, Yoshua Bengio e Aaron Courville, Deep Learning
- Andrej Karpathy, micrograd e materiais introdutorios sobre backpropagation