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下降比正样本都快!
可能性猜想
可能由于损失函数第二项的存在,即使输入负样本,整个损失函数的值还是保持在较低水平。(对公式理解不够)
对策:使用其他方法进行测试,比如直接计算点积或者。
框架: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下降比正样本都快!
可能性猜想
可能由于损失函数第二项的存在,即使输入负样本,整个损失函数的值还是保持在较低水平。(对公式理解不够)
对策:使用其他方法进行测试,比如直接计算点积或者。
相关文章推荐
- Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理
- b2cf .net mvc Angular2项目 ajax请求返回结果异常处理
- 【深度学习-CNN】训练样本不平衡对训练结果的影响
- (一)关于ThinkPHP2.1版本操作MSSQL类的BUG--count统计结果异常
- 异常捕捉先后顺序------getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果()
- 小样本大概率事件的正确处理方式 - 2. 结果分析
- 如何在Service方法中抛出异常并返回状态或校验结果?
- SPRING REST API 返回结果处理和异常处理
- org.springframework.jdbc.core.simple.SimpleJdbcTemplate queryForMap 方法在查询结果为空时抛出异常
- SPSS独立样本t检验结果分析
- 解决TEMU对XP sp3中样本的trace结果为空
- 用事件和异常返回多种结果
- Struts08---全局结果和全局异常的配置
- spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常
- Web API--自定义异常结果的处理
- 异常检测——无监督、高斯分布模型,需要带标记的样本数据,基本假设:特征符合高斯分布
- JAVA中double类型运算结果异常的解决
- struts2异常处理,global-results定义全局结果处理
- shell 脚本 变量 获取程序输出结果异常分析
- 在HttpClient请求的时候,返回结果解析时出现java.io.IOException: Attempted read from closed stream. 异常,解决