谷歌16年出的论文《Deep Neural Networks for Youtube Recommendation》中提到文章采用了负采样的思想来进行extreme multiclass分类任务
我的tensorflow实现已上传CSDN资源https://download.csdn.net/download/weixin_41864878/11107472
Tensorflow提供了两种负采样,分别是NCE loss 和Sampled softmax loss,两者最大的区别就是针对的任务不同,代码实现上两者也只有最后的loss函数不同,两者用的采样函数及算logits方法都相同
NCE loss
sampled_losses = sigmoid_cross_entropy_with_logits(
labels=labels, logits=logits, name="sampled_losses")
Sampled softmax loss
labels = array_ops.stop_gradient(labels, name="labels_stop_gradient")
sampled_losses = nn_ops.softmax_cross_entropy_with_logits_v2(
labels=labels, logits=logits)
显然,NCE能针对多标签