Tensorflow的采样方法:candidate sampling
Posted luchi007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow的采样方法:candidate sampling相关的知识,希望对你有一定的参考价值。
采样介绍
假如我们有一个多分类任务或者多标签分类任务,给定训练集 (xi,Ti) ,其中 xi 表示上下文, Ti 表示目标类别(可能有多个).可以用word2vec中的negtive sampling方法来举例,使用cbow方法,也就是使用上下文 xi 来预测中心词(单个target Ti ),或者使用skip-gram方法,也就是使用中心词 xi 来预测上下文(多个target( Ti )).
我们想学习到一个通用函数
F(x,y)
来表征上下文
x
和目标类
完整的训练方法,如使用softmax或者Logistic回归需要对每个训练数据计算所有类 y∈L 的概率 F(x,y) ,当 |L| 非常大的时候,训练将非常耗时。
“candidate sampling”训练方法包括为每一个训练数据 (xi,Ti) 构造一个训练任务,使得我们只需要使用一个较小的候选集合 Ci∈L ,就能评估 F(x,y) ,典型的,candidate set Ci 包含目标类别 Ti 和一些随机采样的类别 Si∈L :
Ci=Ti∪Si , Si 的选择可能依赖 xi 和 Ti ,也可能不依赖。F(x,y) 可以使用神经网络计算来表征(也就是TensorFlow里面常用的logits)
TensorFlow中各种采样
其中:
- Q(y|x) 表示的是给定context xi 采样到 y 的概率
K(x) 表示任意不以来候选集的函数- logistic−training−loss=∑i(∑y∈POSilog(1+exp(−G(xi,y)))+∑y∈NEGilog(1+exp(G(xi,y))))(1)
-
softmax−training−loss=∑i采样softmax(Sampled softmax )
Candidate Sampling Sampled Softmax
tf.nn.fixed_unigram_candidate_sampler解释