损失函数(极大似然与交叉熵)学习笔记

损失函数

在学习梯度下降算法之前,首先要搞明白损失函数,因为梯度下降中求的就是损失函数的梯度。

损失函数表示预测值与真实值之间的不一致程度,神经网络的训练过程就是在不断调整参数使损失函数最小。

有三种设计损失函数的方法:

1. 最小二乘法

min ⁡ ∑ i = 1 n ( y i − y ^ ) 2 \min\sum_{i=1}^{n}(y_i-\hat{y})^2 mini=1n(yiy^)2

顾名思义,“二乘”是平方,“最小”是取最小值。

最小二乘法作为损失函数进行梯度下降法的时候,会很麻烦,所以不建议选用。

2. 极大似然估计法

极大似然估计本质上就是计算神经网络里面概论模型的似然值,似然值最大的模型就是最接近真实世界的模型,即最大化观测数据发生的概率

那么何为似然值:真实的情况已经发生,我们假设它有很多模型,在某个概率模型下,发生某种情况的可能性,叫似然值。下面举个例子:

理论上抛10次硬币,正面和反面朝上各占50%,但是我们实验中4次正面朝上,6次反面朝上。我们假设硬币本来的概率模型符合 P ( 正 ) = 0.4 , P ( 反 ) = 0.6 P(正)=0.4, P(反)=0.6 P()=0.4,P()=0.6 ,记为 θ \theta θ,那么在满足此模型的条件下,1次正面朝上,9次反面朝上的概率为 :

P ( C 1 , C 2 , … , C 10 ∣ θ ) = ∏ i = 1 10 P ( C i ∣ θ ) = 0.4 ∗ 0. 6 9 P(C_1,C_2, \dots ,C_{10}|\theta)=\prod_{i=1}^{10}P(C_i|\theta)=0.4*0.6^{9} PC1,C2,,C10θ=i=110P(Ciθ)=0.40.69

这样计算得到的值就是似然值。

虽然我们永远无法准确的确定本来的概率模型是什么样子的,但是选似然值最大的,可能性最高,这就是最大似然估计法。

极大似然估计的用处就在于当我们知道了事件的结果(对应于训练中的样本),去反推最有可能(似然值最大)造成这个结果的概率模型。

P ( y 1 , y 2 , … , y n ∣ θ ) = ∏ i = 1 n P ( y i ∣ θ ) = ∏ i = 1 n P ( y i ∣ W , b ) P(y_1,y_2, \dots ,y_{n}|\theta)=\prod_{i=1}^{n}P(y_i|\theta)=\prod_{i=1}^{n}P(y_i|\bf{W,b}) Py1,y2,,ynθ=i=1nP(yiθ)=i=1nP(yiW,b)

上式中 y i y_i yi 是标签值,预测值 y i ^ \hat{y_i} yi^ 依赖于 W , b \bf{W,b} W,b 。故上式还可写成:

∏ i = 1 n P ( y i ∣ y i ^ ) \prod_{i=1}^{n}P(y_i|\hat{y_i}) i=1nP(yiyi^)

y i ∈ { 0 , 1 } y_i \in \{0,1\} yi{0,1},即是二分类问题,将累乘改为累加,上式可写为:

∏ i = 1 n y i ^ y i ( 1 − y i ^ ) ( 1 − y i ) ⇓ log ⁡ ( ∏ i = 1 n y i ^ y i ( 1 − y i ^ ) ( 1 − y i ) ) ⇓ ∑ i = 1 n [ y i ∗ log ⁡ y i ^ + ( 1 − y i ) ∗ log ⁡ ( 1 − y i ^ ) ] \begin{aligned} & \prod_{i=1}^{n}\hat{y_i}^{y_i}(1-\hat{y_i})^{(1-y_i)} \\ & \Downarrow \\ &\log(\prod_{i=1}^{n}\hat{y_i}^{y_i}(1-\hat{y_i})^{(1-y_i)} ) \\ & \Downarrow \\ & \sum_{i=1}^{n}[y_i*\log\hat{y_i}+ (1-y_i)*\log(1-\hat{y_i})] \end{aligned} i=1nyi^yi(1yi^)(1yi)log(i=1nyi^yi(1yi^)(1yi))i=1n[yilogyi^+(1yi)log(1yi^)]

3. 交叉熵

若两个模型都是高斯分布,那么比较均值和方差即可。但是若一个模型是高斯分布,一个模型是泊松分布,就无法直接比较了,这时把模型换成熵这样一个数值,用这个数值去比较不同模型之间的差异。也就是说熵可以作为不同模型之间的一个共同衡量标准

3.1 信息量

信息量的理解:一个事件从原来的不确定变得确定,他的难度有多大。信息量大,难度高。下面就来看一下信息量是如何定义的:
在这里插入图片描述

f ( x ) : = 信 息 量 f ( 阿 根 廷 夺 冠 ) = f ( 阿 根 廷 进 决 赛 ) + f ( 阿 根 廷 赢 了 决 赛 ) f ( 1 8 ) = f ( 1 4 ) + f ( 1 2 ) \begin{aligned} & f(x):=信息量 \\ \\ & f(阿根廷夺冠)=f(阿根廷进决赛)+f(阿根廷赢了决赛) \\ \\ & f(\frac{1}{8})=f(\frac{1}{4})+f(\frac{1}{2}) \end{aligned} f(x):=f()=f()+f()f(81)=f(41)+f(21)

从上面可以看出,信息量的定义式需要满足 f ( x 1 ⋅ x 2 ) = f ( x 1 ) + f ( x 2 ) f(x_1·x_2)=f(x_1)+f(x_2) f(x1x2)=f(x1)+f(x2),所以取 log ⁡ \log log 。一个事件确实发生了,即该事件从不确定变成了确定,那么原本发生这个事件的概率越小,则信息量就应该越大,所以要加负号。

f ( x ) : = − log ⁡ x f(x):=-\log x f(x):=logx

对数的底数有何意义呢?

若底数是2,其实就是用抛硬币来衡量信息量。比如 3 = log ⁡ 1 8 3=\log \frac{1}{8} 3=log81 ,可以认为是抛三枚硬币都正面朝上的概率。可以想象一个衡量信息量大小的尺子,上面标有刻度 1,2,3 … ,每一个刻度都对应一种抛硬币的概率。

若底数为6,则抛硬币就变成了掷骰子

3.2 熵

熵也类似,反映一个系统的混乱程度,是衡量整个系统里的所有事件,而不是衡量某一个具体的事件。反映一个系统从原来的不确定到确定难度有多大。
在这里插入图片描述
从上图可以看出:左边系统的熵为0.5+0.5,右边系统的熵为0.014355+0.066439。

熵就是一个系统中所有事件的信息量的期望,如下:

∑ i = 1 n p i ⋅ f ( p i ) = − ∑ i = 1 n p i ⋅ log ⁡ ( p i ) \sum_{i=1}^{n}p_i·f(p_i)=-\sum_{i=1}^{n}p_i·\log (p_i) i=1npif(pi)=i=1npilog(pi)

3.3 相对熵(K-L散度)

K-L散度是一种量化两种概率分布 P P P Q Q Q 之间差异的方式,能帮助我们度量使用一个分布来近似另一个分布时所损失的信息量。

百科中的解释为:

P ( x ) , Q ( x ) P(x),Q(x) P(x),Q(x) 是随机变量 X X X上的两个概率分布,则在离散随机变量的情形下,相对熵的定义为: K L ( P ∣ ∣ Q ) = ∑ P ( x ) log ⁡ P ( x ) Q ( x ) KL(P||Q)=\sum P(x) \log \frac{P(x)}{Q(x)} KL(PQ)=P(x)logQ(x)P(x)
在信息理论中,相对熵是用来度量使用基于 Q Q Q 的分布来编码服从 P P P 的样本平均所需的额外的比特个数。一般 P P P 表示数据的真实分布 Q Q Q 表示估计的模型分布、数据的理论分布、或 P P P 的近似分布。

P P P 分布为基准, Q Q Q 分布近似 P P P 分布时,K-L散度可以如下表示:
在这里插入图片描述
在这里插入图片描述

由吉布斯不等式可知, D K L ( P ∥ Q ) ⩾ 0 {\displaystyle D_{KL}(P\|Q)} \geqslant 0 DKL(PQ)0,当且仅当 P = Q {\displaystyle P=Q} P=Q D K L ( P ∥ Q ) {\displaystyle D_{KL}(P\|Q)} DKL(PQ) 为零。求K-L散度最小即是求交叉熵最小,也就是说交叉熵单独可以在作为一个损失函数

3.4 交叉熵

交叉熵的形式在上述相对熵中已给出。

把交叉熵用作损失函数时, P P P 一般对应人脑对数据的判断,即人打的标签 x i ∈ { 0 , 1 } x_i \in \{0,1\} xi{0,1} ,0表示不是猫,1表示是猫; Q Q Q 一般对应模型对数据的判断,即模型的输出 y i y_i yi y i y_i yi 反映了输入的图片是猫的概率,当标签是 1 时, q i q_i qi y i y_i yi ;当标签是 0 时, q i q_i qi 1 − y i 1-y_i 1yi ,反映输入的图片不是猫的概率。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值