【机器学习】基本损失函数
参考:
基本损失函数
任务:衡量人脑与神经网络在判断一张图片是不是猫这个问题上的差异。
\(x_i\) 是人工打上的一个标签,
0
代表不是猫,1
代表是猫。\(y_i\) 是神经网络输出一个概率,表示这个图片是猫的概率。
\(W,b\) 是神经网络的参数,由参数得到一个 \(y_i\)。
1、最小二乘法
在上述问题中,最简单的方式就是直接比较人脑与神经网络的区别。
如果两个值相差的越小,就可以很直观的理解为这两个模型越相似。
对于一张图片人打上的标签是 \(x_1\) ,而神经网络跑出的结果是 \(y_1\),直接把他们相减,就是他们之间的相差有多大。
因为绝对值函数在零点可能会存在不可导的情况,因此我们对其平方,让他处处可到。
这是对于一张图片,刻画的差异程度,所有图片的差异程度加在一起,就可以量化人脑与神经网络在该问题上的差异。
当这一个值最小的时候,我们就可以认定人脑与神经网络这两个模型的差异最小。
从这个式子我们也可以看出为什么这个方法叫做最小二乘法
。
2、极大似然估计法
极大似然就是概率的反向应用。
2.1、似然值
我们知道在抛硬币问题中,硬币正面朝上,或者硬币反面朝上的概率都是0.5
。理想情况下,抛 10
次硬币获得的结果应该是 5
次朝上,5
次朝下。但实际情况却是各种情况都可能出现。
这是我们从理论去思考实践,如果我们已知抛出的硬币的情况,然后考虑概率模型是什么,这就是似然的过程。
如下图所示,抛 10
次硬币,正面朝上 7
次,反面朝上 3
次,左边三种概率模型都有可能得到。
但是这三种模型是不平等的,哪一种模型更有可能是该事件的模型呢?当事件,以及模型都确定时,我们是可以计算的。左边的式子中 \(\theta\) 表示的是某种确定的概率分布(如抛一次硬币,正面朝上的概率是 \(0.7\) ,反面朝上的概率是 \(0.3\))。\(c_{1\to10},\)表示的是抛了 \(10\) 次硬币,每次的情况。
整个左边表示的是在 \(\theta\) 这种概率分布下,发生抛 \(10\) 次抛出 \(c_{1\to10}\) 这样的结果发生的可能性。
真实的事件已经发生,我们假设它有很多的模型,在一个概率模型下,发生当前事件的可能性,就是这个概率模型的似然值。
下图就列举了,抛 \(10\) 枚硬币,发生的事件为 \(7\) 次为正, \(3\) 次为负,对应 3
种概率模型的似然值。
虽然我们可能永远都不知道准确的概率模型是什么,但是我们选似然值最高的模型,它也就最可能是准确的模型。这就是极大似然估计法。
极大似然估计法,适用于已知事件发生的结果,去反推事件原本的模型是什么。
2.2、神经网络与人脑似然
现在回到判断一个图片是不是猫这个问题上。
在抛硬币的问题中 \(c\) 表示抛硬币最终得到的结果,在图像识别问题中 \(x\) 就表示人打的标签(0
就不是猫, 1
就是猫)。
在抛硬币问题中 \(\theta\) 表示概率模型,在图像识别问题中 \(W,b\) 表示网络的参数,我们可以认为一组 \(W,b\) 可以确定一个描述图片是否为猫的概率模型。网络参数可以得到一个输出,表示神经网络认为图片是猫的概率。
其中 \(x \in \{0,1\}\),且
那么上式就可以化为
计算到这里其实就可以结束了,这里我们人为的加上 log
化乘为加
最终,最大化似然值,相当于最小化负对数似然:
3、交叉熵
3.1、信息量
在一种情况下能减少不确定性的任何事物都可称为信息。
信息量可以用来用来衡量一个事件发生的惊奇程度。
对于事件,我们用一个离散型随机变量来描述 \(X\) ,其概率密度函数为 \(p(X=x)\)。如果一个事件发生的可能性越小,但它却发生了,是不是就可以理解为这个事件带给我们的惊奇程度非常大。
所以当 \(p(x)\) 很小时,信息量应该会很大,再来理解信息量定义的公式:
由于\(0\le p(x)\le1\) ,所以需要有一个符号,使得\(信息量 \ge0\) 。
3.2、熵
熵是随机变量不确定度的度量。如果熵比较大,表示整个状态越难以预测,愈加的混乱。
注意:
- 信息量描述的是一个事件(\(X\) 的某一个取值),比如抛一次硬币结果为正面
- 而熵描述的是一个系统,一个随机变量(\(X\) 的所有取值),比如抛硬币这件事情。
在信息量的基础上,如何理解熵的定义呢?
如果简单的将随机变量的所有事件对应的信息量相加,定义得到的结果为熵,有没有问题呢?
比如一个二元事件
x=1 | x=0 |
---|---|
p(x=1) = 0.99 | p(x=0)=0.01 |
计算得到熵的结果为
再考虑另一个二元事件
x=1 | x=0 |
---|---|
p(x=1) = 0.5 | p(x=0)=0.5 |
计算得到熵的结果为
从直观的感受来说,上面事件整体带给我们的不确定性是非常小的,但是计算出来的熵的值却比下面要大。
这个时候我们再来看熵的定义式子:
在之前的基础上多乘了一个概率本身,可以理解为单个事件的信息量,对于整个事件熵贡献的权重。
规定 \(0\log0 =0\) ,因为加上 \(0\) 概率的项,不改变其熵的值。
\(H(X)\) 可以理解为信息量 \(-\log(p(x))\) 的期望值
3.3、相对熵
相对熵是两个随机分布之间的距离的度量。在统计学中,它对应的是似然比的对数期望。
相对熵 \(D(p||q)\) 度量当真实分布为 \(p\) 而假定分布为 \(q\) 时的无效性。
KL散度是用来度量使用基于Q的分布来编码服从P的分布的样本所需的额外的平均比特数
两个概率密度函数为 \(p(x)\) 和 \(q(x)\) 之间的相对熵或 \(KL\)距离 定义为:
可以证明,相对熵总是非负的,且当 \(p==q\) 时为零。
可以发现,由于 \(p(x)\) 表示的是真实的分布,那么他的熵是不变的,也就是推导最后的 \(-\sum -p(x)\log{p(x)}\) 是不变的。我们如果想要使得两个随机分布之间的距离最小化,也就是使得 \(\sum{-p(x)\log{q(x)} }\) 最小化。这个式子称为交叉熵。
3.4、交叉熵
给定两个概率分布 \(p,q\) ,\(p\) 相当于 \(q\) 的交叉熵定义为:
再回到我们最开始的问题中:
\(x_i\) 对应 \(p(x)\) 表示真实的概率分布,而 \(y_i\) 就表示估计的概率分布,我们用交叉熵来度量,真实的情况与估计的情况的偏差是多少。对于一张图片来说其交叉熵为
因为 \(x\) 只有 \(\{0,1\}\) 两种情况,对于整个数据集的 \(n\) 张图片,总的交叉熵就为: