1、朴素贝叶斯--generative生成式模型
预设样本来自一个概率模型,受data影响较小,在data少时不一定会正确。类似GAN等有生成式模型的优势。
求联合分布概率
2、逻辑回归(二分类)--线性到概率--discriminative判别式模型
2.1计算样本加权和
类似线性回归
2.2 sigmoid映射
类似线性回归,二分类用sigmoid
2.3 损失函数
取交叉熵
原始分数-→取softmax转成和为1概率→取真实的yhat类别对应计算得到的概率→负对数→更新权重
交叉熵(负对数)越小,对应的概率越大,越预测正确,惩罚越小
Softmax 通常配合多分类交叉熵使用。对于真实标签 y(one-hot 向量,即正确类别位置为 1,其余为 0):
因为 y 只有正确那一位是 1,公式可简化为:
梯度推导结果(非常优雅):
即:预测概率减去真实标签。
2.4 L2正则优化
权重更新公式加上L2正则
2.5 多分类扩展
sigmoid改成softmax回归,取概率最大的那个
- 指数化 (ezi):把任意实数变成正数,同时放大数值之间的差异(让大的更大,小的更小,拉开差距)。
- 归一化 (除以总和):把所有正数压缩到 0~1 之间,并保证总和为 1。
什么时候用 Softmax?什么时候用 Sigmoid?
| 场景 | 推荐函数 | 理由 |
|---|---|---|
| 多分类(猫/狗/鸟,三选一) | Softmax | 输出概率互斥,总和为 1 |
| 多标签分类(一张图同时有猫和狗) | Sigmoid | 每个标签独立判断是/否,互不影响 |
| 二分类(是猫/不是猫) | Sigmoid | 只有一个概率值,不需要归一化多个类别 |
2.6局限性
逻辑回归是画一条直线,但是会存在分不开的情况,可以通过多个逻辑回归模块叠加实现。
前面的逻辑回归模块先做特征转化,最后一个逻辑回归模块做分类。
which means类神经网络
拓展
- 为什么不用线性回归的mse而是交叉熵
Cross Entropy(交叉熵) 和 Mean Squared Error(MSE,均方误差) 都是衡量模型预测与真实值之间差距的损失函数,但它们服务的任务类型完全不同:
| 对比维度 | Cross Entropy (交叉熵) | MSE (均方误差) |
|---|---|---|
| 适用任务 | 分类任务 | 回归任务 |
| 输出类型 | 概率分布(各类别的可能性,总和为 1) | 连续数值(可以是任意实数) |
| 核心公式 | ||
| 梯度特性 | 配合 Softmax,梯度呈线性,收敛快 | 配合 Sigmoid 时,梯度可能饱和导致收敛慢 |
| PyTorch 实现 | nn.CrossEntropyLoss() | nn.MSELoss() |
1. 为什么分类任务必须用交叉熵?
结合你之前学的反向传播,关键原因在于梯度。
如果强行用 MSE 做分类:
- 模型最后通常接 Sigmoid 或 Softmax 把输出压到 0~1 之间。
- 当模型预测非常离谱时(比如真值是 1,预测值是 0.01),Sigmoid 处于饱和区,其导数接近 0。
- MSE 的梯度 = 。因为 σ′(x)≈0,整个梯度趋近于 0,模型几乎不更新,学不动。
而交叉熵配合 Softmax 的梯度恰好消掉了饱和项,梯度变为 y^−y。预测越离谱,梯度越大,更新越猛,收敛极快。
2. 什么时候用哪个?
| 场景 | 推荐损失函数 | 理由 |
|---|---|---|
| 图像分类(猫/狗/鸟) | Cross Entropy | 输出是互斥的类别概率 |
| 多标签分类(一张图同时有猫和狗) | Binary Cross Entropy | 每个标签独立判断是/否 |
| 房价预测 | MSE | 输出是连续的金额 |
| 代码生成质量评分 | MSE | 预测分数是连续值 |
| 目标检测中的边框坐标 | MSE / L1 | 坐标是连续数值 |
3. 与你之前知识的串联
- 在反向传播中:交叉熵是分类网络反向传播的“第一推动力”,它决定了
loss.backward()算出的梯度是否足够“有力”。 - 在 PyTorch 中:当你搭建一个分类模型(比如 MNIST 手写数字识别),最后一层是
nn.Linear(..., 10),损失函数就应该选nn.CrossEntropyLoss()。如果你错用了nn.MSELoss(),模型可能完全不收敛。 - 与 Softmax 的关系:
nn.CrossEntropyLoss()在 PyTorch 中已经内置了 Softmax,所以你模型的最后一层不需要手动加nn.Softmax(),直接输出原始 logits 即可。
4. 一个直观的例子
假设真实标签是 猫(类别1) :
| 模型预测 | Cross Entropy Loss | MSE Loss | 梯度反馈 |
|---|---|---|---|
| [猫:0.9, 狗:0.1] | 0.105(低) | 0.01(低) | 都认为“差不多对了” |
| [猫:0.1, 狗:0.9] | 2.30(高,猛罚) | 0.81(较高) | 交叉熵会剧烈更新,MSE 相对温和 |
| [猫:0.99, 狗:0.01] | 0.01(极低) | 0.0001(极低) | 都认为“几乎完美” |
可以看到,交叉熵对错误预测的“惩罚力度”更符合分类任务的需求——错得越离谱,罚得越重。
一句话总结:分类用交叉熵,回归用 MSE。 混用会导致梯度消失或收敛极慢,这是无数前人踩过的坑。---非凸优化
误差来源
| 算法 | 假设分布 | MLE 推导出的损失函数 |
|---|---|---|
| 最小二乘 (线性回归) | 误差 ϵ∼N(0,σ2) | 均方误差 MSE |
| 逻辑回归 (二分类) | 标签 y∼Bernoulli(p) | 交叉熵 Cross-Entropy |
| Softmax 回归 (多分类) | 标签 y∼Categorical(p) | 多分类交叉熵 |
假设模型为 ,且 。
这意味着给定 x,目标值 y 服从高斯分布:
标签 y∈{0,1},模型预测概率为 。
这意味着 y 服从伯努利分布
带正则化的损失函数 = 极大似然估计 + 对参数分布的先验假设
L2 正则化:假设参数 w 服从高斯分布(均值为 0)。
L1 正则化:假设参数 w 服从拉普拉斯分布(均值为 0)。
| 组合 | 拟合项 (似然) | 正则项 (先验) | 算法名称 |
|---|---|---|---|
| 高斯似然 + 高斯先验 | MSE | L2 | Ridge 回归 |
| 高斯似然 + 拉普拉斯先验 | MSE | L1 | Lasso 回归 |
| 伯努利似然 + 高斯先验 | 交叉熵 | L2 | 带正则化的逻辑回归 |