损失函数与极大似然估计的联系 | 交叉熵的理解与变化

文章目录

  • 极大似然
  • 平方损失
    • 原文
    • 解析
  • 交叉熵
    • 原文
    • 解析
    • logistic的特殊化
    • 维度问题
  • 交叉熵的信息论理解
    • 原文
    • 解析
      • 信息量
      • 信息熵
      • 交叉熵
      • softmax+交叉熵

深度学习需要定义损失函数,其中,线性回归的损失函数是平方损失MSE,softmax回归(包括logistic回归)使用交叉熵,为什么会选择不同的损失函数,其中有什么原理?这就和最大似然有关系了。

极大似然

极大似然估计是,在已知分布,给定样本的情况下,求一个参数值,使得 P ( θ ∣ X ) P(\theta|X) P(θX)最大,即令样本拟合给定分布的概率最大,这恰好对应于我们深度学习中的目标:寻找最优化的w,b参数,令模型对结果的预测概率最大。

所以理论上来说,应该先进行极大似然估计,然后再从极大似然估计的公式中提取损失函数部分。

平方损失

原文

平方损失

解析

线性回归中,模型中有干扰噪声,这个噪声服从正态分布,那么已知分布,就可以对这个噪声进行极大似然估计。

首先写出噪声公式,然后这个噪声符合正态分布,这样就得到一个样本的噪声分布概率。

损失函数与极大似然估计的联系 | 交叉熵的理解与变化_第1张图片
将所有噪声的正态分布概率累乘,得到总体样本噪声的正态分布概率,让这个概率最大即可满足我们的模型假设:在线性回归中噪声服从正态分布。

在这里插入图片描述
要让P最大,那就得令右边的损失项最小。
在这里插入图片描述

交叉熵

原文

交叉熵损失

解析

假设有三个类型,那么经过softmax计算,结果已经归一化为概率预测。
归一化以后的数据,已经没有了所谓模型分布的假设,那应该取什么为似然概率呢?

粗暴一点,直接一点,对于一个样本,我们不假设分布,直接用对应项的预测概率作为P,比如对于单热点编码为(0,1,0)的项,那预测向量(0.1,0.7,0.2)中的第二项就是P,对于单热点编码为(0,0,1)的项,预测向量为(0.5,0.2,0.3)中的第三项就是P。我们要做的,就是让P最大,越接近1越好。

那为什么还要用交叉熵这个公式呢?这是因为你不知道到底哪项是你要的P值,单热点编码中的0与1就可以实现自动选择,将我们要的P值选出来。原理也很简单,因为交叉熵每一项的系数都是单热点编码值,只有一个是1,其他都是0,最后就只剩下1项,就是我们的目标项。

比如(0.1,0.7,0.2) (0,1,0),这两个用交叉熵以后, 1 × l o g ( 0.7 ) + 0 × l o g ( 0.2 ) + 0 × l o g ( 0.1 ) = l o g ( 0.7 ) 1\times log(0.7)+0\times log(0.2)+0\times log(0.1)=log(0.7) 1×log(0.7)+0×log(0.2)+0×log(0.1)=log(0.7),发现没,最后只剩一项log( P ),log是单调的,所以log ( P )就可以代表P的大小。

至于所有样本的P,自然是累乘,经过log对数化后,将所有项的交叉熵加起来即可。

最后,因为要最小化,所以交叉熵前面带负号。

logistic的特殊化

logistic相当于1,0的单热点编码,所以只有两项,而且其中一项为0。

维度问题

在线性回归中,最后n个样本可以产生一个n维向量,对n维向量求均值就可以得到最后的损失。而softmax回归输出一个 n × c l a s s e s n\times classes n×classes维矩阵,但是经过交叉熵计算以后,又重新将classes个维度降成1个维度,生成同线性回归一样的n维向量,最后求均值即可。

所以先softmax再交叉熵的过程,保持了维度不变。

交叉熵的信息论理解

对于交叉熵,除了从最大似然角度,还可以从信息论角度理解。

原文

信息论中交叉熵

解析

信息量

对于一个事件,其可能结果用j来区分,对于第j种结果,其惊异程度用信息量衡量。
l o g 1 P ( j ) log \dfrac{1}{P(j)} logP(j)1 当P为1,说明不惊异,信息量为0,当P趋近于0,就越发惊异,信息量也就越大。

损失函数与极大似然估计的联系 | 交叉熵的理解与变化_第2张图片

信息熵

上面有一句话:在 (3.4.11)中定义的熵, 是当分配的概率真正匹配数据生成过程时的信息量的期望。
这句话不好理解,我做一个解释。

一个事件是有不同的结果的,每一种结果都有一个信息量,那如何衡量一个事件整体的信息量呢?自然我们可以想到期望,对每一个结果,用他的概率乘以他的信息量,最后求和,熵就是将所有结果的信息量期望计算出来得到的。
在这里插入图片描述
相比于交叉熵,信息熵是概率向量内部的计算。

拿分类来举例,P是一个类别的概率,总和为1。如果所有P都相等,熵是最大的(因为你完全不能通过概率确定你的结果),如果有一个P=1,其他P=0,那熵就是0(结果就是那个P=1对应的类别)。

交叉熵

这句话说的比较晦涩,动手学深度学习提升空间还是有很多的。
什么是主观概率?这个观测者指的是模型,其生成的概率向量为Q,比如(0.2,0.7,0.1),实际的概率向量为P(0,1,0)。如果P和Q差异较大,交叉熵肯定就大,如果P=Q,也就是当Q=(0,1,0)完美预测的时候,交叉熵最小,为0。

损失函数与极大似然估计的联系 | 交叉熵的理解与变化_第3张图片

softmax+交叉熵

推导

在softmax计算中,要求e指数,但是你也知道,指数作用后很容易数值爆炸,向上溢出。

为了解决这个问题,可以将softmax计算的分子分母都提取出一个最大项的e指数,这样可以避免向上溢出。

但是新的问题又来了,因为剩下的指数变成了 e o − o m a x e^{o-o_{max}} eoomax,相减之后如果这两个差值是绝对值较大的负数,就会导致指数后过于接近于0,造成数值下溢。

最好的解决办法就是不用e指数,这个时候联想到交叉熵是e对数,这样一拍即合,一个指数一个对数,恰好抵消,最后的softmax+交叉熵结合公式就变成了下面这个,很巧妙!

臭美一下,这个也符合我前面的维度理论,softmax层先升维,交叉熵再降维。

损失函数与极大似然估计的联系 | 交叉熵的理解与变化_第4张图片

你可能感兴趣的:(人工智能,机器学习,回归,python)