Propagação direta e funções de perda em Python
Uma rede neural é formada por camadas de neurônios. Na propagação direta, a entrada passa por cada camada para produzir uma previsão, e uma função de perda avalia o quanto essa previsão está longe da resposta certa.
O conceito em palavras simples
Uma rede neural é formada por camadas de neurônios. Na propagação direta, a entrada passa por cada camada para produzir uma previsão, e uma função de perda avalia o quanto essa previsão está longe da resposta certa.
Passe entradas camada por camada por uma pequena rede neural e meça o erro com o erro quadrático e a entropia cruzada.
Ideias principais
- Uma camada densa liga cada entrada a cada neurônio da camada.
- A saída de uma camada é a entrada da próxima.
- A perda é um único número, e quanto menor, melhores as previsões.
- Use o erro quadrático para números e a entropia cruzada para probabilidades e classes.
Quando usar?
- Entender o que acontece dentro das redes neurais e das bibliotecas de IA.
- Aprender a ideia antes de implementá-la nos desafios correspondentes.
- Se preparar para cursos de aprendizado de máquina, entrevistas e projetos.
Veja na prática
Mude as entradas e o alvo. Acompanhe os valores pela camada oculta e veja como as duas perdas reagem à previsão.
Código de exemplo
import math
def dense(inputs, weights, biases, activation):
# Each row of weights belongs to one neuron in the layer.
return [activation(sum(x * w for x, w in zip(inputs, row)) + b) for row, b in zip(weights, biases)]
relu = lambda z: max(0.0, z)
sigmoid = lambda z: 1 / (1 + math.exp(-z))
x = [1.0, 2.0]
hidden = dense(x, [[0.5, -0.2], [0.3, 0.8]], [0.0, -0.5], relu)
output = dense(hidden, [[1.0, -1.0]], [0.2], sigmoid)
print("hidden layer:", [round(h, 3) for h in hidden])
print("prediction:", round(output[0], 3))
# A loss function measures how wrong the prediction is.
target = 1.0
mse = (output[0] - target) ** 2
bce = -(target * math.log(output[0]) + (1 - target) * math.log(1 - output[0]))
print("squared error:", round(mse, 3))
print("cross-entropy:", round(bce, 3))
Saída esperada
hidden layer: [0.1, 1.4]
prediction: 0.25
squared error: 0.563
cross-entropy: 1.387
Como funciona
dense() calcula uma camada, em que cada linha de pesos é um neurônio. A camada oculta usa ReLU e a de saída usa sigmoid para dar uma probabilidade. O erro quadrático e a entropia cruzada medem a distância entre a previsão 0.25 e o alvo 1.0; o treinamento tenta reduzi-los.
Altere os valores e execute o programa no compilador Python online CodeUtility sem instalar Python.
Exercícios práticos
Altere as entradas e teste casos de borda antes de usar conjuntos de dados maiores.
- Mude as entradas ou os pesos e preveja a saída antes de executar.
- Imprima os valores intermediários para acompanhar cada passo do cálculo.
- Resolva os desafios indicados abaixo para implementar a ideia você mesmo.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- Propagação direta em uma camada densa Calcule as saídas de uma camada de neurônios totalmente conectada com a ativação que você escolher. Médio
- Propagação direta em uma rede de duas camadas Passe as entradas por uma camada oculta ReLU e uma camada de saída sigmoide. Médio
- Funções de perda: MSE, MAE e entropia cruzada Meça o quanto as previsões de um modelo estão erradas com o erro quadrático médio, o erro absoluto médio ou a entropia cruzada binária. Fácil