采样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