ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

损失函数:交叉熵

2021-08-02 21:36:05  阅读:223  来源: 互联网

标签:log 交叉 cdot big sum 损失 text align 函数


损失函数:交叉熵

交叉熵用于比较两个不同概率模型之间的距离。

信息量

信息量用来衡量事件的不确定性,即该事件从不确定转为确定时的难度有多大。

定义信息量的函数为:

\[f(x):=\text{信息量} \]

假设对于某8只球队进行比赛,对于其中任意一直球队,假设夺冠的概率为\(\frac{1}{8}\)。对于一条消息“A球队夺冠了”其信息量应该等于“A球队进入决赛”加上“A球队赢了决赛”之和。即:

\[\begin{align} f(\text{A球队夺冠了})&=f(\text{A球队进入决赛})+f(\text{A球队赢了决赛})\\ f(\frac{1}{8})&=f(\frac{1}{4})+f(\frac{1}{2}) \end{align} \]

而:

\[\begin{align} P(\text{A球队夺冠了})&=P(\text{A球队进入决赛})\cdot P(\text{A球队赢了决赛})\\ \end{align} \]

因此可以推出(其中\(x_i\)表示事件\(i\)在系统\(X\)​中发生的概率,下同):

\[f(x_1\cdot x_2) = f(x_1)+f(x_2) \]

因此可以定义信息量函数(负号是因为事件发生的概率越小,所包含的信息量越大):

\[f(x) = -log_2(x) \]

熵用来衡量一个系统所包含的信息量有多少。它衡量一个系统的不确定程度,或者混乱程度。

对于一个系统\(P\)​​​来说,要求整个系统的信息量,也就是求系统中每个事件\(i\),从不确定转为确定性所包含的信息量的平均值,也就是期望。即:

\[\begin{align} H(P):&=E(f_P)\\ &=\sum_{i=1}^mp_i\cdot f(p_i)\\ &=\sum_{i=1}^m p_i\cdot\big(-log_2(p_i)\big)\\ &=-\sum_{i=1}^m p_i\cdot log_2(p_i) \end{align} \]

相对熵与交叉熵

相对熵表示使用理论分布拟合真实分布时产生的信息损耗。

对于两个系统\(P,Q\)​,通过相对熵可以衡量\(Q\)​​相对于\(P\)​​​​有多大的差距,即系统\(Q\)​想要和系统\(P\)​达到一样的分布的话,它们之间相差多少信息量:

\[\begin{align} D_{KL}(P||Q)&=\sum_{i=1}^m p_i\cdot \big(f_Q(q_i)-f_P(p_i)\big)\\ &=\sum_{i=1}^m p_i \cdot \bigg( \big(-log_2(q_i)\big)-\big(-log_2(p_i) \big)\bigg)\\ &=\color{blue}{\sum_{i=1}^m p_i\cdot \big(-log_2(q_i) \big)} - \color{red}{\sum_{i=1}^m p_i \cdot\big(-log_2(p_i) \big)} \end{align} \]

可以发现上述公式中红色部分为系统\(P\)​​的熵,当系统P没有变化时,这部分是一个恒值。而蓝色部分也就是交叉熵,定义为\(H(P,Q)\)。

又根据吉布斯不等式

\[\text{若}\sum_{i=1}^np_i=\sum_{i=1}^nq_i=1,\text{且}p_i,q_i\in[0,1]\text{,则有:}\\ -\sum_{i=1}^np_i\cdot log(p_i)\le -\sum_{i=1}^np_i\cdot log(q_i) \]

可知相对熵恒大于\(0\)​。因此若想要\(Q\)系统的概率模型与\(P\)系统的概率模型尽可能相似,只要最小化交叉熵即可。

深度学习中的交叉熵

神经网络的目标:

\[\begin{align} min\;H(P,Q) &= -\sum_{i=1}^m p_i\cdot log_2(q_i) \end{align} \]

在深度学习中,系统\(P\)可以用数据集所表示。系统\(Q\)可以用神经网络模型表示。同样只考虑判断输入是真是假的神经网络,对于\(n\)个数据中的第\(i\)个数据,它在系统\(P\)里发生的概率,也就是为真的概率为\(y_1\),为假的概率为\(1-y_i\),同时他在系统\(Q\)里为真的概率,也就是经过神经网络后的输出为\(\hat y_i\),为假的概率为\(1-\hat y_i\)。因此交叉熵又可表示为:

\[\begin{align} H(P,Q)&=-\sum_{i=1}^n p_i\cdot log_2(q_i)\\ &=-\sum_{i=1}^ny_i\cdot log_2(\hat y_i)+(1-y_i)\cdot log_2(1-\hat y_i) \end{align} \]

是不是跟极大似然估计法的形式一模一样?

到这里可以把\(p_i,q_i\)​​的意义具体化,其实\(p_i\)​​应该理解为数据\(i\)​​在系统\(P\)​​中的概率分布。同理\(q_i\)​​应该理解为数据\(i\)​​在系统\(Q\)​​​中的概率分布。对于判断输入是真是假的神经网络相当于数据\(i\)​​​的输出只有两种可能,为真或者为假,​对于多分类\(m\)​​神经网络,数据\(i\)​​的输出有\(m\)​​种可能,交叉熵又可表示为:

\[\begin{align} H(P,Q)&=-\sum_{i=1}^np_i\cdot log_2(q_i)\\ &=-\sum_{i=1}^n\sum_{j=1}^mp_{ij}\cdot log_2(q_{ij}) \end{align} \]

是不是跟极大似然估计法的形式一模一样?

推荐详细讲解视频:https://www.bilibili.com/video/BV15V411W7VB

标签:log,交叉,cdot,big,sum,损失,text,align,函数
来源: https://www.cnblogs.com/--Simon/p/15091794.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有