这是NLP的第2篇笔记
B站课程链接
[参考笔记1](stanfordnlp/cs224n-winter17-notes: Course notes for CS224N Winter17 (github.com))
[课件](2019 最新斯坦福 CS224nNLP 课件-资源-AI研习社 (yanxishe.com))
课程目录
有趣的是,有一个5分钟的highlight环节,会让TA展示一下最新的paper,以及为什么这些研究成果吸引人。为这个安排点赞
意思是什么 Word meaning
英文中 meaning的解释
Definition: meaning (Webster dictionary)
• the idea that is represented by a word, phrase, etc.
• the idea that a person wants to express by using words, signs, etc.
• the idea that is expressed in a work of writing, art, etc.
计算机如何处理词语的意思
### distributed representationst 离散表示/符号(寻找同义词)
计算语言学中常见的方式是WordNet那样的词库
可以通过WordNet查询熊猫的hypernyms (is-a,上位词),得到“食肉动物”“动物”之类的上位词。也可以查询“good”的同义词——“just品格好”“ripe熟了”。
左边是panda的同义词,右边是 good同义词
discrete symbols 离散符号的问题
- 缺少细微差别,例如同义词: adept, expert, good, practiced, proficient, skillful
- 缺少新词(无法跟上时代):wicked, badass,crack, ace, wizard, genius, ninja
- 主观的
- 需要人类的劳动去创造和适应
- 很难计算出准确的单词相似度
- 没有结合上下文联系
one-hot 除了一个地方是1,其他都是0
无论是规则学派,还是统计学派,绝大多数NLP学家都将词语作为最小单位。事实上,词语只是词表长度的one-hot向量,这是一种localist representation(大概是借用localist“局部”的意项)。在不同的语料中,词表大小不同。Google的1TB语料词汇量是1300万,这个向量的确太长了。
通过上下文表示单词 Representing words by context
Distributional similarity based representation
- 统计机器学习最成功的方法之一
- 通过上下文(一个固定的窗口,比如周围前后5个词)来预测这次的意思
- 根据这个词,来预测词的上下文
Distributional similarity based representation 一种关于词汇语义的理论,通过上下文表示词语的意思
Denotational idea of word meaning 单词的字面含义,比如眼镜指的是一副一副完整的眼镜。鸡蛋是指的1个鸡蛋,而不是2个
Word vectors 词向量
什么是Word vectors词向量
词向量也被称为词嵌入、(神经)词表示。它们是一种分布式表示
我们为每个单词构建一个向量,选择这样的词,使其与出现在类似上下文中的单词向量相似,用向量点(标量)乘积来度量相似度(一般是一个300维的向量)
高维词向量映射到2维空间的可视化(PCA)
Word2Vec
什么是 Word2Vec
Word2vec is a framework for learning word vectors
Word2vec:利用语言的意义理论,来预测每个词和他的上下文
Wt: 中心词
W-t: 除了它之外的所有上下文(负号通常表示除了某某之外)如果完美预测,损失函数为零。
定义一个以预测某个单词的上下文的模型
目标:在给定当前中心词的情况下,使任何上下文词出现的概率最大化,让损失函数最小化
上下文出现的概率: p(context|wt)
目标函数/损失函数定义如下:J = 1−p(w−t|wt)J
然后在一个大型语料库中的不同位置得到训练实例,调整词向量,最小化损失函数。
可以定义的超参数hyperparameter: window的大小等(这里先忽略)
具体过程
- 我们有一个庞大的文本语料库:一个长长的单词列表,
- 固定词汇表中的每个单词都由一个向量表示.
- 浏览文本中的每个位置t,其中有中心词c和上下文
- 词o使用c和o的词向量的相似度来计算给定c时o出现的概率(反之亦然)
- 不断调整词向量来最大化这个概率
英文过程原文
- We have a large corpus (“body”) of text: a long list of words
- Every word in a fixed vocabulary is represented by a vector
- Go through each position t in the text, which has a center word c and context (“outside”) words o
- Use the similarity of the word vectors for c and o to calculate the probability of o givenc (or vice versa)
- Keep adjusting the word vectors to maximize this probability
具体的计算过程
- C: 这个词Wt的词向量(单列向量),如果Wt是一段话,那么就是多列向量
- T: 这个词的上下文的词向量
- 两个向量做点积(越相似,结果应该越大)
- exp:Softmax操作,对得到的向量做softmax操作,让概率为正,并且合为1,
- 得到概率
个人觉得老师板书的更容易理解(one hot)
从左到右分别为
- 中心词的 one hot词向量Wt V * 1
- 所有中心词组成的矩阵W 1行表示1个词 d * V
- 矩阵相乘得到Vc, 就是W * Wt = d * 1 得到中心词的词向量(Vc)
- 这个中心词的context矩阵: V * d
- context矩阵乘以中心词的词向量Vc V*d 乘以 d * 1 等于 V * 1
- 对这个向量进行softmax操作
- 得到每个词对应的上下文的概率
最右边是实际应该出现的上下文,和softmax预测之后的结果对比,就产生了误差loss,我们可以根据这个loss来调参
Softmax的解释
low-dimensional word vectors 低纬向量表示
Word2Vec 2个算法
- skip-gram(SG)
- 根据中心词预测周围上下文的词的概率分布(位置无关)
- Continuous Bag of Words(CBOW)
- 预测目标词的词向量,根据bag-of-words上下文
2个训练方法
-
- 分层softmax
-
- 消极的抽样
但在这门课里,只讲了Naïve softmax,其他的两种算法和两种训练方法的四种组合请参考大神笔记
word2vec原理推导与代码分析-码农场 (hankcs.com)
CS224n lecture 1&2 Introduction and Word Vectors - 掘金 (juejin.cn)