tensorflow学习笔记(二)

tensorflow笔记(二)

今天主要记录什么是交叉熵,以及它在tensorflow中实现方式

交叉熵(cross-entropy)

什么是交叉熵?首先,说明的是,交叉熵刻画的是两个概率分布之间的距离。那么为了能较好理解交叉熵,我需要先介绍一下熵(entropy)这个概念。

熵(entropy)

熵,它衡量的是一个概率分布的随机程度,还有一种说法就是包含信息量的大小。
那么什么是随机程度?我以离散型随机变量为例进行解释,这当中涉及到概率论的一些知识。首先,假设离散型随机变量X的所有取值为xk(k=1,2,…),X取各个可能值得概率,即事件{X=xk}的概率为p(X=xk),简记为p(x),用h(x)表示随机变量取值为x时的信息量大小,那么它们之间的关系为:如果X=x的概率越小,即p(x)值越小,则h(x)越大,也就是h(x)是p(x)的单调递减函数
假设存在两个相互独立的离散型随机变量,取值分布为x1和x2,那么其概率为p(x1) 和p(x2),根据独立性原则,p(x1x2)=p(x1)p(x2)
x1和x2是相互独立的,那么它们的信息量应该为h(x1x2)=h(x1)+h(x2)
能满足乘法转为加法的函数,就只有对数函数了,所以就把信息量定义为:

h(x) = - log( p(x) )
在机器学习中,信息量函数一般以e为底。
故,对于离散型随机变量,熵定义为:
熵的定义
其中,Ex为随机变量X的期望,pi为X=xi时的概率。

介绍完熵之后,那么对交叉熵的理解可能较容易。

交叉熵

交叉熵的定义与熵类似,但是其不同的是交叉熵定义在两个概率分布上,而熵是一个概率分布。
对于离散型随机变量,交叉熵定义为:
离散型-交叉熵

其中,p和q分别为两个概率分布,在机器学习中,一般p代表正确的概率分布,而q是经我们模型预测出来的概率分布。这个公式得到的是结果表示正确值与预测值之间的误差程度,而结果值越小,表示预测值与正确值越接近

下面以mnist问题为例子:

mnist中,我们的真实概率只有0和1,假设该图片手写的数字为2。
那么,真实的概率分布应该为 [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
而我们预测的概率分布可能为[ 0.05, 0.02,0.55,0.05,0.05,0.03,0.1,0.05,0.1]
那么交叉熵为:

在这里插入图片描述
如果我们预测的概率分布与真实概率分布一致,那么交叉熵应为1*log(1)=0,完全符合。

需要注意的是,交叉熵函数并不是对称的,即H(p,q)≠H(q,p)的。

在tensorflow中实现方式

tensorflow实现交叉熵的代码很简单,

cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,1e-10,1.0)))

其中,y_代表正确结果,y代表预测结果
tf.clip_by_value()函数:可以将一个张量中的数值限制在一个范围内,这里限制范围为[1e-10, 1.0]
tf.reduce_mean() 函数:是直接对矩阵做平均
需要主要的是 * 号在这里 是元素之间直接相乘,而不是矩阵乘法。

以上就为今天的笔记。本博文为原创,欢迎查看,转载需要注明出处噢~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值