首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们用神经网络进行监督分类时,为什么我们要训练交叉熵而不是分类误差?

当我们用神经网络进行监督分类时,为什么我们要训练交叉熵而不是分类误差?
EN

Stack Overflow用户
提问于 2017-08-19 05:47:19
回答 2查看 96关注 0票数 1

标准监督分类设置:我们有一堆样本,每个样本都带有正确的N标签。我们建立N个输出的神经网络,用softmax将其转化为概率,损失是每个NN输出和相应的真标号之间的平均cross-entropy,表示为真标号中带有11-hot向量和其他0。然后,我们按照它的梯度来优化这个损失。分类误差只是用来测量我们的模型质量。

但是,我知道在执行policy gradient时我们可以使用似然比欺骗,我们不再需要使用cross-entropy!我们的损失只是tf.gather与正确标签对应的NN输出。例如OpenAI健身房CartPole的解决方案

为什么我们不能在进行监督学习时使用同样的技巧呢?我在想,我们使用cross-entropy的原因是因为它是可微的,但显然tf.gather可微性

我的意思是--如果我们用分类错误来衡量自己,并且我们可以对分类错误进行优化,因为分类错误是可以区分的,那么也对分类错误进行优化不是比这个奇怪的cross-entropy代理更好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-20 22:16:53

策略梯度是使用交叉熵的(也就是Ishant指出的KL散度)。对于有监督的学习来说,tf.gather实际上只是一种实现技巧,没有别的。另一方面,对于RL来说,这是必须的,因为如果要执行其他操作,您不知道会发生什么。因此,你最终得到了梯度的高方差估计,如果可能的话,你想要避免所有的成本。

不过,回到有监督的学习

代码语言:javascript
复制
CE(p||q) = - SUM_i q_i log p_i

让我们假设q_i是一个热编码,在k‘’th位置有1。

代码语言:javascript
复制
CE(p||q) = - q_k log p_k = - log p_k

因此,如果您愿意,您可以将其实现为tf.gather,这并不重要。交叉熵更通用,因为它处理更复杂的目标。特别是,在TF中,您有稀疏交叉熵,它做的正是您所描述的-利用一个热编码,那就是它。从数学上讲,没有差别,计算上也有微小的差异,还有一些函数可以做你想做的事情。

票数 1
EN

Stack Overflow用户

发布于 2017-08-19 09:00:26

交叉熵损失的最小化使预测分布与目标分布之间的KL散度最小化。这和最大化预测分布的可能性是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45768126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档