博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交叉熵损失函数
阅读量:6259 次
发布时间:2019-06-22

本文共 1107 字,大约阅读时间需要 3 分钟。

交叉熵损失函数

\[ 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/25\]
\[H=-5*0.2*log_{2}(1/256)=8\]
从而采用ASCII编码时,每个字符需要8个位,这与预期完全吻合.
作为一个损失函数假设p为所期望的输出和概率分布("编码"),其中实际值 有100%,而其他任何值为0,将q作为由模型计算得到的输出,请牢记,sigmoid函数的输出是一个概率值.
有这样一个定理:当p=q时,交叉熵去的最小值.因此可以利用交叉熵比较一个分布与另一个分布的吻合情况.交叉熵越接近与熵,q便是针对p更好的逼近,实际上,模型的输出与期望输出越接近,交叉熵也会越小,这正是损失函数所需要的.
在对熵进行最小化时,将\(log_{2}\)替换为log完全没有任何问题,因为两者只相差一个常系数.

参考资料

面向机器智能的tensorflow实践

转载于:https://www.cnblogs.com/cloud-ken/p/7435409.html

你可能感兴趣的文章
4,gps信号与地图匹配算法
查看>>
python print的用法
查看>>
之字形打印矩阵
查看>>
我的世界之电脑mod小乌龟 —— 方位上的操作 lua函数集
查看>>
游戏方案
查看>>
在 Linux 下搭建 Git 服务器
查看>>
StackExchange.Redis Client(转载)
查看>>
Leetcode题目:Bulls and Cows
查看>>
bk. 2014.12.1
查看>>
CEOI2014 wall Spoiler
查看>>
UVA10391 ZOJ1825 Compound Words【SET+暴力】
查看>>
动态规划------Combination Sum IV
查看>>
[BZOJ2463][中山市选2009]谁能赢呢?
查看>>
iOS数据持久化存储之属性列表
查看>>
最后冲刺时间
查看>>
前端开发薪资之各地区对比(图文分析)
查看>>
jquery简单的大背景banner图片全屏切换
查看>>
java疑问
查看>>
JAVAEE 介绍
查看>>
视图和路由
查看>>