损失函数,及其优化方法
什么是损失函数? (去计算损失值的函数)
损失函数,也称为代价函数,是一个用来衡量机器学习模型预测结果与真实值之间差距的函数。
任务类型 | 默认首选损失函数 | 关键考量 |
---|---|---|
回归 | 均方误差 (MSE) | 最通用。如果数据中有很多异常值,考虑 MAE 或 Huber Loss。 |
二分类 | 二分类交叉熵 (BCE) | 与Sigmoid激活函数配对使用。 |
多分类 | 多分类交叉熵 (CE) | 绝对主流,与Softmax激活函数配对使用。 |
SVM分类 | 合页损失 (Hinge) | SVM的专属损失。 |
类别极端不平衡 | Focal Loss | 基于交叉熵改进,是解决不平衡问题的“高级武器”。 |
小结:交叉熵损失因其能提供与误差直接成正比的强大梯度,彻底解决了分类模型中使用Sigmoid/Softmax层时带来的梯度消失问题,从而极大地加快了训练速度,这是它成为绝对主流的根本原因。
为什么交叉熵损失就非常适合分类问题,均方误差MSE很适合回归问题呢?
特性 | 均方误差 (MSE) | 交叉熵 (Cross-Entropy) |
---|---|---|
任务 | 回归 (预测连续值) | 分类 (预测概率分布) |
梯度性质 | 梯度与误差 | 梯度与误差 |
核心优势 | 优化过程稳定,符合高斯噪声假设 | 为分类模型提供强大、有效的梯度,避免梯度消失 |
概率解释 | 等价于高斯分布下的最大似然估计 | 等价于多项分布下的最大似然估计 |
错误选择后果 | 在分类问题上导致训练缓慢甚至无法收敛 | 在回归问题上假设不对,且优化性质不佳 |
损失函数的优化方法有哪些,各自优缺点是什么,他们的应用范围是什么?(即 得到了损失值后怎么优化)
方法类别 | 代表算法 | 核心思想 | 优点 | 缺点 | 主要应用场景 |
---|---|---|---|---|---|
一阶迭代法 | 梯度下降及其变种(SGD, Adam) | 利用一阶导数(梯度)指引下降方向 | 简单、可扩展,适用于大规模问题 | 可能收敛慢、陷入局部最优 | 深度学习的主力军 |
二阶迭代法 | 牛顿法、L-BFGS | 利用二阶导数(曲率)提供更精确的更新方向和步长 | 收敛速度极快 | 计算成本极高,对大规模问题不可行 | 传统小规模机器学习模型 |
无导数方法 | 贝叶斯优化、进化算法 | 通过采样、概率模型或种群进化来搜索最优解,不依赖梯度 | 不要求可导,擅长全局搜索 | 计算成本高,收敛慢 | 超参数调优、NAS、强化学习、不可导问题 |
解析法 | 正规方程 | 直接令梯度为零解方程 | 一步得到精确解 | 仅适用于极少数有解析解的简单模型 | 线性回归 |