Word2Vec原理(一)-Cbow与SkipGram

2019-04-09  本文已影响0人  MashoO

词嵌入

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.
    下面介绍霍夫曼编码.

霍夫曼编码

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

Hierarchical Softmax

参考文献

[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.

上一篇 下一篇

猜你喜欢

热点阅读