29 Jan 2026

Perceptron XOR

O problema XOR não pode ser resolvido por um perceptron simples, pois não é linearmente separável. Ao usar uma camada oculta, cada neurônio passa a representar uma operação lógica intermediária, como OR e AND. A combinação dessas ativações na camada de saída permite representar o comportamento não linear do XOR.

python
import torch
import torch.nn as nn

# entradas
entrada1 = 1
entrada2 = 1

# vieses
vies1 = torch.tensor([-0.5])   # OR
vies2 = torch.tensor([-1.5])   # AND
vies3 = torch.tensor([-0.5])   # saída

# pesos
peso1 = torch.tensor([1.0, 1.0])   # OR
peso2 = torch.tensor([1.0, 1.0])   # AND
peso3 = torch.tensor([1.0, -2.0])  # OR - AND

relu = nn.ReLU()
sig = nn.Sigmoid()

# camada oculta
oculta1 = relu(entrada1*peso1[0] + entrada2*peso1[1] + vies1)  # OR
oculta2 = relu(entrada1*peso2[0] + entrada2*peso2[1] + vies2)  # AND

# saída XOR
saida = sig(oculta1*peso3[0] + oculta2*peso3[1] + vies3)

print(saida)