本《Word Embedding系列》文章包括:
(1)One-hot编码
(2)Word Embedding
(3)LSA(Latent Semantic Analysis)
(4)Word2vec的CBOW模型
(5)Word2vec的Skip-gram模型
(6)GloVe模型
(7)相关编程实现
本文介绍Word2vec的CBOW模型
一、回顾Word Embedding
词向量(词嵌入,Word Embedding)已经比较熟悉了,可以看 (2)Word Embedding 这个系列的第二章。
在本章部分提到的Word2vec就是词嵌入的一个典型例子,在NLP中一提到词嵌入的时候,就会第一时间想到了Word2vec,第二章中提到的Word Embedding可以理解成将高维的特征降维,用低维的向量去表示特征信息。
在Word2vec中词嵌入体现在哪里呢?
答案是:输入矩阵,下面来一一讲解。
二、什么是Word2vec?
刚刚提到,Word Embedding可以理解成降维,在Word2vec中是通过矩阵
W
V
×
N
{W_{V \times N}}
WV×N来体现,输入层是一个用one-hot方式编码的单词向量
x
=
(
x
1
,
.
.
.
,
x
V
)
x = ( x_1 , . . . , x_V )
x=(x1,...,xV),其中只有一个
x
i
x_i
xi为1,其余均为0.
从输入层到隐藏层权重值可以用一个
V
×
N
V × N
V×N维的矩阵
W
V
×
N
{W_{V \times N}}
WV×N来表示。
其中
W
W
W 矩阵的每一行代表的是一个与输入层相关的单词的N维向量表示形式
v
w
v_w
vw。(这里就体现到了Word Embedding,因为我们拿单词向量
x
=
(
x
1
,
.
.
.
,
x
V
)
x = ( x_1 , . . . , x_V )
x=(x1,...,xV)去点乘
W
W
W时,就是索引矩阵
W
W
W在
x
i
x_i
xi为1的这一行,于是
V
×
N
V × N
V×N维的矩阵
W
V
×
N
{W_{V \times N}}
WV×N将原本V维的单词向量降维到N维度的向量。)
那么假设我们给定了一个输入单词(a context),其单词向量的第k个元素
x
k
=
1
x_k = 1
xk=1,其余均为0,则有
(1)
从上式我们可以看出, h 向量完全是从 W 矩阵第k行复制过来的(同
v
w
I
v_{wI}
vwI 均为N维向量)。
v
w
I
v_{wI}
vwI 即为输入单词
w
I
w_{I}
wI 的一种向量表示(其实就是词嵌入后的输入向量,我们后面会提到)。
其实这部分有篇博客讲的非常棒:
1、 Word2Vec (Part 1): NLP With Deep Learning with Tensorflow (Skip-gram)
2、《word2vec Parameter Learning Explained》论文学习笔记
还有一部分是看CS224n整理的笔记:
三、Word2vec的CBOW模型
在《word2vec Parameter Learning Explained》论文学习笔记 这篇给翻译的文章中有详细的关于CBOW的讲解过程,原文章的作者Rong Xin 于2017年驾驶飞机失事,永远离开了我们。
我这里仍然附上一篇 CS224n-2019 笔记列表 整理的博客。
关注CBOW模型,你需要知道两个点:
(1)CBOW 是根据中⼼词周围的上下⽂单词来预测该词的词向量。如何通过多个上下文的输出向量得到一个最终向量的?
答案是:求向量的平均值(当然还有其他高效的方法)
(2)输入词矩阵和输出词矩阵是如何更新的?
最后再附上自己的笔记吧:
参考博客:
【1】Word2Vec:https://www.tensorflow.org/tutorials/text/word2vec
【2】word2vec详解:https://nocater.github.io/2018/12/29/word2vec%E8%AF%A6%E8%A7%A3/
【3】Word2Vec Tutorial - The Skip-Gram Model:http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
【4】Embedding从入门到专家必读的十篇论文:https://zhuanlan.zhihu.com/p/58805184
【5】[NLP] 秒懂词向量Word2vec的本质:https://zhuanlan.zhihu.com/p/26306795
【6】理解 Word2Vec 之 Skip-Gram 模型:https://zhuanlan.zhihu.com/p/27234078
【7】Word2Vec介绍:直观理解skip-gram模型:https://zhuanlan.zhihu.com/p/29305464