您的位置:首页 > 其它

Word Embedding:负样本损失函数结果异常

2017-06-02 10:30 183 查看
实验环境

框架:tensorflow

模型选择:CBOW+NCE loss

单词个数:30000

问题描述

NCE损失函数表示如下:

Jθ=−∑w∈V(logP(y=1|x)+∑i=1klogP(y=0|x(w(i))))

该损失函数计算上下文与目标单词之间的点积,采集每一个正样本的同时采集k个负样本。公式的第一项最小化正样本的损失,第二项最大化负样本的损失。现在如果将负样本作为第一项的变量输入,则损失函数结果应该很大。

实验问题

在训练5M个batch后,训练样本的loss降低到了4左右。

对正样本测试,loss降低到了4.7。

对随机产生的负样本测试,loss同样降低到了7左右,与预想不符。



从图中可以看到,在训练14000个batch后,训练样本的loss仍然在27.8,而负样本的loss已经下降到了6.9。负样本loss下降比正样本都快!

可能性猜想

可能由于损失函数第二项的存在,即使输入负样本,整个损失函数的值还是保持在较低水平。(对公式理解不够)

对策:使用其他方法进行测试,比如直接计算点积或者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nlp embedding
相关文章推荐