CS224n winter 2019-(1)Introducti
CS224n stanford主页
该链接包含课程的视频、课件、笔记,强烈推荐。
b站中文字幕
使用b站新版网页界面,播放器右下角可以调出中文字幕。
斯坦福 CS224n 中文笔记整理活动 | ApacheCN
本次课程的内容
1.The course
(0:00~9:52)
主要介绍了课程相关信息,与往年不同的是这次课程使用pytorch而不是tensorflow。
2.Human language and word meaning
(9:53~20:45)
以几个场景切入解释了语言重要的原因。
(20:46~22:46)
我们用文字词句表达意图与含义,在语言学中即一个符号(signifier)⇔一个想法与事物(signified)。
这又称为指称语义(denotational semantics)。
(22:47~25:42)
在计算机上处理文字词句含义时,我们常用WordNet,其中包含了大量的同义词集(synonym sets)和上位词(hypernyms,即IsA,知识图谱概念之间的连接关系也是如此)。
python调用WordNet
(25:43~27:10)
WorldNet的缺点:
1.文字间的细微差别无法准确识别。
2.不能准确包含文字所有含义,毕竟文字词义在不断更新。
3.主观性强。(只有固定的离散同义词集,即只有0和1没有相似程度)
4.需要大量的人力进行标注。
5.难以准确计算字词之间的相似性。
(27:11~32:35)
用离散符号表示文字词句(one-hot编码)会遇到的问题是:
1.词语数量大时向量也会太大。
2.所有向量两两正交,无法表现出文字语句间的相似度。
因为WordNet的种种缺点,用WordNet来计算文字语句的相似度也不合适。所以我们可以想办法在编码时就包含相似度。
(32:36~34:38)
J.R.Firth提出了分布式语义(Distributional semantics)。区别于指称语义(denotational semantics),分布式语义认为语义应该结合文字词句的上下文来确定,我们可以利用单词 w 的上下文来为单词 w 构建语义。单词 w 的上下文是指出现在其周围的单词文本(在w左右设定一个固定大小的窗口)。
(34:39~35:46)
词向量即构建一个稠密向量,包含的每一位都有数字(区别于稀疏的one-hot向量)。这是一种分布式的表示方法,又被称为词嵌入。
(35:47~37:53)
可视化将9维词向量投影到2维平面上,可以看到意思相近的单词距离会比较近。
3.Word2vec introduction
(37:54~43:58)
Word2vec是Mikolov在2013年提出的一个词向量框架。我们有大量的文本,文本中出现的每一个单词都用一个向量表示。遍历文本中的每一个位置t有中心词c和外部词o,即分布式语义中的单词w和单词w的上下文。
利用c和o的词向量相似度来计算P(o|c)或P(c|o),接着持续调整词向量来最大化条件概率。(具体如何计算调整见下一段落)
一个例子
(43:59~53:00)
上一个段落提到了最大化概率及调整词向量。在这里我们定义Word2vec的目标函数,下面两张图非常清楚明了:
目标函数
θ是要优化的参数,即词向量的每一位。
分母中的V是词汇表,即中心词c和词汇表中的所有单词计算指数向量积
这个式子即softmax
(53:01~54:54)
需要优化的θ这里的θ是一个2Vxd的矩阵,注意每一个单词都有u,v两个向量所以是2V。
4~6.Optimization
(54:55~73:06)
这里老师左手持笔激情洋溢地在黑板上推导偏导数~梯度下降和链式求导的细节这里就不展开了。
推导过程
另外课件中提到了SG和CBOW的概念(课上没讲)。以上的word2vec算法又被叫做Skip-Gram model(SG),还有另一种word2vec算法是Continuous Bag of Words(CBOW)。区别是Skip-Gram是求o(context word)相对于c(center word)的条件概率,而CBOW是求c(center word)相对于o(context word)的条件概率。还提到了优化训练速度的负采样(softmax的分母计算量会极大减慢训练速度)。
(73:07~81:51)
介绍了Gensim,这是一个python的库。在最上面的stanford主页链接可以下到代码。