机器学习
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}(logq(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\) 较大时,其梯度也较大,从而可以实现误差较大时网络的学习速率也较快,从而加速网络的收敛。
因此,在处理分类问题上,我们通常选择交叉熵作为网络的代价函数。