前几天面试了一个互联网小公司的算法岗,结果面试官避开了所有的应用项目问题的考察转向对理论知识的考察,但我回答的不是很理想,所以承接着上一个博客和这个博客有可能还有下一个博客,好好的将机器学习中的基本理论知识透彻地总结一下。
损失函数一般的写法是L(y,f(x))L(y,f(x))L(y,f(x)),是指通过机器学习模型预测出来的样本的标签和样本真实的标签的某个不一致的度量。损失函数一般是越小越好。
在回归问题中,损失函数表示为:y−f(x)y-f(x)y−f(x);在分类问题中,表示为:yf(x)yf(x)yf(x)。
回归问题中的损失函数表示
回归问题的学习等价于函数拟合:选择一条函数曲线使其很好的拟合已知数据并很好地预测未知数据。所以回归问题中的yyy和f(x)f(x)f(x)均∈R\in{\mathbb{R}}∈R且用残差y−f(x)y-f(x)y−f(x)来度量回归问题的预测值和真实值的不一致程度。
1、均方误差损失(MSE,L2 loss)
均方误差损失又叫做L2L2L2损失,数学表达式如下:
L(y,y^)=1n∑i=1n(yi−f(xi))2.L(y,\hat{y})=\frac{1}{n}\sum_{i=1}^n(y_i-f(x_i))^2.L(y,y^)=n1i=1∑n(yi−f(xi))2.
这是最常见的损失函数,是凸函数,可以使用梯度下降法进行优化。但对于远离真实值的点相对来说比较敏感,损失函数的代价值很大,这造成了均方误差损失函数的鲁棒性变差。
2、绝对值损失(MAE,L1 Loss)
绝对值损失函数又叫做L1L1L1损失函数,数学表达式如下:
L(y,y^)=1n∑i=1n∣yi−f(xi)∣.L(y,\hat{y})=\frac{1}{n}\sum_{i=1}^n|y_i-f(x_i)|.L(y,y^)=n1i=1∑n∣yi−f(xi)∣.
绝对值损失函数对偏远点的处理相对均方误差来说很好,但是在y=f(x)y=f(x)y=f(x)处是不可导函数,并且MAEMAEMAE更新的梯度始终相同,在接近最优值处仍可能维持着较大的梯度而错过最优值。
3、 Huber损失函数
函数公式如下:
L(y,y^)={ 12∣y−f(x)∣2,if ∣y−f(x)∣≤δδ∣y−f(x)∣−12δ2,if ∣y−f(x)∣>δ.L(y,\hat{y})= \begin{cases} \frac{1}{2}|y-f(x)|^2,&\text{if} \ \ \ |y-f(x)|\le\delta \\ \delta|y-f(x)|-\frac{1}{2}\delta^2,&\text{if} \ \ \ |y-f(x)|>\delta \end{cases}.L(y,y^