学习总结

(1)word2vec主要是利用文本中词与词在局部上下文中的共现信息作为自监督学习信号;
(2)还有一种稍微古老的估计词向量方法——基于矩阵分解,如在LSH潜在语义分析,手下对预料进行统计分析,获得含有全局统计信息的【词-上下文】共现矩阵;然后,利用SVD进行降维。但是这样做不具有良好的几何性质。
(3)改进(2)的矩阵分解分解方法, 就提出了Glove方法。

文章目录

一、回顾

1.1 模型思想

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理

上次对word2vec开了个头,也说了为了优化训练速度,可以用SGD,即Stochastic gradient descent 随机梯度下降。迭代地在每个滑动窗口为SGD取梯度;由于每个窗口只有 2m+1 个单词,所以该向量会很稀疏:
【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_02
关于word2vec有两种模型:skip-gram和CBOW。

二、梯度下降进行优化

Stochastic gradients with word vectors!

1.2 负采样(skip-gram)

在CBOW模型中,通过对【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_03进行负采样,同样能获得对应于正样本【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_04的负样本集合,下面则是基于Skip-gram讲解负样本。
归一化的训练计算代价很高,所以可以使用负采样(HW2有这个任务)。

主要思想:基于一个true pair(中心词和上下文词)和几个noise pair(中心词和随机单词),训练一个二元逻辑回归模型。

提出负采样的论文:“Distributed Representations of Words and Phrases and their
Compositionality” (Mikolov et al. 2013)

最大化目标函数:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_05


其中logistic/sigmoid函数:【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_06

即最大化在first log中的两个词的共现概率,最小化noise words的概率。
注意在HW2中我们的公式表示是:【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_07

三、共现矩阵

3.1 一个栗子

这里有两种option:

  • window:类似word2vec,使用滑动窗口,捕获语法和语义信息。
  • word-document:会给出一般形式的主题,导致LSH(Latent Semantic Analysis,潜在语义分析)。

【栗子】

一个三句话的语料库:

• I like deep learning

• I like NLP

• I enjoy flying

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_08


上面矩阵的含义,比如I 和 like在第一二句话中都有出现,所以在共现矩阵的元素值为2。

3.2 降维操作

为了将高维向量转为低维的稠密向量。需要进行降维。

经典的方法:

(1)SVD方法

对共现矩阵,进行SVD分解,Singular Value Decomposition后的U和V矩阵都是正交矩阵(orthonormal)。

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_09

(2)改进SVD

论文:Hacks to X (several used in Rohde et al. 2005 in COALS)

  • 使用倾斜的窗口能够计数靠近的单词,而非更远的单词。
  • 使用pearson相关系数计数。

论文:COALS model from
Rohde et al. ms., 2005. An Improved Model of Semantic Similarity Based on Lexical Co-Occurrence

四、Glove

官方github:https://github.com/stanfordnlp/GloVe

Count based vs. direct prediction:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_10

4.1 Encoding meaning components in vector differences

Glove模型目标:词的向量化表示,使得向量之间尽可能多蕴含语义和语法信息。
方法概述:首先基于语料库构建词的共现矩阵,然后基于共现矩阵和GloVe模型学习词向量。
开始 -> 统计共现矩阵 -> 训练词向量 -> 结束

栗子:比如有一个语料库:

i love you but you love him i am sad

现在窗口为5,即中心词左右两边有2个单词组成的统计窗口,窗口0、1长度小于5是因为中心词左侧内容少于2个,同理窗口8、9长度也小于5。窗口内容如下:

窗口标号

中心词

窗口内容

0

i

i love you

1

love

i love you but

2

you

i love you but you

3

but

love you but you love

4

you

you but you love him

5

love

but you love him i

6

him

you love him i am

7

i

love him i am sad

8

am

him i am sad

9

sad

i am sad

论文:Encoding meaning components in vector differences
[Pennington, Socher, and Manning, EMNLP 2014]

Encoding meaning in vector differences

[Pennington, Socher, and Manning, EMNLP 2014]

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_11


算出对应的比例数值:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_12

一个问题:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_13

4.2 预训练任务

4.3 参数估计

Glove通过优化以下加权损失函数进行学习:
【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_14
其中:

  • 【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_15表示词w与上下文c在受限窗口大小内的共现次数;【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_16是共现矩阵
  • 【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_17表示每一个【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_18样本的权重,样本的权重与其共现次数有关:共现次数少的样本则噪声较大,权重小,高频共现样本也要避免过高权重
  • 【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_19表示中心词w的向量表示,【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_20表示上下文c的向量表示
  • 【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_21【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_22分别表示相应的偏置项

权重函数首先应该是非减的,其次当词频过高时,权重不应过分增大,所以具体的权重函数:
【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_23

五、 词向量的评估

(1)Intrinsic Evaluation内部任务评价方法:对词义相关性或类比推理性的表达能力进行评价。
(2)Extrinsic Evaluation外部任务评价方法:在实际任务中,根据下游任务的性能指标进行判断。

5.1 词义相关性

5.2 Glove可视化

比如比较级和最高级:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_24

5.3 和其他算法的比较

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_25

六、解决一词多义问题

论文1:Improving Word Representations Via Global Context And
Multiple Word Prototypes (Huang et al. 2012)

论文2:Linear Algebraic Structure of Word Senses, with
Applications to Polysemy (Arora, …, Ma, …, TACL 2018)

七、分类模型复习

7.1 Classification intuition

最简单的方法用线性decision boundary进行分类,如下图:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_26

7.2 Softmax分类器

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_27

7.3 交叉熵损失函数

交叉熵概念源于信息论,假设真实的概率分布为p,我们要计算的模型的概率为q:
【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_28

7.4 传统的ML优化过程

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_29

八、Neural Network Classifiers

用的是非线性的decision boundaries,所以能够更好的拟合数据。

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_30

8.1 不同点1:

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_31

8.2 不同点2:一个神经网络=同时进行多个LR

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_32

九、Named Entity Recognition (NER)

命名实体识别。

十、Lesson3:Neural net learning

10.1 正向传递

Forward pass: compute results of operations and save intermediate values,即计算结果并保存中间值。

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_词向量_33

10.2 反向传播

Backward pass: apply chain rule to compute gradients,即反向传播利用链式求导法则求梯度。

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_34

10.3 举栗子

现在以 【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_35

(1)正向传递

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_中心词_36

(2)反向传播

【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_自然语言处理_37


注意虽然这里的【CS224n】(lecture2~3)Word Vectors, Word Senses, and Neural Classifiers_sed_38不求也可以,但是在pytorch是会求出来的(因为如果是多层,则需要用到该中间层求得的的梯度)。

Reference

(1)课程ppt:https://web.stanford.edu/class/cs224n/slides/
(2)Speech and Language Processing :https://web.stanford.edu/~jurafsky/slp3/
(3)课程官网:https://see.stanford.edu/Course/CS224N#course-details
(4)​​​理解Glove模型具体推导过程​