Word2Vec原理(一)-Cbow与SkipGram

词嵌入

  • 什么是Embedding
    Embedding在数学上表示一个maping, f: X -> Y, 也就是一个映射函数。通俗的翻译可以认为是向量嵌入,就是把X所属空间的向量映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中,一个萝卜一个坑。

  • 为什么词嵌入
    在NLP任务中,我们所遇到的最原始的输入,可能是语音片段(各种智障音箱),也可能是文字片段(智障小冰),要想通过算法完成分类等任务,必须先将输入转换为算法模型可以处理的形式:向量.

  • 什么是词嵌入
    词嵌入(Word Embeding)是用向量来表述词的方式,我个人的理解是,将高维度的原始词向量进行降维处理,同时加入语义信息与上下文信息.这里的词,一般指对原始文本进行分词后得到的最小片段,最近两年的很多工作已经跳过了分词的过程,直接做字符级的嵌入,我们的系统在迭代过程中也做了这样的尝试,并且取得了不错的效果.
    可以说,词嵌入是NLP任务中的基础工作,也是非常关键的一环,词嵌入的好坏直接影响算法模型的效果.

  • 近年主要工作
    最原始的词嵌入方式是onehot,这种方式简单粗暴,并且在某些任务上取得了不错的效果.但是却有非常致命的缺点:只有统计学的意义,无法表征语义,比如沙雕永远不可能被理解为傻吊;此外当词典变大时,向量长度也随之变大,并且词嵌入的结果非常的稀疏,严重影响算法的准度与训练速度.
    2001年, Bengio 等人正式提出神经网络语言模型( Neural Network Language Model ,NNLM),该模型在学习语言模型的同时,也得到了词向量。
    词嵌入研究兴起的主力应该就是谷歌于2013年开源的word2vec了, 后面又出现了fasttext, glove等,去年出了两个影响力较大的与训练词嵌入模型:ELMo与BERT, 暂时没有非常有效的应用.此外,针对中文的词嵌入,还有腾讯AIlab与蚂蚁金融提出的基于文字图像的嵌入模型,实用性未知.

Word2Vec从提出至今,已经成为了深度学习在自然语言处理中的基础部件,大大小小、形形色色的DL模型在表示词、短语、句子、段落等文本要素时都需要用word2vec来做word-level的embedding。Word2Vec的作者Tomas Mikolov是一位产出多篇高质量paper的学者,从RNNLM、Word2Vec再到最近流行的FastText都与他息息相关。一个人对同一个问题的研究可能会持续很多年,而每一年的研究成果都可能会给同行带来新的启发,本期的PaperWeekly将会分享其中三篇代表作,分别是:
1、Efficient Estimation of Word Representation in Vector Space, 2013
2、Distributed Representations of Sentences and Documents, 2014
3、Enriching Word Vectors with Subword Information, 2016

word2vec原理

word2vec主要解决什么问题?
简而言之,如何在一个大型数据集上通过无监督学习快速、准确地学习出词表示.
word2vec是怎么做的?
利用训练语料使用cbow或者skip-gram构建一个单层的神经网络分类器,最终隐藏层的参数向量就是对应词的词向量。
这里从知乎上的一个回答里,得到两张图,可以比较好的解释其训练过程。

word2vec训练过程

word2vec结构

可以看出来,训练过程中只构建了最浅层的的神经网络,输入为one-hot后的向量,输出也为对应的词,实际上作者针对One-hot的问题使用了Hoffman树进行优化。

Cbow与skipgram

  1. cbow
    cbow(continuous bag-of-words)也就是连续词袋模型。简而言之就是用语料中,某个词w左右的n个词去预测w.
    所以使用模型描述就是P(w|context)
  2. skipgram
    skipgram与cbow的思路正好相反,使用每个词去预测其上下文的概率.因此使用模型描述就是P(context|w)
    简单的图对比二者
    cbow与skipgram对比

    那么,如何模型的输入与输出分别是什么?
    输入是根据词典构建的一个初始化词向量, 输出是预测得到的词的词向量.作者使用了霍夫曼编码对softmax过程进行了优化,也就是后面即将提到的层次softmax.
    下面介绍霍夫曼编码.

霍夫曼编码

霍夫曼编码实际上是信息论领域的一种无损压缩的可变长编码算法.这里有几个关键词: 无损压缩, 可变长.不难发现, 首先霍夫曼编码本质上是一种压缩算法,能对信息进行无损的压缩;其次是可变长, 体现在霍夫曼编码是以来源符号出现的频率来进行编码的,并且出现频率越高,编码的比特越少,这样使得最终对所有数据的编码长度之和最小.

  • 霍夫曼编码的构建思路
    通过霍夫曼树(最优二叉树)来逐步构建霍夫曼编码, 霍夫曼树是一种带权路径长度最短的二叉树,其中树的路径长度是从根到每一节点的路径长度之和.
    二叉树的带权路径长度记为:
    WPL=\sum_{n}^{k=1}w_k l_k
    其中,w_k为节点权值,l_k为节点路径长度
  • 霍夫曼算法[1]
    根据霍夫曼树的定义,要使wpl值越小, 必须使权值越大的节点越靠近根节点,不难发现,其实这是一种贪心的思想.由此得到霍夫曼算法的步骤如下:
    (1)根据给定的n个权值\{w_1,w_2...w_n\},构造n棵只有根节点的二叉树.
    (2)在森林中选取两颗根节点权值最小的树作为左右子树,得到的新的树的根节点权值为其左右子树根节点权值之和.权值较小的树放左侧.
    (3)在森林中删除(2)中选择的两棵树,同时加入新的树.
    (4)重复(2)(3)直至只有一棵树.
    示例:
    霍夫曼编码示例

    在word2vec中,使用左侧为1右侧为0,示例中的a就对应1,b对应01,c对应001,d对应000

Hierarchical Softmax

  • 传统的NNLM
    从传统的nnml(神经网络语言模型)说起,通常是简单只包含一个隐藏层的分类器,在计算过程中,由于需要计算每个词的softmax概率,因此输出层的计算量相当大[2].如图


    传统的NNLM
  • word2vec的特点
    word2vec的本质也是一种NNLM,但是作者在基本的NNLM之上,做了一些改进:[2]
    (1)输入层到隐藏层的映射,没有使用线性变换+激活函数,而是采用简单的对所有输入词向量求和并取平均.
    (2)从隐藏层到输出的softmax层,为了避免计算每个词的softmax概率,word2vec采用了霍夫曼树来代替从隐藏层到输出层的映射.
  • 一些分析
    如上图,如果使用传统的NNLM,softmax层的计算复杂度为O(V),而进行编码后需要预测的类别数的期望值为logV,因此计算复杂度至少降低为O(logV)

参考文献

[1]简单爱_wxg.霍夫曼树[EB/OL].https://www.cnblogs.com/wxgblogs/p/5604853.html,2016-06-21.
[2]刘建平Pinard.word2vec原理(二) 基于Hierarchical Softmax的模型[EB/OL].https://www.cnblogs.com/pinard/p/7243513.html,2017-07-27.

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

推荐阅读更多精彩内容

  • word2vec是google在2013年推出的一个NLP工具,它是将所有的词向量化,这样词与词之间就可以定量的去...
    高永峰_GYF阅读 3,746评论 0 5
  • 一、如何表示一个词语的意思 在计算机中如何表示一个词的意思 过去几个世纪里一直用的是分类词典。计算语言学中常见的方...
    DataArk阅读 3,831评论 0 8
  • 最近新接触文本分类问题,对于我来数第一个问题就是Word Embedding这个词到底是什么意思,因此也就开始学习...
    小松qxs阅读 24,848评论 2 27
  • 本文基于word2vec原理CBOW与Skip-Gram模型基础CBOW与Skip-Gram的模型计算的推导待补充...
    浩_c66f阅读 704评论 0 2
  • 那个女孩去哪儿了?是换班了吗? 少帅悚然一惊,他忽然意识到自己似乎忽略了一个很重要的人。按理说,以一个五星级大酒店...
    阿斯顿老马阅读 565评论 4 21