Skip-gram模型与Hierarchical Softmax, Negative Sampling的优化方法

    以前已经看过很多次Skip-gram模型,负取样方法,但是真正用的时候,对其中的原理仍然是一知半解,最近又阅读了一下‘Distributed Representations of Words and Phrases and their Compositionality’这篇文章,想把自己看懂的地方记录下来。可能部分内容有网络的引用,因为完全是比较粗糙的自己记笔记,就不一一列出了。

Skip-gram模型

    Skip-gram 模型是给定一个当前词word,去预测其上下文context。训练的目标就是去找到word的表示,该表示对于预测其上下文是有用的。它的目标函数是:


    基本的函数定义其概率是采用softmax函数:


    补充:softmax函数多用于多分类问题和神经网络中,能将一些参数,数据映射为(0-1)区间的概率输出。

Hierarchical Softmax优化

    因为概率的分母需要遍历整个word集合,这个计算代价是非常大的。hierarchical softmax采用了一个二叉树(详见我的另一篇博客)的表示形式,W个词作为叶子节点,对于每个节点,明确地表示两个相对子节点的概率,采用随机游走(详见我的另一篇博客)的形式定义词的概率,概率的形式转变为:


    举例说明,采用哈夫曼树的形式来构建二叉树,如下图所示:


    其中从根节点到达叶子的过程中,每一次分支都相当于一次二分类的过程,目标函数转变为:


    其中n(w,j)是根节点到达w路径上的第j个节点,L(w)是路径的长度,ch(n)是n的任意一个固定的孩子,所以,目标函数可以解释为,因为经过L(w)-1次的二分类,所以概率是每一次二分类概率的乘积,[[]]里面的判断部分,如果正确二分类则为1,否则0。如果到达w的路径上的第j+1个节点与路径上节点第j个节点的任意子节点相同,有点绕呀!就是路径上的下一个节点是不是当前路径节点的子节点。算法复杂度变为了log(W)

Negative Sampling

    负取样方法真的是大名鼎鼎的,看过的好多篇论文都是采用这个方法进行优化的呀。自己理解它的主要思想就是让正例最大化,负例最小化,将二者的差值变大。目标函数如下:


其中第一项是正例,可以理解为确实是互为上下文的关系,第二项是负例,表示取k个负例,它的取样方法Pn(w)为unigram取样,即为(word的次数/总数),这里采用的是3/4,就是分子乘以3/4次幂,E代表取服从该分布的均值。

觉得自己好像已经理解了这几个模型,但是我的表述应该不清楚,希望大家也都能理解,还是推荐大家阅读算法出处的英文论文,会更通透!




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值