Sampled softmax
原文:https://www.tensorflow.org/extras/candidate_sampling.pdf
假设有一个单分类问题。训练集中的每个样本包含一个上下文和一个目标类。将给定上下文
时,目标类为
写作概率
我们使用函数产生softmax logits,即对数化的概率:
其中是一个不依赖
的函数。
在完整的softmax训练中,对于每个训练样本,都需要对所有的分类
计算
。如果分类集L非常大,该操作将变得非常昂贵。
而在“Sampled Softmax”中,对于每个训练样本,我们根据一个选定的抽样函数
来选择一个小的采样分类集
,其中的每一个分类
都以概率
独立的存在:
我们创建一个候选集,联合了目标分类和采样的分类集:
我们的训练任务是计算出,在给定候选集的条件下,
中的哪一个分类是目标分类。
对于中的每一个分类
,我们想要计算出当给定
和
时,
的后验概率,记作
:
应用贝叶斯法则:
现在,来计算,我们注意到要使这发生,
可能在也可能不在
中,
一定包含
中所有的其它(除
外)元素,并且不包含任何不在
中的元素,
因此:
是一个不依赖于y的函数,所以:
这些是应该输入softmax分类器的相对logits,用于预测中的哪一个候选类才是真正的分类。
既然我们试图训练函数来拟合
,我们用神经网络中的层输出表示
,然后减去
,将结果传入一个softmax分类器来预测哪个候选是真正的分类。
从分类输出中反向传播梯度到F,这就是我们所要的。