文章目录
插眼:
- 百面机器学习—1.特征工程
- 百面机器学习—2. 特征工程与模型评估要点总结
- 百面机器学习—3.逻辑回归与决策树要点总结
- 百面机器学习—4.SVM模型基础知识
- 百面机器学习—5.SVM要点总结
- 百面机器学习—6.PCA与LDA要点总结
- 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
- 百面机器学习—8.概率图模型之HMM模型
- 百面机器学习—9.前馈神经网络面试问题总结
- 百面机器学习—10.循环神经网络面试问题总结
- 百面机器学习—11.集成学习(GBDT、XGBoost)面试问题总结
- 百面机器学习—12.优化算法
引言
机器学习算法=模型表征+模型评估+优化算法,优化算法所做的事就是在模型表征空间中找到模型评估指标最好的模型。
一、损失函数
损失函数定义了模型评估指标,不同的损失函数优化难度不同,同时,针对不同的问题也需要选择合适的损失函数。在实际应用中,选取损失函数会受到诸多因素的制约,比如是否有异常值、机器学习算法的选择、梯度下降的时间复杂度、求导的难易程度以及预测值的置信度等等。因此,不存在一种损失函数适用于处理所有类型的数据。
1.回归问题损失函数
这一部分参考机器学习大牛最常用的5个回归损失函数,你知道几个?。这一部分掌握MSE、MAE、Huber损失函数就可以,后面两种略作了解。它们三者的关系是MAE相对于MSE对异常点更鲁棒,但是MAE在转折点出不可导。综合考虑可导性与对异常点的鲁邦性,可以采用Huber损失函数。这个损失函数在残差较小时为平方损失,其余情况为线性损失,处处可导,并且对异常点鲁棒。
1.1 均方误差—MSE(L2损失)
均方误差是预测值与真实值之差平方的期望值,是最常用的回归损失函数
M S E = 1 n ∑ i = 1 n ( y i − y i p ) 2 MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-y_{i}^{p})^2 MSE=n1i=1∑n(yi−yip)2
1.2 均方根误差—RMSE
均方根误差是均方误差的算术平方根
R M S E = 1 n ∑ i = 1 n ( y i − y i p ) 2 RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-y_{i}^{p})^2} RMSE=n1i=1∑n(yi−yip)2
1.3 平均绝对值误差—MAE(L1损失)
MAE是目标值和预测值之差的绝对值之和。其只衡量了预测值误差的平均模长,而不考虑方向。MAE对异常点更鲁棒一点,但是在转折点出无法求导数。
M A E = 1 n ∑ i = 1 n ∣ y i − y i p ∣ MAE=\frac{1}{n}\sum_{i=1}^{n}|y_i-y_{i}^{p}| MAE=n1i=1∑n∣yi−yip∣
1.4 Huber损失函数—平滑的平均绝对误差
在引出Huber损失之前,我们先比较一下MSE与MAE对于异常值的处理。MAE相对于MSE来说,对异常点有更好的鲁棒性。MSE对误差取了平方,MAE对误差取了绝对值,如果数据存在异常点的话,平方造成的影响远大于绝对值。然而MAE存在一个严重的问题(特别是对于神经网络),更新的梯度始终相同,也就是说,即使对于很小的损失值,梯度也很大。这样不利于模型的学习。总而言之,处理异常点时,L1损失函数更稳定,但它的导数不连续,因此求解效率较低。L2损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。但是在某些情况下,上述两种损失函数都不能满足需求。
例如,若数据中90%的样本对应的目标值为150,剩下10%在0到30之间。那么使用MAE作为损失函数的模型可能会忽视10%的异常点,而对所有样本的预测值都为150。这是因为模型会按中位数来预测。而使用MSE的模型则会给出很多介于0到30的预测值,因为模型会向异常点偏移。上述两种结果在许多商业场景中都是不可取的。
这是就用到了Huber损失函数。
Huber损失对数据中的异常点没有平方误差损失那么敏感。它在0也可微分。本质上,Huber损失是绝对误差,只是在误差很小时,就变为平方误差。误差降到多小时变为二次误差由超参数δ(delta)
来控制。当Huber损失在[0-δ,0+δ]
之间时,等价为MSE,而在[-∞,δ]和[δ,+∞]
时为MAE。
这里超参数delta的选择非常重要,因为这决定了你对与异常点的定义。当残差大于delta,应当采用L1(对较大的异常值不那么敏感)来最小化,而残差小于超参数,则用L2来最小化。
为何要使用Huber损失?
使用MAE训练神经网络最大的一个问题就是不变的大梯度,这可能导致在使用梯度下降快要结束时,错过了最小点。而对于MSE,梯度会随着损失的减小而减小,使结果更加精确。在这种情况下,Huber损失就非常有用。它会由于梯度的减小而落在最小值附近。比起MSE,它对异常点更加鲁棒。因此,Huber损失结合了MSE和MAE的优点。但是,Huber损失的问题是我们可能需要不断调整超参数delta。
1.5 Log-Cosh损失
Log-cosh是另一种应用于回归问题中的,且比L2更平滑的的损失函数。它的计算方式是预测误差的双曲余弦的对数。
优点:对于较小的 x x x, l o g ( c o s h ( x )