机器学习-损失函数

点击量:1098

一般来说,我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化。在机器学习中,这种函数被称为损失函数(loss function)、代价函数(cost function)或者目标函数(objective function)。本文主要介绍以下三种最常见的loss function。

Square Loss

全称应该是Mean Squared Error,也就是最小二乘法,这个是最简单的,它公式如下:

$$
\ell = \frac{1}{m} \sum_{i=1}^{m}(y_i – \hat{y_i})^2
$$

TensorFlow函数:tf.losses.mean_squared_error

Hinge loss

主要用于SVM,它的公式如下:

$$
\ell= \max(0, 1- \hat{y} \cdot y)
$$
其中,\(y\)是label,\(\hat{y}\)是预测值,两者的取值范围都是\(y,\hat{y} \in \{-1,1\}\)。观察上述公式可以发现:当预测值和真实值相等时\(\ell=0\);不等时\(\ell=2\),因此可以作为loss function。

TensorFlow函数:tf.losses.hinge_loss

Log Loss

对数损失,它的定义如下:

$$
\ell = -\frac{1}{m} \sum_{i=1}^{m} \sum_{j=1}^{n} y_{i,j} \log(p_{i,j})
$$

\(m\)表示样本个数;\(n\)表示label个数;\(p_{i,j}\)表示预测第\(i\)个样本是属于第\(j\)个分类的概率。当\(n=2\)时,就变成一个二元分类问题,他可以简化成:

$$
\ell =-\frac{1}{m}\left [ \sum_{i=1}^{m}y_{i}\log h_{\theta}(x_{i}) + (1-y_{i})\log(1-h_{\theta}(x_{i})) \right ]
$$
这个其实就是逻辑回归的cost function了,它也可以通过极大似然估计推导得出的。此外,这个公式其实也是交叉熵(cross entropy )在损失函数中的一个应用。假设有两个分布\(p\),\(q\),则它们在给定样本集上的交叉熵定义如下:

$$
H(p,q)=-\sum _{x}p(x)\,\log q(x)
$$

TensorFlow函数:tf.losses.log_loss

还有一点,我们会经常在TensorFlow里遇到这两个函数:tf.losses.sigmoid_cross_entropytf.losses.softmax_cross_entropy
他们是cross_entropy和activation function的组合,代表什么意思呢?其实就是把上面公式中的\(h_{\theta}\)换成了sigmoid和softmax而已。

其余不太常用的loss function本文就不再细说了,比如用于Robust Regression的Huber loss;主要用于Adaboost的指数损失函数;还有绝对值损失函数,0-1损失函数等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注