前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >交叉熵损失函数的概念和理解

交叉熵损失函数的概念和理解

作者头像
演化计算与人工智能
发布2020-08-14 10:35:35
发布2020-08-14 10:35:35
1.1K0
举报

公式

loss =\sum_{i}{(y_{i} \cdot log(y\_predicted_{i}) +(1-y_{i}) \cdot log(1-y\_predicted_{i}) )}

定义

  • 在信息论中,若一个符号字符串中的每个字符的出现概率
P_{i}

已知,则可用香农熵估计该字符串中每个符号

S_{i}

编码所需的平均最小位数.

H=-\sum_{i}({p_{i} \cdot log_{2}(p_{i})})
  • 除了数学表达式相似以外,完全可以将这里的熵和其热力学概念联系起来.
  • 例如,可计算单次"HELLO"的熵:
p("H")=p("E")=p("O")=1/5=0.2\\p("L")=2/5=0.4\\H=-3*0.2*log_{2}(0.2)-0.4*log_{2}(0.4)=1.92193
  • 因此,采用最优编码方案时,"Hello"中的每个符号需要2位计算单词"Hello"中的每个符号需要2位.
  • 在对符号进行编码时,如果假设了其他的概率
q_{i}

而非真实概率

p_{i}

,则对每个符号所需的编码的长度就会更大.这正是交叉熵所发挥作用的时候. 他允许用户以另外一种次优编码方案计算对同一个字符串进行编码所需的平均最小位数.

H=-\sum_{i}{(p_{i} \cdot log_{2}(q_{i}))}
  • 例如,ASCII会对每个符号赋予相同的概率值
q_{i}=1/256

.下面计算采用ASCII编码时单词"HELLO"的交叉熵:

q("H")=q("E")=q("L")=q("O")=1/256\\H=-3*0.2*log_{2}(1/256)=8

从而采用ASCII编码时,每个字符需要8个位,这与预期完全吻合.

  • 作为一个损失函数假设p为所期望的输出和概率分布("编码"),其中实际值 有100%,而其他任何值为0,将q作为由模型计算得到的输出,请牢记,sigmoid函数的输出是一个概率值.
  • 有这样一个定理:当p=q时,交叉熵去的最小值.因此可以利用交叉熵比较一个分布与另一个分布的吻合情况.交叉熵越接近与熵,q便是针对p更好的逼近,实际上,模型的输出与期望输出越接近,交叉熵也会越小,这正是损失函数所需要的.
  • 在对熵进行最小化时,将
log_{2}

替换为log完全没有任何问题,因为两者只相差一个常系数.

参考资料

面向机器智能的tensorflow实践

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrawSky 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 公式
  • 定义
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档