一、损失函数有什么用:
-
损失函数是损失J相对于参数值w、b的函数。
-
损失函数用来衡量真实值与预测值之间的差异。
- 在训练阶段,通过计算模型在整个训练集上的训练损失(真实值与预测值的差异)获得各个参数组合情况下的损失,从而生成损失函数曲线,就找到了使得损失最小的参数值组合(使得参数更好的拟合训练数据)。
-
对于单个参数的模型y=wx,损失函数曲线如下,此时损失函数J是关于w的一维函数。
-
对于两个参数的模型y=wx+b,损失函数曲线如下,此时损失函数J是关于w、b的二维函数。
-
该三维图像还可以用二维等高线图表示如下,每一个椭圆形表示的是3D图像上处于完全相同高度的点,即对于损失函数具有相同值的点集。
-
等高线图中,不难理解,椭圆越大越靠近图像边缘相应的损失值越大,椭圆越小越靠近图像中心相应的损失值越小。
二、上述思想存在的问题:引出梯度下降
理论上通过遍历计算所有参数组合(w,b)情况下的损失从而形成损失函数,确实可以根据损失函数直观地获得使得损失最小的参数值组合,时间复杂度O(1),但是这只适用于简单的问题,对于复杂的模型和大量的参数,遍历计算所有参数组合的损失时间开销非常大,所以引入了梯度下降算法,不再采取遍历的方式,而是通过使用梯度下降算法一步步的调整参数组合值使得损失尽量小(上帝视角看就是使用梯度下降使得当前选择的w、b不断趋近于等高线图中心,ps:但是使用梯度下降算法时实际上损失函数图像和等高线图并不知道,因为损失函数图像和等高线图是通过遍历的方式画出来的。)
三、常用损失函数:
1.均方损失函数:
- 损失 = 真实值-预测值的平方
- 1/2的作用是幂函数求导时可以与落下的2抵消,方便计算。
- 当预测值距真实值较大,梯度较大;越接近真实值,梯度越小。
2.绝对值损失函数:
- 损失 = 真实值-预测值的绝对值
- 当预测值距真实值较大,梯度为常数;越接近真实值,梯度变化不稳定。
3.Huber’s Robust损失函数:
- 结合均方损失和绝对值损失优点
- 当预测值距真实值较大,梯度为常数;越接近真实值,梯度越小。