Trilha 19 · Machine Learning

Classificação e o perceptron

Da regressão (prever um número) à classificação (prever uma categoria). O perceptron é o tijolo fundamental: um único neurônio que aprende a traçar uma linha entre duas classes.

① Intuição

Traçar a linha que separa

Em vez de prever um número, agora queremos decidir uma categoria: spam ou não, gato ou cachorro, aprovado ou reprovado. O perceptron faz isso traçando uma reta (em 2D) que separa as duas classes — pontos de um lado são uma classe, do outro lado a outra.

Ele começa com uma reta qualquer, geralmente errada. Então olha um ponto mal classificado e empurra a reta na direção dele — gira e desloca um pouquinho para acertá-lo. Repete com o próximo erro. Como num cabo de guerra, a fronteira se ajusta até todos os pontos ficarem do lado certo.

Inspiração biológica: o perceptron (Frank Rosenblatt, 1958) modela um neurônio: recebe sinais (entradas), pondera cada um (pesos sinápticos), soma, e "dispara" se a soma passa de um limiar. É a unidade que, empilhada em camadas, vira uma rede neural — mas sozinho ele só consegue fronteiras lineares.
② Visualização interativa

O perceptron aprende a fronteira

Cada passo seleciona um ponto mal classificado (anel amarelo) e ajusta os pesos para corrigi-lo — a fronteira preta gira e desliza. As regiões de fundo mostram o que o perceptron prevê em cada lado. Clique em "treinar" e veja-o convergir.

PESOS APRENDIDOS
w₁ = -1.00
w₂ = 0.30
viés b = 0.15
erros: 8 / 12
atualizações: 0

A cada passo o perceptron pega um ponto mal classificado (anel amarelo) e empurra a fronteira na direção dele. Para dados linearmente separáveis, é garantido que converge.

③ Explicação técnica

O modelo: soma ponderada + limiar

// O perceptron: o neurônio artificial mais simples (1958)

// Soma ponderada das entradas + viés, depois uma função degrau:
//   z = w₁·x₁ + w₂·x₂ + ... + b
//   saída = +1 se z ≥ 0, senão −1

def prever(w, b, x):
    z = sum(w[i]*x[i] for i in range(len(x))) + b
    return 1 if z >= 0 else -1

// A fronteira de decisão é onde z = 0:
//   w₁·x₁ + w₂·x₂ + b = 0   →  uma RETA (em 2D)
// De um lado a saída é +1, do outro −1.

A regra de aprendizado e seu limite

// Regra de aprendizado do perceptron

def treinar(dados, alpha=0.1):
    w = [0.0, 0.0]; b = 0.0
    while True:
        erros = 0
        for x, alvo in dados:
            if prever(w, b, x) != alvo:
                // empurra a fronteira na direção do ponto errado
                for i in range(len(w)):
                    w[i] += alpha * alvo * x[i]
                b += alpha * alvo
                erros += 1
        if erros == 0: break   // todos corretos → parou
    return w, b

// Teorema da convergência (Rosenblatt): se os dados forem
// linearmente separáveis, este laço SEMPRE termina.
// Se NÃO forem (ex: XOR), ele nunca para → limitação histórica.
O inverno da IA e o XOR: em 1969, Minsky e Papert provaram que um perceptron não consegue aprender a função XOR (pontos não linearmente separáveis). Isso esfriou o financiamento em redes neurais por anos. A solução só veio depois: empilhar camadas de neurônios e treiná-las com backpropagation — exatamente o tema da última lição desta trilha.
④ Projeto para programar

Construindo um classificador linear

Mini projeto: implemente o perceptron em Python para classificar duas classes 2D linearmente separáveis que você gerar. Plote a fronteira de decisão a cada época e conte quantas atualizações foram necessárias até convergir. Teste com classes mais próximas — a convergência fica mais lenta?

Projeto principal: rode seu perceptron no XOR e mostre que ele nunca converge (o número de erros nunca chega a zero). Depois troque o degrau pela função sigmoide e o critério de parada pela minimização do erro via gradiente — você terá uma regressão logística, que dá uma fronteira linear "suave" com probabilidades em vez de ±1.

Desafio extra: implemente um perceptron de margem máxima aproximando a ideia de SVM: em vez de qualquer reta separadora, busque a que fica mais distante dos pontos de ambas as classes. Compare visualmente as fronteiras: a do perceptron simples (qualquer uma que separe) vs. a de margem máxima (a mais "centrada"). Por que a segunda generaliza melhor?

⑤ Exercícios rápidos

Teste sua intuição

Que tipo de fronteira de decisão um perceptron produz?
Por que um único perceptron não aprende o XOR?
Como funciona a regra de aprendizado do perceptron?
⑥ Aplicações no mundo real

Onde você encontra isso

💳

Aprovação de crédito

Modelos lineares de classificação (regressão logística, primos diretos do perceptron) decidem aprovações de crédito e detectam transações suspeitas. São preferidos em finanças justamente por serem interpretáveis: o regulador pode auditar o peso de cada fator na decisão.

📰

Classificação de texto

Detectar idioma, marcar uma avaliação como positiva/negativa, filtrar conteúdo — muitas vezes começam com classificadores lineares sobre contagens de palavras. Simples, rápidos e surpreendentemente fortes como baseline antes de partir para modelos pesados.

🧱

O bloco das redes neurais

Cada neurônio de uma rede profunda É um perceptron com uma ativação suave. Bilhões deles, organizados em camadas, formam os modelos que reconhecem imagens e geram texto. Entender um perceptron é entender o tijolo de tudo que veio depois.

← Anterior: Regressão linear Próxima: Árvores de decisão →