采样softmax(Sampled softmax )

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了采样softmax(Sampled softmax )相关的知识,希望对你有一定的参考价值。

参考技术A 原文: https://www.tensorflow.org/extras/candidate_sampling.pdf

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

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

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

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

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

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

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

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

应用贝叶斯法则:

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

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

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

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

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

基于Softmax与Sampling的方法,流式采样率预估

以上是关于采样softmax(Sampled softmax )的主要内容,如果未能解决你的问题,请参考以下文章

在 tensorflow 2.4 中使用 sampled_softmax 时无法将符号 Keras 输入/输出转换为 numpy 数组 TypeError

基于Softmax与Sampling的方法,流式采样率预估

如何在 Keras 模型中使用 TensorFlow 的采样 softmax 损失函数?

基于Softmax与Sampling的方法,流式采样率预估

基于Softmax与Sampling的方法,流式采样率预估

基于Softmax与Sampling的方法,流式采样率预估