Tensorflow的采样⽅法:candidatesampling
采样介绍
假如我们有⼀个多分类任务或者多标签分类任务,给定训练集,其中表⽰上下⽂,表⽰⽬标类别(可能有多个).可以⽤word2vec中的negtive sampling⽅法来举例,使⽤cbow⽅法,也就是使⽤上下⽂来预测中⼼词(单个target),或者使⽤skip-gram⽅法,也就是使⽤中⼼词来预测上下⽂(多个target()).
我们想学习到⼀个通⽤函数来表征上下⽂和⽬标类的关系,如Word2vec⾥⾯,使⽤上下⽂预测下个单词的概率。
远近闻名的意思
完整的训练⽅法,如使⽤softmax或者Logistic回归需要对每个训练数据计算所有类的概率,当⾮常⼤的时候,训练将⾮常耗时。
“candidate sampling”训练⽅法包括为每⼀个训练数据构造⼀个训练任务,使得我们只需要使⽤⼀个较⼩的候选集合,就能评估,典型的,candidate t 包含⽬标类别和⼀些随机采样的类别:
新赛季nba赛程
, 的选择可能依赖 和 ,也可能不依赖。
怎样流产最快可以使⽤神经⽹络计算来表征(也就是TensorFlow⾥⾯常⽤的logits)
TensorFlow中各种采样
智者乐山其中:
表⽰的是给定context采样到的概率
表⽰任意不以来候选集的函数
家风家训图片softmax vs. logistic
在使⽤tensoflow的时候,我们有时候会纠结选择什么样的损失函数⽐较好,softmax和logistic在表达形式上是有点区别的,但是也不是很⼤,⽽且对于普通的softmax_cross_entropy_with_logits和sigmoid_cross_entropy_with_logits也都能够进⾏多分类任务,那么他们之间的区别是什么的?
就我个⼈所想到的,使⽤sigmoid_cross_entropy_with_logits和softmax_cross_entropy_with_logits的最⼤的区别是类别的排他性,在分类任务中,使⽤softmax_cross_entropy_with_logits我们⼀般是选择单个标签的分类,因为其具有排他性,说⽩
了,softmax_cross_entropy_with_logits需要的是⼀个类别概率分布,其分布应该服从多项分布(也就是多项logistic regression),我们训练是让结果尽量靠近这种概率分布,不是说softmax_cross_entropy_with_logits不能进⾏多分,事实
上,softmax_cross_entropy_with_logits是⽀持多个类别的,其参数labels也没有限制只使⽤⼀个类别,当使⽤
softmax_cross_entropy_with_logits进⾏多分类时候,以⼆类为例,我们可以设置真实类别的对应labels上的位置是0.5,0.5,训练使得这个⽂本尽量倾向这种分布,在test阶段,可以选择两个计算概率最⼤的类作为类别标签,从这种⾓度说,使⽤
softmax_cross_entropy_with_logits进⾏多分,实际上类似于计算⽂本的主题分布。
排名公式中国古代选官制度但是对于sigmoid_cross_entropy_with_logits,公式可以看出,sigmoid_cross_entropy_with_logits其实是训练出了多个分类器,对于有个标签 的分类问题,其实质是分成了个⼆分类问题,这点和softmax_cross_entropy_with_logits有着本质的区别。
tensorflow提供了下⾯两种candidate sample⽅法
<_loss
高考满分的人对⽐与之前讨论的,从最上⾯的图中的training loss采⽤的⽅法可以知道, _loss使⽤的是logistic ⽽
个⼈看法,对于多标签多类别的分类任务使⽤Logistic⽐较好,对于多标签单类别的分类任务使⽤softmax⽐较好,采样中,采⽤