Word2Vec原理(二)-Negative Sampling与工具包参数

上文提到了word2vec的核心原理,本质上是对bengio的NNLM模型进行的改进, 介绍了cbow与skipgram以及Hierarchical Softmax这一实现细节.此处将继续介绍另一个重要的细节:Negative Sampling, 再补充下工具包的一些参数以及个人使用过程中的一些心得.

从论文出发

以前对Negative Sampling的认识非常浅显,简单地认为,就是随机地增加几个负样本到模型里,以加速收敛.
翻阅部分网上博客跟知乎回答,发现并不是那么简单的问题,然后我把w2v的三篇论文以及NNLM的论文翻了出来,简单阅读了一下,下面综合了部分论文阅读的粗略见解与网上资料.
从工具包作者的论文可以知道, Negative Sampling是Hierarchical Softmax的一个替代品, 目的也是为了提升训练效率.此外,针对NNLM不关心词序,不能表述词组的问题,又给出了相应的解决办法.

Negative Sampling

  • 为什么要Negative Sampling
  1. 提升效率
    假设训练的词典大小为1000, 那么在Softmax层,每一个训练样本需要更新1000个神经元的参数,Hierarchical Softmax也是为了缓解这个问题,使用了霍夫曼树后,需要更新的神经元数的期望值变成了log1000, 作者觉得这个还不够狠,毕竟谷歌的语料非常非常地大.
  2. 加速收敛
    另外还有个问题就是更新全部神经元必定会在收敛过程中走出折线,为什么?因为假设有一条数据是(我, 要), 中心词是我,那么在更新的时候,如果更新全部神经元,其实是相当于把(我,想),(我,得)这些都当做负样本,反之亦然.这样的话,不可避免会在收敛过程中走弯路.
  • Negative Sampling的灵感来源
    作者在文中提到,NCE(Noise Contrastive Estimation)噪声对比估计是Hierarchical Softmax的一个替代方案,这也是前人的论文里使用的方法, 所以在tensorflow版本的word2vec里,直接用的就是nce loss.作者从工程实现的角度,想了个办法去模拟NCE,这个办法就是Negative Sampling.
  • 什么是NCE
    此处查了资料,由于本人数学水平限制,还有少量细节没有明白,有机会再补充了.可以参考[4]以及这个油管上的视频
    ,讲的很好.
  • Negative Sampling怎么做
    首先,输出层的softmax换成二元逻辑回归,这里的做法就是借鉴了NCE的方法.
    其次,每个训练样本看做正样本,并采取一定的策略进行采样,引入一些负样本.
    对于word2vec来说,Negative Sampling核心的内容其实就是这个采样策略.
  • 如何采样
    对词频进行平缓处理后,按照新的权重随机采样.
    平衡的权重为P_{w_i}=\frac{count(w_i)^c}{\sum{}{}count(w_j)^c}, 作者经过大量尝试最终确定此处的超参数为0.75时为最佳,并没有包含理论推导,主要是工程实践的经验值.

论文的其他细节

本文最初提到了,论文作者针对NNLM不关心词序,不能表述词组的问题, 给出了词组的解决方案.

  • 词组学习
    取2-gram,给定打分函数,求出所有成对出现的词组的分数,分数超过设定的阀值的,在训练过程中当做词组,替换为特定的token,但是在工具包的输出文件中,有一个word2phase,可以从语料中提取词组.
    打分函数为score(w_i,w_j)=\frac{count(w_i,w_j)-\delta}{count(w_i)*count(w_j)}
  • 高频词的下采样
    语料中,经常出现诸如:的,这,那....之类的高频词,其实意义并不大,同时又会拖慢训练速度,根据论文中给出的基于词频的概率公式,每个词都有一定概率在迭代过程中被忽略掉.

参数说明

我们现在项目中使用的是官方的c原版工具包,下载地址.因此下面的介绍也从官方包出发.
这是官方包里的demo脚本,下面简单说明参数的含义与用的时候的一些经验.

time ./word2vec -train huashu.txt -min-count 1 -output $SAVEPATH
 -cbow 0 -size 100 -window 7 -negative 0 -hs 1 -binary 1 -iter 50 -threads 20

我的工作背景是垂直领域下的意图识别与槽位抽取.举个最简单的栗子,系统输入一句话:北京今天天气怎么样, 我的任务是识别出意图:查询天气;识别槽位:city=北京.经验性内容也主要来自日常工作,毕竟是个超级学渣.

参数名 意义 经验值
train 输入路径 文本格式为按空格切分的语料
min-count 最小词频 语料库大的时候建议3以上,小的时候1,防止信息丢失
output 输出路径 输出为.bin文件,其实就是每行一个向量,第一行为元信息
cbow 是否使用cbow 为0时使用skipgram
size 输出维度 50以上就行
window 窗口大小 需要尝试,3456效果都还可以,如果语料已分词建议小点
negative 是否使用负采样 为1使用
hs 是否使用层序softmax 为1时使用
binary 是否输出二进制文件 1使用.默认为1就行
iter 迭代次数 我们一般在100以上,语料库大的时候建议小点,
sample 下采样时的超参数 越大则对高频词影响越大,默认为1e-3

根据官网的说明,工具包内还提供了一个效果评测的工具,根据名字就知道是一个类比方法,也就是验证诸如:国王-王后==男-女,这个评价标准其实也来自于论文,实际工作中的效果还是得看具体的任务.

参考文献

[1]刘建平Pinard.word2vec原理(三) 基于Negative Sampling的模型[EB/OL].http://www.cnblogs.com/pinard/p/7249903.html,2017-07-28.
[2]yuyuqi.word2vec(cbow+skip-gram+hierarchical softmax+Negative sampling)模型深度解析[EB/OL].https://zhuanlan.zhihu.com/p/35074402,2018-03-29.
[3]有道团队.Deep Learning实战之word2vec[EB/OL].http://techblog.youdao.com/?p=915#LinkTarget_699,2014-02-27.
[4]苏剑林.“噪声对比估计”杂谈:曲径通幽之妙[EB/OL].https://spaces.ac.cn/archives/5617/comment-page-1,2018-06-13.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343