损失函数 (Loss Function):模型的“裁判”
损失函数是衡量模型预测结果与真实答案之间“差距”的标尺。这个“差距”就是损失 (Loss)。模型训练的目标就是通过调整权重,来让这个损失值变得尽可能小。可以说,损失函数就是指导模型学习方向的“裁判”。
均方误差 (Mean Squared Error, MSE)
适用场景:回归任务(预测连续值,如房价、温度)。
核心思想:计算每个预测值与真实值之差的平方,然后求平均。这就像测量每个预测点到真实点的“距离”,并且对“距离”远的预测给予更大的惩罚。
动手试试:
假设真实值是 50。拖动滑块来改变模型的预测值,观察误差和损失(均方误差)如何变化。
import numpy as np
y_true = 50
y_pred = 70.0
# 损失 = (y_pred - y_true)²
loss = np.square(y_pred - y_true)
print(f"误差: {y_pred - y_true:.1f}")
print(f"损失 (MSE): {loss:.2f}")
计算结果:
交叉熵 (Cross-Entropy)
适用场景:分类任务(预测离散类别,如猫、狗、鸟)。
核心思想:衡量模型预测的概率分布与真实的概率分布之间的“差异”。可以理解为,当真实答案揭晓时,模型有多“惊讶”。如果模型对正确答案的预测概率很低,说明它非常“惊讶”,损失就很大。
动手试试:
假设真实类别是“狗”。调整模型对三个类别的预测概率,观察交叉熵损失如何变化。当“狗”的概率接近100%时,损失最小。
import numpy as np
# 真实标签 (one-hot编码)
y_true = [0, 1, 0] # [猫, 狗, 鸟]
# 模型预测概率
y_pred = [0.10, 0.70, 0.20]
# 损失 = -Σ(y_true * log(y_pred))
loss = -np.sum(y_true * np.log(y_pred))
print(f"交叉熵损失: {loss:.4f}")
交叉熵损失
0.3567