【机器学习】基本损失函数

参考:

基本损失函数

任务:衡量人脑与神经网络在判断一张图片是不是猫这个问题上的差异。

xi 是人工打上的一个标签,0代表不是猫,1 代表是猫。

yi 是神经网络输出一个概率,表示这个图片是猫的概率。

W,b 是神经网络的参数,由参数得到一个 yi

image-20240418170321653

1、最小二乘法

在上述问题中,最简单的方式就是直接比较人脑与神经网络的区别。

如果两个值相差的越小,就可以很直观的理解为这两个模型越相似。

对于一张图片人打上的标签是 x1 ,而神经网络跑出的结果是 y1,直接把他们相减,就是他们之间的相差有多大。

|x1y1|

因为绝对值函数在零点可能会存在不可导的情况,因此我们对其平方,让他处处可到。

(x1y1)2

这是对于一张图片,刻画的差异程度,所有图片的差异程度加在一起,就可以量化人脑与神经网络在该问题上的差异。

i=1n(xiyi)2

当这一个值最小的时候,我们就可以认定人脑与神经网络这两个模型的差异最小。

mini=1n(xiyi)2

从这个式子我们也可以看出为什么这个方法叫做最小二乘法

2、极大似然估计法

极大似然就是概率的反向应用。

2.1、似然值

我们知道在抛硬币问题中,硬币正面朝上,或者硬币反面朝上的概率都是0.5。理想情况下,抛 10 次硬币获得的结果应该是 5 次朝上,5 次朝下。但实际情况却是各种情况都可能出现。

image-20240418181734252

这是我们从理论去思考实践,如果我们已知抛出的硬币的情况,然后考虑概率模型是什么,这就是似然的过程。

如下图所示,抛 10 次硬币,正面朝上 7 次,反面朝上 3 次,左边三种概率模型都有可能得到。

image-20240418182326086

但是这三种模型是不平等的,哪一种模型更有可能是该事件的模型呢?当事件,以及模型都确定时,我们是可以计算的。左边的式子中 θ 表示的是某种确定的概率分布(如抛一次硬币,正面朝上的概率是 0.7 ,反面朝上的概率是 0.3)。c110,表示的是抛了 10 次硬币,每次的情况。

整个左边表示的是在 θ 这种概率分布下,发生抛 10 次抛出 c110 这样的结果发生的可能性。

P(c1,c2,···,c10|θ)=i=110P(c1|θ)

真实的事件已经发生,我们假设它有很多的模型,在一个概率模型下,发生当前事件的可能性,就是这个概率模型的似然值。

下图就列举了,抛 10 枚硬币,发生的事件为 7 次为正, 3 次为负,对应 3 种概率模型的似然值。

image-20240418184142944

虽然我们可能永远都不知道准确的概率模型是什么,但是我们选似然值最高的模型,它也就最可能是准确的模型。这就是极大似然估计法。

极大似然估计法,适用于已知事件发生的结果,去反推事件原本的模型是什么。

2.2、神经网络与人脑似然

现在回到判断一个图片是不是猫这个问题上。

在抛硬币的问题中 c 表示抛硬币最终得到的结果,在图像识别问题中 x 就表示人打的标签(0就不是猫, 1 就是猫)。

在抛硬币问题中 θ 表示概率模型,在图像识别问题中 W,b 表示网络的参数,我们可以认为一组 W,b 可以确定一个描述图片是否为猫的概率模型。网络参数可以得到一个输出,表示神经网络认为图片是猫的概率。

P(c_1,c_2,···,c_{10}|\theta)  & = &  \prod_{i=1}^{10}{P(c_1|\theta)} \\P(x_1,x_2,···,x_{n}|W,b) &  = &  \prod_{i=1}^{n}{P(x_i|W,b)} \\& =  & \prod_{i=1}^{n}{P(x_i|y_i)} \\

其中 x{0,1},且

f(x)=px(1p)1x={p,x=11p,x=0

那么上式就可以化为

i=1nyixi(1yi)1xi

计算到这里其实就可以结束了,这里我们人为的加上 log 化乘为加

log(\prod_{i=1}^{n}{{y_i}^{x_i}(1-{y_i})^{1-{x_i}}}) \\&=& \sum_{i=1}^{n}{log({y_i}^{x_i}(1-{y_i})^{1-{x_i}})} \\&=& \sum_{i=1}^{n}[x_i\log{y_i} + (1-x_i)\log{(1-y_i)}] \\

最终,最大化似然值,相当于最小化负对数似然:

min(i=1n[xilogyi+(1xi)log(1yi)])

3、交叉熵

3.1、信息量

一种情况下能减少不确定性的任何事物都可称为信息。

信息量可以用来用来衡量一个事件发生的惊奇程度。

对于事件,我们用一个离散型随机变量来描述 X ,其概率密度函数为 p(X=x)。如果一个事件发生的可能性越小,但它却发生了,是不是就可以理解为这个事件带给我们的惊奇程度非常大。

所以当 p(x) 很小时,信息量应该会很大,再来理解信息量定义的公式:

log2p(X)

由于0p(x)1 ,所以需要有一个符号,使得0

3.2、熵

熵是随机变量不确定度的度量。如果熵比较大,表示整个状态越难以预测,愈加的混乱。

注意:

  • 信息量描述的是一个事件(X 的某一个取值),比如抛一次硬币结果为正面
  • 而熵描述的是一个系统,一个随机变量(X 的所有取值),比如抛硬币这件事情。

在信息量的基础上,如何理解熵的定义呢?

如果简单的将随机变量的所有事件对应的信息量相加,定义得到的结果为熵,有没有问题呢?

比如一个二元事件

x=1 x=0
p(x=1) = 0.99 p(x=0)=0.01

计算得到熵的结果为

H(X)=log20.99log20.016.6584

再考虑另一个二元事件

x=1 x=0
p(x=1) = 0.5 p(x=0)=0.5

计算得到熵的结果为

H(X)=log20.5log20.52


从直观的感受来说,上面事件整体带给我们的不确定性是非常小的,但是计算出来的熵的值却比下面要大。

这个时候我们再来看熵的定义式子:

H(X)=xXp(x)logp(x)

在之前的基础上多乘了一个概率本身,可以理解为单个事件的信息量,对于整个事件熵贡献的权重。

规定 0log0=0 ,因为加上 0 概率的项,不改变其熵的值。

H(X) 可以理解为信息量 log(p(x)) 的期望值

3.3、相对熵

相对熵是两个随机分布之间的距离的度量。在统计学中,它对应的是似然比的对数期望。

相对熵 D(p||q) 度量当真实分布为 p 而假定分布为 q 时的无效性。

KL散度是用来度量使用基于Q的分布来编码服从P的分布的样本所需的额外的平均比特数

两个概率密度函数为 p(x)q(x) 之间的相对熵或 KL距离 定义为:

D(p||q) &= &\sum_{x \in X} p(x)\log{\frac{p(x)}{q(x)}} \\&=&\sum_{x \in X}p(x)[\log{p(x)}-\log{q(x)}]\\&=&\sum_{x \in X}-p(x)\log{q(x)}-\sum_{x \in X}-p(x)\log{p(x)}

可以证明,相对熵总是非负的,且当 p==q 时为零。

可以发现,由于 p(x) 表示的是真实的分布,那么他的熵是不变的,也就是推导最后的 p(x)logp(x) 是不变的。我们如果想要使得两个随机分布之间的距离最小化,也就是使得 p(x)logq(x) 最小化。这个式子称为交叉熵。

3.4、交叉熵

给定两个概率分布 p,qp 相当于 q 的交叉熵定义为:

H(p,q)=xp(x)logq(x)=D(p||q)+H(p)

image-20240418170321653

再回到我们最开始的问题中:

xi 对应 p(x) 表示真实的概率分布,而 yi 就表示估计的概率分布,我们用交叉熵来度量,真实的情况与估计的情况的偏差是多少。对于一张图片来说其交叉熵为

H(xi,yi)=[xilogyi+(1xi)log(1yi)]

因为 x 只有 {0,1} 两种情况,对于整个数据集的 n 张图片,总的交叉熵就为:

H(x,y)=i=1n[xilogyi+(1xi)log(1yi)]


__EOF__

本文作者Hoppz
本文链接https://www.cnblogs.com/hoppz/p/18145417.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Hoppz  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示