机器学习入门(3):损失函数
损失函数:模型训练的指南针
上两篇文章,我们讲了线性回归和逻辑回归。
学到这里,你可能会问一个很自然的问题:
模型是怎么知道自己好不好?怎么调整参数让预测更准?
答案就在一个东西上——损失函数(Loss Function)。
可以把它理解成:训练模型的指南针。
1. 损失函数是什么
举个最简单的例子:
假设你在预测房价:
| 房屋面积 | 房价(万元) |
|---|---|
| 50 | 100 |
| 60 | 120 |
| 70 | 140 |
你训练了一个模型,预测出的房价可能是:
| 房屋面积 | 真实房价 | 模型预测 |
|---|---|---|
| 50 | 100 | 105 |
| 60 | 120 | 118 |
| 70 | 140 | 145 |
你会发现,模型预测的每个值都和真实值有差距。
这些差距越大,说明模型越不准;差距越小,说明模型越准。
损失函数就是用来量化这种差距的。
它会给每个预测结果一个“错误分数”,让我们知道模型到底离目标有多远。
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=1∑n(yi−y^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. 损失函数在训练里到底干什么
知道了损失函数以后,训练模型就容易理解了:
- 模型先用当前参数预测结果
- 损失函数算出预测和真实值的差距
- 根据差距调整参数,让损失变小
- 重复以上步骤,直到损失够小或达到最大训练次数
这就是梯度下降的原理,但你现在先不用管数学公式,本质就是:
“看看我错多少,错得多就调整多一点,错得少就调整少一点。”
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=1∑n[yilog(y^i)+(1−yi)log(1−y^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,分类问题常用交叉熵
- 损失函数越小,模型预测越准
- 训练的过程,本质就是不断减小损失函数
当你理解了损失函数的作用,再去看梯度下降、优化算法、正则化,就更容易理解。
更多推荐


所有评论(0)