Introduction and word vectors
预习部分
- 上完课回过头来需要问自己哪些问题?
NLP中使用的核心方法有哪些,阐述对他们的理解。
语言是如何产生的,产生和理解过程中有哪些困难。
使用PyTorch搭建框架解决实际问题。 - P11的换算是什么意思?
- 如何在电脑当中存储有用的含义?
一般的解决办法是使用WordNet,用来存储同义词集和相关词集。
这种方法的问题如下:
无法识别细微的差别,比如某个词语仅仅在某种情况下才是该词的同义词。
很难跟上语言更新的速度。
需要大量的人力去创造和调整。
不能度量词语之间相似的程度。 - 如何在电脑中表示words?
传统NLP当中使用one-hot vectors表示单词,但是这样无法表示相似的词语,无法描述单词之间的关系。
如果简单的建立一个关系矩阵的话,需要储存的数据量又会过大。
所以我们现在的思路就是将单词的关系存储在单词的表示当中。
为了解决这个问题,提出分布式语义,具体含义是一个单词的含义是由附近的单词所给出的。
P17的向量每个数字都表示什么?长度有什么含义吗? - word2vec是什么?
是一个框架,或者说是算法,输入text,输出单词的vector。
思路大概为遍历text,使用单词向量的相似度来计算已知context的情况下预测得到该 单词的概率。不断调整单词向量使得概率最大。
P22的目标函数为什么是已知该单词预测context的概率乘积,难道不是反过来吗?
回答:实际上有两种模型可以选择,分别是Skip-grams和Continuous Bag of Words,前者是已知中心词预测周围词,后者是已知周围词预测中心词。也就是说两种思路都可以,只是我们现在呈现的是前者。
大概是用梯度下降法进行求解,但是细节部分还没看太仔细。
课程笔记
- 语言交流是一种带宽很低效率也很低的交流方式,但是加上我们脑中的信息库,我们可以获得很多的信息。
- 语言学家如何理解一个单词的含义?
一个词语所包含的idea以及外延。 - P17的向量每个数字都表示什么?长度有什么含义吗?
数字没有具体的含义。
维度越大,那么和样本拟合的就会越精确。
维度一般是50以上,如果想要得到比较好的结果,需要300的长度。 - 单词的距离图是怎么可视化的?
实际上50维+的单词很难被可视化,所以PPT当中的距离图是将其映射到两维之后可视化的结果。 - 目标函数为什么要从Likehood作数学处理?
负号是为了变成求最小值;
除以单词的个数,是为了使得结果与语料库的规模是无关的;
log会使得计算变得更加简单。 - P22的目标函数为什么是已知该单词预测context的概率乘积,难道不是反过来吗?
对于式子的理解没有错误,目标确实是使得根据中心词正确预测周围词的概率最大。 - Word2vec的prediction function怎么理解?
P ( o ∣ c ) = e x p ( u o T v c ) ∑ w ∈ V e x p ( u w T v c ) P(o|c)=\frac{exp(u_o^Tv_c)}{\sum_{w \in V}exp(u_w^Tv_c)} P(o∣c)=∑w∈V?exp(uwT?vc?)exp(uoT?vc?)?
点积的作用是度量两个向量之间的相似性;
exp的作用是将数值保持正数。
因此分子项作用是求两个向量之间的相似性,分母项的作用可以说是标准化。
这里的c指的是中心的单词,o指的是周围的单词。
和softmax函数之间的关系 - 迭代优化部分的思路是怎样的?
参数:每个单词的向量表示
数学推导
最基础的目标函数,含义为已知该单词预测context的概率乘积,求解结果最大时候的单词向量的结果。
L ( θ ) = ∏ t = 1 T ∏ ? m < = j < = m j ≠ 0 P ( w t + j ∣ w j ) L(\theta)=\prod_{t=1}^T\prod_{-m<=j<=m j\neq0} P(w_{t+j}|w_j) L(θ)=∏t=1T?∏?m<=j<=mj??=0?P(wt+j?∣wj?)
为了便于求解,将上述式子转化为以下式子。
J ( θ ) = ? 1 T l o g L ( θ ) J(\theta)=-\frac{1}{T}logL(\theta) J(θ)=?T1?logL(θ)
P ( o ∣ c ) = e x p ( u o T v c ) ∑ w = 1 v e x p ( u w T v c ) P(o|c)=\frac{exp(u_o^Tv_c)}{\sum_{w=1}^vexp(u_w^Tv_c)} P(o∣c)=∑w=1v?exp(uwT?vc?)exp(uoT?vc?)?
使用梯度下降法进行求解。
J ( θ ) = ? 1 T l o g ∏ t = 1 T ∏ ? m < = j < = m j ≠ 0 P ( w t + j ∣ w j ) = ? 1 T ∑ t = 1 T ∑ ? m < = j < = m j ≠ 0 l o g P ( w t + j ∣ w j ) J(\theta)=-\frac{1}{T}log\prod_{t=1}^T\prod_{-m<=j<=m j\neq0} P(w_{t+j}|w_j)=-\frac{1}{T}\sum_{t=1}^T\sum_{-m<=j<=m j\neq0}logP(w_{t+j}|w_j) J(θ)=?T1?log∏t=1T?∏?m<=j<=mj??=0?P(wt+j?∣wj?)=?T1?∑t=1T?∑?m<=j<=mj??=0?logP(wt+j?∣wj?)
? l o g P ( o ∣ c ) ? v c = u o ? ∑ x = 1 v P ( x ∣ c ) u x \frac{\partial logP(o|c)}{\partial v_c}=u_o-\sum_{x=1}^{v}P(x|c)u_x ?vc??logP(o∣c)?=uo??∑x=1v?P(x∣c)ux?
? J ( θ ) ? v t = ? 1 T ∑ t = 1 T ∑ ? m < = j < = m j ≠ 0 ( w t + j ? ∑ x = 1 v P ( w x ∣ w t ) w x ) \frac{\partial J(\theta)}{\partial v_t}=-\frac{1}{T}\sum_{t=1}^T\sum_{-m<=j<=m j\neq0}(w_{t+j}-\sum_{x=1}^{v}P(w_x|w_t)w_x) ?vt??J(θ)?=?T1?∑t=1T?∑?m<=j<=mj??=0?(wt+j??∑x=1v?P(wx?∣wt?)wx?)
Note
单词的表示方法是NLP模型构建的第一步。Word Vector是主流的单词表示方法。
以下介绍几种使用Word vector表示单词的方法。
One-hot
SVD-based method
首先是构造co-occurrence矩阵,包括构造word-document矩阵和window-based矩阵。
前者的元素是第i个word在第j个文档中出现的次数;包含的含义是同一个文档内的单词关系更加密切。
后者的元素是第i个word在第j个word的window内出现的次数;包含的含义是出现在周围的单词关系更加密切。
然后对构建的矩阵应用奇异值分解进行降维。
Iteration-based method Word2Vec
主要思想是:
补充
高数求导公式一览
- 幂函数的导数
- 对数函数的导数
- 三角函数的导数
- 和差积商的求导法则