标准监督分类设置:我们有一堆样本,每个样本都带有正确的N标签。我们建立N个输出的神经网络,用softmax将其转化为概率,损失是每个NN输出和相应的真标号之间的平均cross-entropy,表示为真标号中带有1的1-hot向量和其他0。然后,我们按照它的梯度来优化这个损失。分类误差只是用来测量我们的模型质量。
但是,我知道在执行policy gradient时我们可以使用似然比欺骗,我们不再需要使用cross-entropy!我们的损失只是tf.gather与正确标签对应的NN输出。例如OpenAI健身房CartPole的解决方案。
为什么我们不能在进行监督学习时使用同样的技巧呢?我在想,我们使用cross-entropy的原因是因为它是可微的,但显然tf.gather是可微性。
我的意思是--如果我们用分类错误来衡量自己,并且我们可以对分类错误进行优化,因为分类错误是可以区分的,那么也对分类错误进行优化不是比这个奇怪的cross-entropy代理更好吗?
发布于 2017-08-20 22:16:53
策略梯度是使用交叉熵的(也就是Ishant指出的KL散度)。对于有监督的学习来说,tf.gather实际上只是一种实现技巧,没有别的。另一方面,对于RL来说,这是必须的,因为如果要执行其他操作,您不知道会发生什么。因此,你最终得到了梯度的高方差估计,如果可能的话,你想要避免所有的成本。
不过,回到有监督的学习
CE(p||q) = - SUM_i q_i log p_i让我们假设q_i是一个热编码,在k‘’th位置有1。
CE(p||q) = - q_k log p_k = - log p_k因此,如果您愿意,您可以将其实现为tf.gather,这并不重要。交叉熵更通用,因为它处理更复杂的目标。特别是,在TF中,您有稀疏交叉熵,它做的正是您所描述的-利用一个热编码,那就是它。从数学上讲,没有差别,计算上也有微小的差异,还有一些函数可以做你想做的事情。
发布于 2017-08-19 09:00:26
交叉熵损失的最小化使预测分布与目标分布之间的KL散度最小化。这和最大化预测分布的可能性是一样的。
https://stackoverflow.com/questions/45768126
复制相似问题