从今天开始对cs224n的学习进行记录,争取可以把每一个内容弄明白!!!

关于word2vec 以前只知道是一种得到词向量的算法:

两个算法:

  • Skip-grams (SG):预测上下文
  • Continuous Bag of Words (CBOW):预测目标单词

两种稍微高效一些的训练方法:

  • Hierarchical softmax
  • Negative sampling

Skip-gram理解

使用gensim训练word2vec损失一直增加_中心词

这里是已banking为中心词 预测前后的四个词,窗口大小是5 

目标函数是希望所有位置的预测结果的乘积最大:

使用gensim训练word2vec损失一直增加_词向量_02

取负对数得到损失函数(Loss function = cost function = objective function 都是损失函数):

使用gensim训练word2vec损失一直增加_中心词_03

 

 

使用gensim训练word2vec损失一直增加_相似度_04

老师的这张图真的太好了,把我多年的困惑给搞明白:最左边是中心词

使用gensim训练word2vec损失一直增加_词向量_05

的one-hot向量维度是V*1(V是训练的词向量词库的大小,很大!!!),乘以center word的W参数,维度是d*V(d是我希望得到的词向量的长度,一般是300左右)。得到一个hidden layer的结果

使用gensim训练word2vec损失一直增加_skip_grans  softmax_06

 ,一个d*1维的向量,

使用gensim训练word2vec损失一直增加_skip_grans  softmax_06

 乘以另一个context word的矩阵W'得到中心词对于词库中每一个词的“相似度”,这里得到的是一个V*1的列,每一行的大小是

使用gensim训练word2vec损失一直增加_词向量_08

,这里的

使用gensim训练word2vec损失一直增加_词向量_09

代表 w' 的第i 行

使用gensim训练word2vec损失一直增加_skip_grans  softmax_10

是hidden layer的结果。然后对相似度取softmax得到概率,与答案对比计算损失。

这两个矩阵都含有V个词向量,也就是说同一个词有两个词向量,哪个作为最终的、提供给其他应用使用的embeddings呢?有两种策略,要么加起来,要么拼接起来。在CS224n的编程练习中,采取的是拼接起来的策略:

 

使用gensim训练word2vec损失一直增加_词向量_11

这里 预测到的某个上下文条件概率

使用gensim训练word2vec损失一直增加_相似度_12

可由softmax得到:

使用gensim训练word2vec损失一直增加_词向量_13

这里o是输出的上下文词语中的确切某一个,c是中间的词语。

使用gensim训练word2vec损失一直增加_相似度_14

是词向量(参数矩阵w' 对应的第o行),

使用gensim训练word2vec损失一直增加_相似度_15

是词向量(参数矩阵w' 对应的第w行),

使用gensim训练word2vec损失一直增加_skip_grans  softmax_10

是中心词的one-hot向量乘以参数矩阵W得到的hidden layer 词向量。

W中的向量叫input vector,W'中的向量叫output vector。

训练模型:计算参数向量的梯度

把所有参数写进向量θ,对d维的词向量和大小V的词表来讲,有:

使用gensim训练word2vec损失一直增加_cs224n_17

 因为是有W、W'两个参数矩阵,所以所有参数θ的维度是2d*V

然后计算梯度。

跟着manning老师手推了一下,加强理解

使用gensim训练word2vec损失一直增加_skip_grans  softmax_18

使用gensim训练word2vec损失一直增加_cs224n_19

使用gensim训练word2vec损失一直增加_相似度_20

 

使用gensim训练word2vec损失一直增加_相似度_21

 

使用gensim训练word2vec损失一直增加_词向量_22

使用gensim训练word2vec损失一直增加_中心词_23

更新参数

使用gensim训练word2vec损失一直增加_相似度_24

 

 

大概就是这样吧,主要跟着老师把公式捋了一下。

接下来试试把

  • Skip-grams (SG):预测上下文
  • Continuous Bag of Words (CBOW):预测目标单词
  • Hierarchical softmax
  • Negative sampling 

这两种算法和两种训练方法结合捋一下。