机器学习之路:tensorflow 深度学习中 分类问题的损失函数 交叉熵

2022-02-20

经典的损失函数—-交叉熵

1 交叉熵:

分类问题中广泛使用的损失函数,它描述了两个概率分布之间的距离

给定两个概率分布 p 和 q,交叉熵为:H(p, q) = -∑ p(x) log q(x)

当事件总数固定时,概率函数满足:任意 xp(X = x)∈[0, 1] 且 Σ p(X=x) = 1

也就是说,任何时候发生的概率都在0到1之间,总有某个时间会发生,概率之和为1。

在 2:

回归可以作为一种学习算法来优化分类结果,其中回归的参数被去除,并将神经网络输出变成概率分布。

假设原始神经网络输出为 y1, y2, y3, … , yn

处理后的输出为: (y)i = yi’= eyi/ Σj=1n eyj

图片[1]-机器学习之路:tensorflow 深度学习中 分类问题的损失函数 交叉熵-唐朝资源网

将原始神经网络的输出作为置信度,生成满足概率分布所有要求的新输出

这样就可以通过交叉熵来衡量预测概率分布与真实概率分布的距离

3 从交叉熵的公式可以看出,它通过概率函数q来表达概率分布p的表达难度。

当交叉熵作为神经网络的损失函数时,q代表预测值,p代表真实值,交叉熵描述了两个分布之间的距离

即交叉熵值越小,两个概率分布越接近。

4 示例:

假设有一个三类问题,一个例子的正确答案是 (1, 0, 0)

预测的答案是 (0.5, 0.4, 0.1)

那么它与正确答案的交叉熵是: H( (1,0,0) , (0.5,0.4,0.1) ) = – ( 1*log0.5 + 0*log0.4 + 0*log0.1 ) ≈ 0.3

另一个通过的预测是 (0.8, 0.1, 0.1)

他与正确答案的交叉熵为:H((1, 0, 0), (0.8, 0.1, 0.1) ) = – ( 1*log0.8 + 0*log0.1 + 0*log0.1 ) ≈ 0.1

直观上很容易知道第二个比第一个好,交叉熵计算的结果也是一致的。

使用以下代码计算交叉熵:

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

其中 y_ 是真实值

y 是预测值

tf.(y, 1e-10, 1.0) 可以将y的值限制在1e-10和1.0之间,

如果 y 小于 1e-10,则函数返回 1e-10,如果大于 1.0,则返回 1.0,如果介于两者之间,则返回 y

这样做的目的是为了防止log0的发生

tf.log 是计算日志函数

* 运算不是矩阵乘法,是对应位置元素的乘法

tf。取平均值。如果测量大小,则与取总和​​相同。

一般交叉熵会和回归一起使用,打包在一起就是:

= tf.nn.(y, y_)

其中 y 是预测值,y_ 是真实值

当只有一个正确答案时提供加速计算功能

tf.nn.

分类:

技术要点:

相关文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容