采样softmax(Sampled softmax )

Sampled softmax

原文:https://www.tensorflow.org/extras/candidate_sampling.pdf

假设有一个单分类问题。训练集中的每个样本包含一个上下文和一个目标类。将给定上下文时,目标类为写作概率

我们使用函数产生softmax logits,即对数化的概率:

其中是一个不依赖的函数。

在完整的softmax训练中,对于每个训练样本,都需要对所有的分类计算。如果分类集L非常大,该操作将变得非常昂贵。

而在“Sampled Softmax”中,对于每个训练样本,我们根据一个选定的抽样函数来选择一个小的采样分类集,其中的每一个分类都以概率独立的存在:

我们创建一个候选集,联合了目标分类和采样的分类集:

我们的训练任务是计算出,在给定候选集的条件下,中的哪一个分类是目标分类。

对于中的每一个分类,我们想要计算出当给定和时,的后验概率,记作:

应用贝叶斯法则:
\begin{array}{l} P\left(t_{i}=y | x_{i}, C_{i}\right) \\ = \frac{P\left(t_{i}=y, C_{i} | x_{i}\right)}{P\left(C_{i} | x_{i}\right)} \\ {= \frac{P\left(t_{i}=y | x_{i}\right) P\left(C_{i} | t_{i}=y, x_{i}\right)}{P\left(C_{i} | x_{i}\right)} } \\ = \frac{P\left(y | x_{i}\right) P\left(C_{i} | t_{i}=y, x_{i}\right)}{P\left(C_{i} | x_{i}\right)} \end{array}

现在,来计算,我们注意到要使这发生,可能在也可能不在中,一定包含中所有的其它(除外)元素,并且不包含任何不在中的元素,
因此:

\begin{array}{l} P\left(C_{i} | t_{i}=y, x_{i}\right) \\ =\prod_{y^{\prime} \in C_{i}-\{y\}} Q\left(y^{\prime} | x_{i}\right) \prod_{y^{\prime} \in\left(L-C_{i}\right)}\left(1-Q\left(y^{\prime} | x_{i}\right)\right) \\ = \frac{1}{Q(y|x_i)} \prod_{y^{\prime} \in C_{i}} Q\left(y^{\prime} | x_{i}\right) \prod_{y^{\prime} \in\left(L-C_{i}\right)}\left(1-Q\left(y^{\prime} | x_{i}\right)\right) \end{array}

\begin{array}{l} P\left(t_{i}=y | x_{i}, C_{i}\right) \\ = \frac{P\left(y | x_{i}\right) P\left(C_{i} | t_{i}=y, x_{i}\right)}{P\left(C_{i} | x_{i}\right)} \\ = \frac{P(y|x_i)}{Q(y|x_i)} \prod_{y^{\prime} \in C_{i}} Q\left(y^{\prime} | x_{i}\right) \prod_{y^{\prime} \in\left(L-C_{i}\right)}\left(1-Q\left(y^{\prime} | x_{i}\right)\right) / P(C_i|x_i) \\ = \frac{P(y|x_i)}{Q(y|x_i)} / K(x_i, C_i) \end{array}

是一个不依赖于y的函数,所以:

这些是应该输入softmax分类器的相对logits,用于预测中的哪一个候选类才是真正的分类。

既然我们试图训练函数来拟合,我们用神经网络中的层输出表示,然后减去,将结果传入一个softmax分类器来预测哪个候选是真正的分类。

从分类输出中反向传播梯度到F,这就是我们所要的。

你可能感兴趣的:(采样softmax(Sampled softmax ))