损失函数:模型训练的指南针

上两篇文章,我们讲了线性回归和逻辑回归。

学到这里,你可能会问一个很自然的问题:

模型是怎么知道自己好不好?怎么调整参数让预测更准?

答案就在一个东西上——损失函数(Loss Function)
可以把它理解成:训练模型的指南针


1. 损失函数是什么

举个最简单的例子:

假设你在预测房价:

房屋面积房价(万元)
50100
60120
70140

你训练了一个模型,预测出的房价可能是:

房屋面积真实房价模型预测
50100105
60120118
70140145

你会发现,模型预测的每个值都和真实值有差距。
这些差距越大,说明模型越不准;差距越小,说明模型越准。

损失函数就是用来量化这种差距的。
它会给每个预测结果一个“错误分数”,让我们知道模型到底离目标有多远。


2. 线性回归常用的损失函数:均方误差(MSE)

线性回归里最常用的损失函数是 均方误差(Mean Squared Error, MSE)

MSE=1n∑i=1n(yi−y^i)2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

解释一下:

  • yiy_iyi 是真实值
  • y^i\hat{y}_iy^i 是模型预测值
  • nnn 是样本数量

公式里 (y_i - \hat{y}_i)^2 的意思很简单:
预测越偏离真实值,平方后的数越大,损失越大。

平方还能避免正负抵消的问题:误差都被当作正数看待。


3. 用 Python 算一算损失

继续用前面的房价例子:

import numpy as np

# 真实房价
y_true = np.array([100, 120, 140])

# 模型预测
y_pred = np.array([105, 118, 145])

# 均方误差
mse = np.mean((y_true - y_pred)**2)
print("均方误差 MSE =", mse)

运行结果大概是:

均方误差 MSE = 21.666666666666668

意思就是:平均每个预测值的平方误差是 21.67 万元²。
(单位没关系,主要是相对值越小越好)


4. 损失函数在训练里到底干什么

知道了损失函数以后,训练模型就容易理解了:

  1. 模型先用当前参数预测结果
  2. 损失函数算出预测和真实值的差距
  3. 根据差距调整参数,让损失变小
  4. 重复以上步骤,直到损失够小或达到最大训练次数

这就是梯度下降的原理,但你现在先不用管数学公式,本质就是:

“看看我错多少,错得多就调整多一点,错得少就调整少一点。”


5. 分类问题的损失函数:交叉熵

如果你现在用逻辑回归预测学生是否通过考试,损失函数就不一样了。

线性回归可以用 MSE,但分类问题要衡量概率预测和真实类别差距,最常用的是 交叉熵(Cross Entropy)

CE=−1n∑i=1n[yilog⁡(y^i)+(1−yi)log⁡(1−y^i)] CE = - \frac{1}{n} \sum_{i=1}^{n} \Big[ y_i \log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i) \Big] CE=n1i=1n[yilog(y^i)+(1yi)log(1y^i)]

解释一下:

  • yiy_iyi 只能是 0 或 1
  • y^i\hat{y}_iy^i 是模型预测属于正类的概率
  • 公式本质是惩罚模型预测概率离真实类别越远的情况

举个直观理解:

  • 真实是 1,模型预测 0.9 → 损失很小
  • 真实是 1,模型预测 0.1 → 损失很大

所以交叉熵告诉模型:“你越自信但越错,惩罚越大。”


6. Python 示例:逻辑回归里的交叉熵

import numpy as np

# 真实标签
y_true = np.array([1, 0, 1])

# 模型预测的概率
y_pred = np.array([0.9, 0.2, 0.4])

# 交叉熵
ce = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
print("交叉熵损失 =", ce)

输出大概是:

交叉熵损失 = 0.364

解释:损失越小,说明模型预测越接近真实类别。


7. 损失函数的直观理解

可以把损失函数想象成 指南针或仪表盘

  • 数字大 → 模型离目标远 → 需要调整参数
  • 数字小 → 模型预测接近真实值 → 调整幅度小

在训练过程中,模型就是沿着“损失最小的方向”慢慢调整参数,直到找到最合适的组合。


8. 总结

  • 损失函数是训练模型的标准:告诉模型自己预测得好不好
  • 回归问题常用 MSE,分类问题常用交叉熵
  • 损失函数越小,模型预测越准
  • 训练的过程,本质就是不断减小损失函数

当你理解了损失函数的作用,再去看梯度下降、优化算法、正则化,就更容易理解。

更多推荐