Redes Neurais Artificiais

Prof. Letícia Raposo

MOTIVAÇÃO Onde estão as redes neurais?

Redes neurais

Visão
reconhecer rostos,
exames de imagem

Linguagem
tradutores,
assistentes, ChatGPT

Voz
assistentes de voz,
legendas automáticas

Recomendação
filmes, músicas,
compras

Por trás de quase todos os avanços recentes de inteligência artificial está a mesma ideia: muitas unidades simples, conectadas em camadas, aprendendo a partir de exemplos.

MOTIVAÇÃO Onde estamos na disciplina

k-NN
distância

Naïve Bayes
probabilidade

Árvores
regras

Ensembles
muitas árvores

Redes neurais
representações

  • Os modelos anteriores trabalham diretamente sobre as variáveis originais: medem distâncias, contam frequências ou fazem perguntas sobre elas.
  • As redes neurais criam novas variáveis a partir das originais, camada por camada — elas aprendem a representar os dados de um jeito que facilita a tarefa.

HISTÓRIA Uma ideia antiga, com altos e baixos

A ideia tem mais de 80 anos. O que mudou recentemente foi a combinação de muitos dados, computadores rápidos (GPUs) e melhores técnicas de treino.

O NEURÔNIO Do neurônio biológico ao artificial

Neurônio biológico Neurônio artificial
Dendritos recebem sinais Entradas \(x_1, x_2, \dots\)
Sinapses mais fortes ou mais fracas Pesos \(w_1, w_2, \dots\)
Corpo celular acumula os sinais Soma ponderada
Dispara se passar de um limiar Função de ativação
Axônio envia o sinal adiante Saída

w₁

w₂

w₃

x₁

Σ

x₂

x₃

viés b

ativação

saída

O que a rede aprende são os pesos e o viés: quanto cada entrada deve importar para a decisão.

O NEURÔNIO O que um neurônio calcula

Duas etapas:

  1. Soma ponderada das entradas, mais o viés:

\[z = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b\]

  1. Ativação: decide o que fazer com essa soma. No perceptron original, a regra é um degrau: saída 1 se \(z > 0\); saída 0 caso contrário.
  • Peso positivo: a entrada “empurra” para o sim. Peso negativo: empurra para o não.
  • Viés: o quanto o neurônio já tende a dizer sim (ou não) antes de olhar as entradas.

O NEURÔNIO Exemplo: vou à praia?

Entrada Valor hoje Peso
Está sol? 1 (sim) +0,6
Está frio? 0 (não) −0,4
Tenho companhia? 1 (sim) +0,3
Viés −0,5

\[\begin{aligned} z &= 0{,}6 \times 1 + (-0{,}4) \times 0 + 0{,}3 \times 1 - 0{,}5 \\ &= 0{,}4 \end{aligned}\]

Como \(z = 0{,}4 > 0\) → saída = 1: vou à praia!

  • E se estivesse frio? \(z = 0{,}6 - 0{,}4 + 0{,}3 - 0{,}5 = 0\) → fico em casa.
  • O sol tem o maior peso: é o fator mais importante para esta pessoa. Outra pessoa teria outros pesos — é isso que a rede aprende com os dados.

O NEURÔNIO Um neurônio desenha uma reta

  • A regra “\(z > 0\)” separa o plano com uma reta: de um lado, saída 1; do outro, saída 0.
  • E e OU são fáceis. Mas no OU exclusivo (XOR) — “um ou outro, mas não os dois” — nenhuma reta separa os 1 dos 0.

O NEURÔNIO O problema do XOR

  • Em 1969, Minsky e Papert mostraram que um único perceptron não consegue aprender o XOR — nem qualquer problema que não seja linearmente separável.
  • O resultado esfriou o entusiasmo pela área por mais de uma década: o primeiro “inverno” da IA.
  • A solução já era conhecida em teoria: combinar vários neurônios em camadas. O que faltava era um jeito eficiente de treinar essas redes.

Um neurônio sozinho = uma reta.

Vários neurônios em camadas = várias retas combinadas, capazes de formar regiões de qualquer formato.

CAMADAS Resolvendo o XOR com dois neurônios escondidos

x₁

h₁ = OU
pelo menos um?

x₂

h₂ = NÃO-E
não os dois?

saída = E
h₁ e h₂

x₁ x₂ h₁ (OU) h₂ (NÃO-E) saída (E)
0 0 0 1 0
0 1 1 1 1
1 0 1 1 1
1 1 1 0 0

Cada neurônio escondido resolve um pedaço fácil do problema (uma reta). O neurônio de saída combina os pedaços. A camada escondida criou novas variáveis (\(h_1\), \(h_2\)) em que o problema ficou simples!

CAMADAS O que a camada escondida faz, visualmente

Os pontos \((0,1)\) e \((1,0)\) viram o mesmo ponto \((1,1)\) no novo espaço. Essa é a grande ideia das redes neurais: transformar os dados até que o problema fique fácil.

CAMADAS A rede multicamadas (MLP)

  • Entrada: uma “bolinha” por variável; só repassa os valores.
  • Escondidas: cada neurônio recebe todas as saídas da camada anterior e cria uma nova variável.
  • Saída: a resposta final (um número, uma probabilidade, uma classe).
  • Cada linha do desenho é um peso a ser aprendido. Esta rede pequena já tem 32 pesos (mais 9 vieses).

CAMADAS Propagação para frente: um exemplo

Ativação: sigmoide (transforma qualquer número em um valor entre 0 e 1).

Neurônio \(h_1\) (pesos 0,4 e 0,3):

\(z = 0{,}4 \times 0{,}5 + 0{,}3 \times 1 = 0{,}50\) → \(h_1 = \sigma(0{,}50) = 0{,}62\)

Neurônio \(h_2\) (pesos −0,2 e 0,6; viés 0,1):

\(z = -0{,}2 \times 0{,}5 + 0{,}6 \times 1 + 0{,}1 = 0{,}60\) → \(h_2 = 0{,}65\)

Saída (pesos 0,7 e −0,5; viés 0,1):

\(z = 0{,}7 \times 0{,}62 - 0{,}5 \times 0{,}65 + 0{,}1 = 0{,}21\)

\(\hat{y} = \sigma(0{,}21) = 0{,}55\)

É só isso, repetido: somar, ativar, passar adiante.

ATIVAÇÃO Por que precisamos da função de ativação?

  • Sem ativação, cada neurônio faz só uma soma ponderada — uma conta linear.
  • E linear de linear continua linear: empilhar 100 camadas lineares equivale a uma única camada linear.
  • Ou seja: sem ativação, a rede inteira seria apenas uma regressão linear, e jamais resolveria o XOR.

Exemplo: dobrar e depois triplicar um número é o mesmo que multiplicá-lo por 6.

Duas transformações lineares em sequência equivalem a uma só.

A função de ativação é a “dobra” não linear que permite às camadas criarem coisas novas.

ATIVAÇÃO As principais funções de ativação

Função Ideia Onde usar
Sigmoide “espreme” qualquer número entre 0 e 1 saída de classificação binária (probabilidade)
Tanh parecida, mas entre −1 e 1 camadas escondidas (redes mais antigas, sequências)
ReLU negativo vira 0; positivo passa como está camadas escondidas: o padrão atual

ATIVAÇÃO A camada de saída depende do problema

Tipo de problema

Regressão
prever um número

saída linear

Binária
sim ou não

1 neurônio
sigmoide

Multiclasse
3+ classes

1 por classe
softmax

Softmax: transforma os “escores” de cada classe em probabilidades que somam 1. Exemplo — a foto é de quê?

Classe Escore Probabilidade
Gato 2,0 66%
Cachorro 1,0 24%
Pássaro 0,1 10%

APRENDIZADO Como a rede aprende? A ideia geral

repetir

Pesos
aleatórios

① Prever

② Medir
o erro

③ Achar a
culpa de
cada peso

④ Ajustar
os pesos

  • No início, os pesos são aleatórios: a rede “chuta”.
  • A cada rodada, ela compara o chute com a resposta certa e ajusta um pouquinho cada peso na direção que diminui o erro.
  • Depois de milhares de rodadas, os pesos passam a codificar os padrões dos dados.

APRENDIZADO Medindo o erro: a função de perda

Regressão — erro quadrático médio:

\[\text{perda} = \text{média de } (y - \hat{y})^2\]

Erros grandes pesam muito mais que erros pequenos.

Classificação — entropia cruzada: olha a probabilidade que a rede deu para a classe certa:

\[\text{perda} = -\log(\text{prob. da classe certa})\]

Acertar com confiança → perda perto de zero. Errar com confiança → perda enorme.

APRENDIZADO Gradiente descendente, de novo

É a mesma montanha da aula de gradient boosting:

  • A altitude é a perda (o erro da rede).
  • A posição são os valores de todos os pesos.
  • Com os olhos vendados, sentimos a inclinação em cada direção e damos um passo morro abaixo.

peso novo = peso atual − taxa de aprendizado × inclinação

A diferença: aqui a montanha tem milhares (ou bilhões) de direções — uma para cada peso.

APRENDIZADO Backpropagation: distribuindo a culpa

① prever

② culpa

culpa

Entrada

Escondidas

Saída ŷ

Erro
ŷ − y

  • O erro aparece na saída. Backpropagation (retropropagação) leva esse erro de trás para frente, camada por camada.
  • Cada peso recebe uma parcela da “culpa”, proporcional a quanto ele contribuiu para o erro.
  • Contribuiu muito para o erro → muda muito; quase não influenciou → muda pouco.

Analogia: um time perde o jogo. O técnico revê o vídeo do fim para o começo e descobre quanto cada jogada (e cada jogador) contribuiu para o gol sofrido — e treina mais quem mais precisa.

BACKPROPAGATION A regra da cadeia: efeito em cadeia

Pergunta: se eu mexer um pouquinho em um peso lá do começo da rede, quanto muda o erro lá no final?

Como engrenagens: se a 1ª gira a 2ª 2 vezes mais, a 2ª gira a 3ª 3 vezes mais e a 3ª gira a 4ª 2 vezes mais, então a 1ª gira a 4ª 2 × 3 × 2 = 12 vezes mais. Essa é a regra da cadeia: o efeito total é o produto dos efeitos de cada elo.

BACKPROPAGATION Uma rede mínima para acompanhar

  • Um caminho só, com dois pesos para aprender: \(w_1\) (entrada → escondida) e \(w_2\) (escondida → saída).
  • A perda \(L\) mede o erro da previsão \(\hat{y}\) em relação à resposta certa \(y = 1\).
  • Numa rede de verdade há milhares de caminhos assim, mas a lógica é exatamente a mesma.

BACKPROPAGATION Passo ① para frente: fazer a previsão

  • Os valores fluem da esquerda para a direita: cada neurônio calcula e passa adiante.
  • A rede previu \(\hat{y} = 3\), mas a resposta certa é \(y = 1\): previu alto demais, e a perda é \(L = 2\).
  • Guardamos os valores intermediários (\(h = 1\), \(\hat{y} = 3\)): eles serão usados na volta.

PASSO ② PARA TRÁS Elo 1: do erro até ŷ

Começamos pelo fim: quanto o erro muda se ŷ mudar um pouquinho?

Como \(L = \tfrac{1}{2}(\hat{y} - y)^2\):

\[\frac{\partial L}{\partial \hat{y}} = \hat{y} - y = 3 - 1 = \mathbf{2}\]

Lê-se: “cada unidade a mais em ŷ aumenta o erro em cerca de 2 unidades”.

Conferindo: ŷ de 3 para 3,01

\(L = \tfrac{1}{2}(3{,}01 - 1)^2 = 2{,}0200\)

O erro subiu 0,020 ≈ 2 × 0,01 ✔

PASSO ② PARA TRÁS Elo 2: de ŷ até h (e w₂)

\(\hat{y} = 3h\): h mexe em ŷ 3 vezes mais. A regra da cadeia multiplica os efeitos:

\[\frac{\partial L}{\partial h} = \underbrace{\frac{\partial L}{\partial \hat{y}}}_{2\ \text{(elo 1)}} \times \underbrace{\frac{\partial \hat{y}}{\partial h}}_{w_2\ =\ 3} = 2 \times 3 = \mathbf{6}\]

Idem para w₂: culpa \(= 2 \times h = 2 \times 1 = \mathbf{2}\).

Conferindo: h de 1 para 1,01

ŷ = 3 × 1,01 = 3,03 → erro sobe 0,060 ≈ 6 × 0,01 ✔

w₂ de 3 para 3,01 → erro sobe 0,020 ≈ 2 × 0,01 ✔

PASSO ② PARA TRÁS Elo 3: de h até w₁

Com a ReLU ativa, \(h = w_1 \cdot x = 2 w_1\): w₁ mexe em h 2 vezes mais.

\[\frac{\partial L}{\partial w_1} = \underbrace{\frac{\partial L}{\partial h}}_{6\ \text{(elo 2)}} \times \underbrace{\frac{\partial h}{\partial w_1}}_{x\ =\ 2} = \mathbf{12}\]

Reaproveitamos o 6 do elo anterior: nada de refazer contas desde o erro.

Conferindo: w₁ de 0,5 para 0,51

h = 1,02 → ŷ = 3,06 → erro sobe 0,122 ≈ 12 × 0,01 ✔

PASSO ② PARA TRÁS A cadeia completa

\[\frac{\partial L}{\partial w_1} \;=\; \underbrace{\frac{\partial L}{\partial \hat{y}}}_{\large 2} \;\times\; \underbrace{\frac{\partial \hat{y}}{\partial h}}_{\large 3} \;\times\; \underbrace{\frac{\partial h}{\partial w_1}}_{\large 2} \;=\; \mathbf{12}\]

Regra da cadeia = multiplicar os efeitos de cada elo, como nas engrenagens. O backpropagation faz isso de trás para frente, guardando os resultados parciais (2 → 6 → 12): por isso é eficiente mesmo com milhões de pesos.

BACKPROPAGATION Passo ③ descer a montanha: ajustar os pesos

peso novo = peso − taxa × culpa (taxa = 0,02)

Peso Antes Culpa Depois
\(w_1\) 0,5 12 0,5 − 0,02 × 12 = 0,26
\(w_2\) 3 2 3 − 0,02 × 2 = 2,96

Nova previsão: \(\hat{y} = 1{,}54\) (antes: 3). A perda caiu de 2 para 0,15 em um único passo!

BACKPROPAGATION Repetindo: a descida na superfície de perda

Começando de um ponto ruim (\(w_1 = 0{,}05\), \(w_2 = 0{,}3\): a rede prevê \(\hat{y} \approx 0\)), com taxa 0,1. Cada ponto vermelho é uma rodada completa: ① para frente → ② para trás (regra da cadeia) → ③ ajuste. A rede desce até o vale, onde \(\hat{y} \approx 1\).

BACKPROPAGATION Resumo do algoritmo

próxima rodada

① Para frente
calcular h, ŷ e a perda

② Para trás
regra da cadeia:
culpa de cada peso

③ Ajustar
peso − taxa × culpa

Gradiente descendente Regra da cadeia (backpropagation)
Papel decide para onde e quanto andar calcula a inclinação de cada peso
Pergunta “como desço a montanha?” “quanto cada peso influencia o erro?”
Na rede mínima \(w_1\): 0,5 → 0,26 culpa de \(w_1\) = 2 × 3 × 2 = 12

Backpropagation não é um jeito novo de aprender: é um jeito eficiente de calcular todas as inclinações de uma vez, reaproveitando as contas feitas na ida.

BACKPROPAGATION Outro exemplo: um neurônio com sigmoide

Um neurônio com sigmoide, peso \(w = 0{,}1\), recebe \(x = 2\) e a resposta certa é \(y = 1\).

① Prever: \(\hat{y} = \sigma(0{,}1 \times 2) = 0{,}55\)

② Erro: \(\hat{y} - y = 0{,}55 - 1 = -0{,}45\) — previu baixo demais.

③ Culpa do peso: \(\text{erro} \times x = -0{,}45 \times 2 = -0{,}90\)

④ Ajuste (taxa 0,5):

\(w = 0{,}1 - 0{,}5 \times (-0{,}90) = 0{,}55\)

Com o peso novo: \(\hat{y} = \sigma(0{,}55 \times 2) = 0{,}75\)

A previsão subiu de 0,55 para 0,75, mais perto da resposta certa (1)!

Numa rede, o backpropagation faz essa mesma conta para todos os pesos ao mesmo tempo.

APRENDIZADO Treinando de verdade: a perda caindo

  • Taxa pequena (0,05): aprende, mas devagar.
  • Taxa adequada (0,5): desce rápido e estabiliza.
  • Taxa grande (5): os passos “pulam” o mínimo e a perda oscila.

TREINAMENTO Épocas, lotes e iterações

repetir por
várias épocas

1.000
observações

lote 1
(100 obs.)

lote 2

…

lote 10

1 época

Termo Significado No exemplo
Lote (batch) pedaço dos dados usado para um ajuste dos pesos 100 observações
Iteração um ajuste dos pesos (um lote processado) 10 por época
Época uma passada completa por todos os dados 1.000 observações vistas

Usar lotes pequenos é o gradiente descendente estocástico (SGD): cada passo é mais “ruidoso”, porém muito mais rápido — e o ruído ajuda a escapar de mínimos locais.

TREINAMENTO Otimizadores: descendo a montanha com mais esperteza

  • SGD: passo simples na direção da inclinação. Momentum: como uma bola rolando, ganha velocidade nas direções consistentes.
  • Adam: momentum + uma taxa de aprendizado própria para cada peso — o otimizador padrão hoje.

TREINAMENTO O problema do gradiente que desaparece

  • A cada camada que o erro atravessa para trás, ele é multiplicado pela inclinação da ativação — na sigmoide, no máximo 0,25.
  • Depois de 10 camadas: \(0{,}25^{10} \approx\) um milionésimo! As primeiras camadas quase não aprendem.

Solução: a ReLU tem inclinação 1 para valores positivos — o sinal atravessa as camadas sem encolher. Foi um dos segredos para treinar redes profundas.

NA PRÁTICA Preparando os dados

Padronizar as variáveis numéricas

  • Ao contrário das árvores, redes neurais são sensíveis à escala.
  • Variáveis em escalas muito diferentes (idade × renda) dificultam a descida da montanha.
  • Padronizar: média 0 e desvio-padrão 1 (como no k-NN).

Codificar as variáveis categóricas

  • A rede só entende números.
  • One-hot: uma coluna 0/1 para cada categoria.
Cor azul verde vermelho
azul 1 0 0
verde 0 1 0
vermelho 0 0 1

Os parâmetros da padronização (média e desvio) são calculados só no treino e depois aplicados ao teste — senão vazamos informação do teste para o modelo.

OVERFITTING Muitos pesos, muito risco de decorar

  • Mais neurônios → mais pesos → a rede consegue decorar o treino (erro de treino cai), mas generaliza pior (erro de teste não melhora ou piora).
  • É o mesmo dilema viés × variância de todas as aulas anteriores.

OVERFITTING Regularização: weight decay

  • Weight decay (regularização L2): penaliza pesos grandes. Pesos menores → rede mais “comportada” → fronteira mais suave.
  • Mesma ideia da regressão ridge e do λ do XGBoost: um freio na complexidade.

OVERFITTING Dropout e early stopping

Dropout

A cada passo do treino, desliga aleatoriamente alguns neurônios. A rede não pode depender de nenhum neurônio específico — como um time que treina sem saber quem vai faltar.

Early stopping

Acompanhar o erro de validação a cada época e parar quando ele começa a subir.

NA PRÁTICA Principais hiperparâmetros

Hiperparâmetro O que controla Dica
Nº de camadas escondidas profundidade da rede para dados tabulares, 1 a 3 costumam bastar
Nº de neurônios por camada “largura” da rede comece pequeno e aumente se houver underfitting
Função de ativação não linearidade ReLU nas escondidas; a saída depende do problema
Taxa de aprendizado tamanho do passo o hiperparâmetro mais importante; teste 0,1, 0,01, 0,001…
Tamanho do lote quantas obs. por ajuste 32 a 256 são valores comuns
Nº de épocas quanto tempo treinar use early stopping
Regularização weight decay, dropout aumente se houver overfitting

Como em todas as aulas: os hiperparâmetros são escolhidos por validação cruzada (ou um conjunto de validação), nunca olhando o teste.

ALÉM DO MLP Arquiteturas especializadas

Redes neurais

MLP
dados tabulares
(esta aula)

Convolucionais (CNN)
imagens: filtros que
detectam bordas e formas

Recorrentes (RNN, LSTM)
sequências: têm
memória do passado

Transformers
texto: mecanismo de
atenção (ChatGPT)

  • Todas usam os mesmos ingredientes desta aula: neurônios, ativações, função de perda, backpropagation e gradiente descendente.
  • O que muda é como os neurônios se conectam, aproveitando a estrutura dos dados (pixels vizinhos, ordem das palavras…).
  • Deep learning = redes com muitas camadas escondidas.

USO PRÁTICO Vantagens e limitações

Vantagens

  • Aprendem relações muito complexas e não lineares.
  • Criam as próprias variáveis (representações) — ótimas para imagem, texto e áudio.
  • Escalam bem com muitos dados.
  • Base dos avanços recentes em IA.

Limitações

  • Precisam de muitos dados para generalizar bem.
  • Muitos hiperparâmetros e treino mais trabalhoso.
  • Caixa-preta: difícil explicar uma decisão.
  • Custo computacional alto (muitas vezes exigem GPU).

Planilhas pequenas ou médias: random forest e boosting costumam ganhar. Imagens, texto, áudio: redes neurais dominam.

SÍNTESE O que guardar

repetir

Neurônio
soma +
ativação

Camadas
criam
variáveis

Prever
para
frente

Perda
mede o
erro

Backprop
distribui
a culpa

Gradiente
ajusta os
pesos

Resumo

  • Um neurônio faz uma soma ponderada das entradas e aplica uma função de ativação; sozinho, separa os dados com uma reta.
  • Empilhando neurônios em camadas escondidas, a rede cria novas variáveis e resolve problemas não lineares, como o XOR.
  • A função de ativação é essencial: sem ela, a rede inteira seria linear. ReLU nas escondidas; a saída depende do problema.
  • A rede aprende medindo o erro (função de perda), distribuindo a culpa (backpropagation) e ajustando os pesos (gradiente descendente).
  • Muitos pesos → risco de overfitting: use weight decay, dropout e early stopping.

Referências

  • GOODFELLOW, I.; BENGIO, Y.; COURVILLE, A. Deep Learning. MIT Press, 2016.
  • HASTIE, T.; TIBSHIRANI, R.; FRIEDMAN, J. The Elements of Statistical Learning. 2. ed. Springer, 2009.
  • HAYKIN, S. Redes Neurais: princípios e prática. 2. ed. Porto Alegre: Bookman, 2001.
  • JAMES, G.; WITTEN, D.; HASTIE, T.; TIBSHIRANI, R. An Introduction to Statistical Learning. 2. ed. Springer, 2021. (Capítulo 10)
  • MCCULLOCH, W. S.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, 5(4), p. 115–133, 1943.
  • MINSKY, M.; PAPERT, S. Perceptrons. MIT Press, 1969.
  • ROSENBLATT, F. The perceptron: a probabilistic model for information storage and organization in the brain. Psychological Review, 65(6), p. 386–408, 1958.
  • RUMELHART, D. E.; HINTON, G. E.; WILLIAMS, R. J. Learning representations by back-propagating errors. Nature, 323, p. 533–536, 1986.