hierarchical softmax对生僻词很不友好?扯淡!

[1] https://code.google.com/archive/p/word2vec/
[2] Word2Vec原始论文
[3] Why is hierarchical softmax better for infrequent words, while negative sampling is better for frequent words?
[4] NLP中的Embedding方法总结

不熟悉层次化softmax和负采样的原理请先看参考资料[4].

本文仅探讨国内博客中充斥着的一种观点:

hierarchical softmax对生僻词很不友好,因为词频越高的词在离根节点越近的叶子节点,词频越低的词在离根节点越远的叶子节点,也就是说当该模型在训练到生僻词时,需要走很深的路径经过更多的节点到达该生僻词的叶子节点位置,训练的时间更长。而负例采样在对生僻词进行训练时,训练时要找的反例词个数不变,所以每次训练更新的参数的个数不变,花费的训练时间不变,这样就会让训练速度更稳定,不会因为生僻词而使训练耗费更多的时间

先看一些实验效果:

h-softmax和负采样的实验效果对比 [ 1 , 2 ] ^{[1,2]} [1,2]

hierarchical softmax (better for infrequent words) vs negative sampling (better for frequent words, better with low dimensional vectors)

下图来自资料[1].

在这里插入图片描述
我的观点:“hierarchical softmax对生僻词很不友好”这个结论需要修改,理由是:

  • 如果这句话是想表达 “hierarchical softmax得到的生僻词Embedding效果不好”,这个结论并不能从 “对生僻词的训练时间更长” 来得出;况且从实验证据来看h-softmax对于生僻词的训练效果相比负采样要更好 [ 1 , 2 ] ^{[1,2]} [1,2]。另外注意,这个现象尚且没有理论解释,StackExchange上有帖子在讨论原因,但目前没有令人信服的结论 [ 3 ] ^{[3]} [3]
  • 如果这句话只是想表达“对生僻词的训练时间更长”,这是对的但是却没必要提,并且更不能总结成“hierarchical softmax对生僻词很不友好”这种不够明确的结论。哈夫曼编码与哈夫曼树对于结点访问效率的提升是整体的效果,生僻词需要经过更多结点换来的是常用词经过更少的结点,从而换来整体的访问效率(在W2V背景下对应着训练效率)的提升,这是哈夫曼树的精髓而不是缺点,所以说这是对的但是却没必要提.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值