损失函数

Dec 29, 2024
2 views
Deep Learning

机器学习

Hinge Loss

Hinge的叫法来源于其损失函数的图形,为一个折线,通用函数方式为:

\[ L(m_i) = max(0,1-m_i(w)) \]

Hinge可以解 间距最大化 问题,带有代表性的就是svm,最初的svm优化函数如下:

\[ \underset{w,\zeta}{argmin} \frac{1}{2}||w||^2+ C\sum_i \zeta_i \\ st.\quad \forall y_iw^Tx_i \geq 1- \zeta_i \\ \zeta_i \geq 0 \]

将约束项进行变形则为:

\[ \zeta_i \geq 1-y_iw^Tx_i \]

则可以将损失函数进一步写为:

\[ \begin{aligned}J(w)&=\frac{1}{2}||w||^2 + C\sum_i max(0,1-y_iw^Tx_i) \\ &= \frac{1}{2}||w||^2 + C\sum_i max(0,1-m_i(w)) \\ &= \frac{1}{2}||w||^2 + C\sum_i L_{Linge}(m_i) \end{aligned} \]

因此svm的损失函数可以看成L2-Norm和Hinge损失误差之和.

交叉熵

从熵来看交叉熵损失

信息量

信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。

设𝑋是一个离散型随机变量,其取值为集合\(X=x_0,x_1,…,x_n\) ,则其概率分布函数为\(p(x)=Pr(X=x),x∈X\),则定义事件\(𝑋=𝑥_0\) 的信息量为

\[ I(x_0) = -\log(p(x_0)) \]

\(𝑝(𝑥_0)=1\)时,该事件必定发生,其信息量为0.

熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。

信息量是衡量某个事件的不确定性,而熵是衡量一个系统(所有事件)的不确定性

熵的计算公式

\[ H(x) = -\sum_{i=1}^np(x_i)\log(p(x_i)) \]

其中,\(𝑝(𝑥_𝑖)\)为事件\(𝑋=𝑥_𝑖\)的概率,\(−log(p(x_i))\)为事件\(𝑋=𝑥_𝑖\)的信息量。

可以看出,熵是信息量的期望值,是一个随机变量(一个系统,事件所有可能性)不确定性的度量。熵值越大,随机变量的取值就越难确定,系统也就越不稳定;熵值越小,随机变量的取值也就越容易确定,系统越稳定。

相对熵 Relative entropy

相对熵也称为KL散度(Kullback-Leibler divergence),表示同一个随机变量的两个不同分布间的距离

设$ 𝑝(𝑥),𝑞(𝑥)$ 分别是 离散随机变量𝑋的两个概率分布,则\(𝑝\)\(𝑞\)的相对熵是:

\[ D_{KL}(p \parallel q) = \sum_i p(x_i) log(\frac{p(x_i)}{q(x_i)}) \]

相对熵具有以下性质:

  • 如果和的分布相同,则其相对熵等于0
  • \(𝐷_{𝐾𝐿}(𝑝∥𝑞)≠𝐷_{𝐾𝐿}(𝑞∥𝑝)\),也就是相对熵不具有对称性。
  • \(𝐷_{𝐾𝐿}(𝑝∥𝑞)≥0\)
    总的来说,相对熵是用来衡量同一个随机变量的两个不同分布之间的距离。在实际应用中,假如\(p(x)\)是目标真实的分布,而𝑞(𝑥)是预测得来的分布,为了让这两个分布尽可能的相同的,就需要最小化KL散度。

交叉熵 Cross Entropy

设$ 𝑝(𝑥),𝑞(𝑥)\(分别是 离散随机变量𝑋的两个概率分布,其中\)𝑝(𝑥)\(是目标分布,\)𝑝\(和\)𝑞\(的交叉熵可以看做是,使用分布\)𝑞(𝑥)$ 表示目标分布\(𝑝(𝑥)\)的困难程度:

\[ H(p,q) = \sum_ip(x_i)log\frac{1}{\log q(x_i)} = -\sum_ip(x_i)\log q(x_i) \]

将熵、相对熵以及交叉熵的公式放到一起,

\[ \begin{aligned} H(p) &= -\sum_{i}p(x_i) \log p(x_i) \\ D_{KL}(p \parallel q) &= \sum_{i}p(x_i)\log \frac{p(x_i)}{q(x_i)} = \sum_i (p(x_i)\log p(x_i) - p(x_i) \log q(x_i)) \\ H(p,q) &= -\sum_ip(x_i)\log q(x_i) \end{aligned} \]

通过上面三个公式就可以得到

\[ D_{KL}(p,q) = H(p,q)- H(p) \]

在机器学习中,目标的分布\(𝑝(𝑥)\) 通常是训练数据的分布是固定,即是\(𝐻(𝑝)\) 是一个常量。这样两个分布的交叉熵\(𝐻(𝑝,𝑞)\)也就等价于最小化这两个分布的相对熵\(𝐷_{𝐾𝐿}(𝑝∥𝑞)\)

\(𝑝(𝑥)\) 是目标分布(训练数据的分布),我们的目标的就让训练得到的分布\(𝑞(𝑥)\)尽可能的接近\(𝑝(𝑥)\),这时候就可以最小化\(𝐷_{𝐾𝐿}(𝑝∥𝑞)\),等价于最小化交叉熵\(𝐻(𝑝,𝑞)\) 。

从最大似然看交叉熵

设有一组训练样本\(𝑋={𝑥_1,𝑥_2,⋯,𝑥_𝑚}\) ,该样本的分布为\(𝑝(𝑥)\) 。假设使用\(\theta\)参数化模型得到\(𝑞(𝑥;\theta)\) ,现用这个模型来估计𝑋的概率分布,得到似然函数

\[ L(\theta) = q(X; \theta) = \prod_i^mq(x_i;\theta) \]

最大似然估计就是求得𝜃 使得𝐿(𝜃) 的值最大,也就是

\[ \theta_{ML} = arg \max_{\theta} \prod_i^mq(x_i;\theta) \]

对上式的两边同时取log ,等价优化log 的最大似然估计即log-likelyhood ,最大对数似然估计

\[ \theta_{ML} = arg \max_\theta \sum_i^m \log q(x_i;\theta) \]

对上式的右边进行缩放并不会改变𝑎𝑟𝑔max 的解,上式的右边除以样本的个数𝑚

\[ \theta_{ML} = arg \max_\theta \frac{1}{m}\sum_i^m\log q(x_i;\theta) \]

和相对熵等价

上式的最大化\(θ_{ML}\) 是和没有训练样本没有关联的,就需要某种变换使其可以用训练的样本分布来表示,因为训练样本的分布可以看作是已知的,也是对最大化似然的一个约束条件。

注意上式的

\[ \frac{1}{m}\sum_i^m\log q(x_i;\theta) \]

相当于求随机变量𝑋 的函数logq(𝑋;𝜃) 的均值 ,根据大数定理,随着样本容量的增加,样本的算术平均值将趋近于随机变量的期望。 也就是说

\[ \frac{1}{m}\sum_i^m \log q(x_i;\theta) \rightarrow E_{x\sim P}(\log q(x;\theta)) \]

其中\(𝐸_{𝑋∼𝑃}\) 表示符合样本分布𝑃 的期望,这样就将最大似然估计使用真实样本的期望来表

\[ \begin{aligned} \theta_{ML} &= arg \max_{\theta} E_{x\sim P}({\log q(x;\theta)}) \\ &= arg \min_{\theta} E_{x \sim P}(- \log q(x;\theta)) \end{aligned} \]

对右边取负号,将最大化变成最小化运算。

\[ \begin{aligned} D_{KL}(p \parallel q) &= \sum_i p(x_i) log(\frac{p(x_i)}{q(x_i)})\\ &= E_{x\sim p}(\log \frac{p(x)}{q(x)}) \\ &= E_{x \sim p}(\log p(x) - \log q(x)) \\ &= E_{x \sim p}(\log p(x)) - E_{x \sim p} (\log q(x)) \end{aligned} \]

由于\(𝐸_{𝑥∼𝑝}(log𝑝(𝑥))\) 是训练样本的期望,是个固定的常数,在求最小值时可以忽略,所以最小化\(𝐷_{𝐾𝐿}(𝑝∥𝑞)\) 就变成了最小化$−E_{x∼p}(log⁡q(x)) $,这和最大似然估计是等价的。

和交叉熵等价

最大似然估计、相对熵、交叉熵的公式如下

\[ \begin{aligned}\theta_{ML} &= -arg \min_\theta E_{x\sim p}\log q(x;\theta) \\D_{KL} &= E_{x \sim p}\log p(x) - E_{x \sim p} \log q(x) \\H(p,q) &= -\sum_i^m p(x_i) \log q(x_i) = -E_{x \sim p} \log q(x)\end{aligned}\begin{aligned}\theta_{ML} &= arg \min_\theta E_{x\sim p}\log q(x;\theta) \\D_{KL} &= E_{x \sim p}\log p(x) - E_{x \sim p} \log q(x) \\H(p,q) &= -\sum_i^m p(x_i) \log q(x_i) = -E_{x \sim p} \log q(x)\end{aligned} \]

从上面可以看出,最小化交叉熵,也就是最小化\(𝐷_{𝐾𝐿}\) ,从而预测的分布𝑞(𝑥) 和训练样本的真实分布𝑝(𝑥) 最接近。而最小化\(𝐷_{𝐾𝐿}\) 和最大似然估计是等价的。

交叉熵优点

假设有一个带可学习的权值w和偏置b的神经元,输入x,输出为z,即\(z=wx+b\),然后使用sigmoid函数激活,那么最终的输出如下,其中\(σ(z)=\frac{1}{1+e^{−z}}\)为sigmoid函数,\(a=\sigma(z)\)

交叉熵代价函数的定义如下

\[ C = -\frac{1}{n} \sum_x \left[y \ln a + (1-y ) \ln (1-a) \right] \]

利用链式法则进行求导分析

\[ \frac{\partial C}{\partial w_j} = -\frac{1}{n} \sum_x \left( \frac{y }{\sigma(z)} -\frac{(1-y)}{1-\sigma(z)} \right) \frac{\partial \sigma}{\partial w_j} \\ = -\frac{1}{n} \sum_x \left( \frac{y}{\sigma(z)} -\frac{(1-y)}{1-\sigma(z)} \right)\sigma’(z) x_j \ =\frac{1}{n} \sum_x \frac{\sigma’(z) x_j}{\sigma(z) (1-\sigma(z))} (\sigma(z)-y) \]

此外,还应注意到\(σ(z)\)的导数化简后具有很简洁的形式

\[ \sigma’(z) = (\frac{1}{1+e^{-z}})’ = \frac{e^{-z}}{(1+e^{-z})^2} \ = (1-\frac{1}{1+e^{-z}}) \frac{1}{1+e^{-z}} = (1-\sigma(z))\sigma(z) \]

最终可以得到非常简洁的化简结果

\[ \frac{\partial C}{\partial w_j} = \frac{1}{n} \sum_x x_j(\sigma(z)-y) \]

同理可得到对\(b_j\)的偏导数

\[ \frac{\partial C}{\partial b} = \frac{1}{n} \sum_x (\sigma(z)-y) \]

当我们使用交叉熵作为代价函数时,由于\(σ(z)\)导数的特殊形式,可以抵消交叉熵代价函数的导数中\(σ′(z)\)这一项,从而避免了某些情况下\(σ(z)\)进入饱和区而导致梯度消失的情况。此外,当误差较大时,也就是\(σ(z)−y\) 较大时,其梯度也较大,从而可以实现误差较大时网络的学习速率也较快,从而加速网络的收敛。

因此,在处理分类问题上,我们通常选择交叉熵作为网络的代价函数。