在近期面试中,面试官考察了什么是目标函数以及对于目标函数的理解。为深入加强理解改知识点特此小记,也十分感谢知友 zzanswer 的回答。

0x01 损失函数 Cost Function

损失函数代价函数 其实是同一个东西,只不过称呼不同,以下皆用损失函数来表述。

以逻辑回归为例,我们要拟合一个函数:

Bias And Variance

上图分别是 $f_1(x)、f_2(x)、f_3(x)$ 三个拟合函数的图像,真实函数的输出值记为 $Y$ 。

其中,橙色的线是目标函数,蓝色的线是我们拟合的模型,蓝色的点是目标函数所给的样本点。

为了表示拟合程度的好坏,我们就需要构造一个函数去评价,比如:$L(Y, f(X)) = (Y-f(X))^2$ 。

其中, $L(Y, f(X))$ 就是我们的 损失函数 (Loss Function),也可以称作 代价函数 (Cost Function)。

损失函数的值越小,表示模型拟合的越好。

在上图,我们用的 损失函数MSE(Mean Square Error,均方差),可见中间那幅图的 MSE 值最小,即 损失函数 的值最小,所以中间那幅图拟合函数的拟合程度最好。

所以我们优化的目标就是让 Loss Function 值最小

并不完全是。

这个时候还有一个概念叫 风险函数 (Risk Function)。

风险函数是损失函数的期望。这是由于我们输入输出的 $(X,Y)$ 遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。

但是我们有历史数据,即我们的训练集,函数 $f(X)$ 关于训练集的平均损失称作 经验风险 (Empirical Risk),即

$$\frac{1}{N}\sum_{i=1}^{n}L(y_i, f(x_i))$$

所以我们的目标就是最小化上面的式子,称为 经验风险最小化

0x02 目标函数 Object Function

如果拟合一个函数只考虑 经验风险最小化 ,则会过犹不及,比如上图最右边的函数,几乎经过每一个样本点,损失函数几乎为 0 ,但拟合的函数与真实函数相去甚远。简单点说,拟合函数的最高阶都达到 15 次方,函数已经变得很复杂了。

这是因为我们的模型过度学习,导致模型复杂度变高且在测试集上预测效果不好,这种情况就叫做 过拟合(Overfitting)。

因此,我们要引入一个结构风险函数 $J(x)$ 来控制我们拟合函数的复杂度,使我们的 结构风险最小化 。在机器学习中, $J(x)$ 也叫做正则化(Regularization),常用的有 $L_1$ 、 $L_2$ 正则。

那么目标函数的表现形式也就出来了:

$$\frac{1}{N}\sum_{i=1}^{n}L(y_i, f(x_i)) + \lambda J(f)$$

优化目标函数也就是优化上面的式子——使其函数值最小,于是我们就知道,拟合一个函数不仅要 经验风险最小化 ,也要 结构风险最小化

以开始的三幅图为例:

图一的 $f_1(x)$ 结构风险够小(模型简单),但经验风险不够小(拟合效果差,准确度不高)。

图二的 $f_2(x)$ 结构风险适中(模型复杂度适中),经验风险够小(拟合效果不错,准确度较高)。

图三的 $f_3(x)$ 结构风险太大(模型复杂),但经验风险很小(过度拟合样本数据,测试集准确度低)。

和开头的例子一样,在现实生活中,鱼和熊掌不可兼得,那么我们势必要在这两者中做一个 trade off使得拟合函数性能优异,目标函数最小

0x03 Reference

[1] 李航. 统计方法学

[2] Underfitting vs. Overfitting - scikit-learn.org

[3] 机器学习中的目标函数、损失函数、代价函数有什么区别? - 知乎