CS224d lecture02 学习笔记

词义

WordNet:词义字典
缺点:(1)分辨不了词义之间的细微差别,如同义词。
(2)有些新词语没有被加入。
(3)主观性比较强。
(4)需要人工创建和调整。
(5)很难计算准确的词汇相似度。

除现代深度学习,几乎所有的NLP研究,都使用原子符号表示词汇。

独热码(one-hot code):直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。
独热词汇向量是一种存储在某处的本地表示。
[0,0,0,0,0,0,0,0,0,0,1,0,0,0,0][0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]
缺点:没有给出任何词汇之间的内在关系概念,难以计算词汇相似性。

分布相似性(Distributional Similarity):通过单词上下文知道单词含义。
分布式表示(Distributed representation):用密集型向量表示词汇的含义。
分布式表示通常是由分布式相似性来构建的。

Word2Vec

核心:构建一个可扩展的、快速的训练模型,可处理数十亿单词的文本,并生成很好的单词表示。
思想:利用语言的意义理论,来预测每个单词和它上下文的词汇。。

skip-gram

在每一个估算步都取一个词作为中心词汇,,然后尝试去预测它一定范围内的上下文的词汇,定义一个概念模型,即给定一个中心词汇,某个单词在它上下文中出现的概率。对一个词汇,有且仅有一个概念分布。
目标函数/损失函数/代价函数(objective/loss/cost function):
J(θ)=t=1Tmjm,j0P(wt+jwt,θ)J'(\theta)=\prod^T_{t=1}\prod_{-m{\leqslant}j{\leqslant}m,j\neq0}P(w_{t+j}|w_t,\theta)

要最大化这个预测概率函数。
模型的负对数函数(正式的目标函数)–最小化:
J(θ)=1Tt=1Tmjm,j0logP(wt+jwt)J(\theta)=-\frac{1}{T}\sum^T_{t=1}\sum_{-m{\leqslant}j{\leqslant}m,j\neq0}logP(w_{t+j}|w_t)

Details:

P(wt+jwt):P(w_{t+j}|w_t):
softmax形式=>概率
P(oc)=exp(uoTvc)w=1Vexp(uwTvc)P(o|c)=\frac{exp(u_o^Tv_c)}{\sum^V_{w=1}exp(u_w^Tv_c)}
oo:输出词汇索引
cc:中心词汇索引
vcv_c:中心词汇向量
uou_o:输出词汇向量

点积:uTv=uv=i=1nuiviu^Tv=u·v=\sum^n_{i=1}u_iv_i
u和v越相似,点积越大。

每个单词都有两个向量。
CS224d lecture02 学习笔记

学习参数

将所有参数放入一个向量θ\theta,对每个单词,都有一个d维向量。

计算过程:vclogexp(uoTvc)w=1Vexp(uwTvc)\frac{\partial}{{\partial}v_c}log\frac{exp(u_o^Tv_c)}{\sum^V_{w=1}exp(u_w^Tv_c)}
=vc(logexp(uoTvc)logw=1Vexp(uwTvc))(Main)=\frac{\partial}{{\partial}v_c}(logexp(u_o^Tv_c)-log\sum^V_{w=1}exp(u_w^Tv_c))——(Main)
Sub(1)logexp(uoTvc)Sub(1):logexp(u_o^Tv_c)
Sub(2)logw=1Vexp(uwTvc)Sub(2):log\sum^V_{w=1}exp(u_w^Tv_c)
计算:(1):vclogexp(uoTvc)=vcuoTvc=uo(1):\frac{\partial}{{\partial}v_c}logexp(u_o^Tv_c)=\frac{\partial}{{\partial}v_c}u_o^Tv_c=u_o
(2)(:vclogw=1Vexp(uwTvc)=1w=1Vexp(uwTvc)vcx=1Vexp(uxTvc)(2)(链式法则):\frac{\partial}{{\partial}v_c}log\sum^V_{w=1}exp(u_w^Tv_c)=\frac{1}{\sum^V_{w=1}exp(u_w^Tv_c)}·\frac{\partial}{{\partial}v_c}\sum^V_{x=1}exp(u_x^Tv_c)
=1w=1Vexp(uwTvc)x=1Vvcexp(uxTvc)=\frac{1}{\sum^V_{w=1}exp(u_w^Tv_c)}·\sum^V_{x=1}\frac{\partial}{{\partial}v_c}exp(u_x^Tv_c)
=1w=1Vexp(uwVvc)x=1Vexp(uxTvc)ux=\frac{1}{\sum^V_{w=1}exp(u_w^Vv_c)}·\sum^V_{x=1}exp(u_x^Tv_c)·u_x
=x=1Vexp(uxTvc)w=1Vexp(uwTvc)ux=\sum^V_{x=1}\frac{exp(u_x^Tv_c)}{\sum^V_{w=1}exp(u_w^Tv_c)}·u_x
=x=1VP(xc)ux=\sum^V_{x=1}P(x|c)·u_x
因此:Main=uox=1VP(xc)uxMain=u_o-\sum^V_{x=1}P(x|c)·u_x
uou_o:实际输出的上下文词汇
x=1VP(xc)\sum^V_{x=1}P(x|c):期望
uxu_x:期望向量(所有可能的上下文向量的平均)

再利用梯度下降使uo=x=1VP(xc)uxu_o=\sum^V_{x=1}P(x|c)·u_x

拓展:Softmax

实际上是有限项离散概率分布的梯度对数归一化,是LR在多分类上的推广:
P(y=ix;θ)=eθiTxj=1KeθiTxP(y=i|x;\theta)=\frac{e^{{\theta}^T_ix}}{\sum^K_{j=1}e^{{\theta}^T_ix}}
损失函数:
l(θ)=1m[i=1mj=1K1{y(i)=j}logeθiTxj=1KeθiTx]l(\theta)=-\frac{1}{m}[\sum^m_{i=1}\sum^{K}_{j=1}1\{{y^{(i)}=j}\}log\frac{e^{{\theta}^T_ix}}{\sum^K_{j=1}e^{{\theta}^T_ix}}]

m个样本,K个类别。
1{y(i)=j}1\{{y^{(i)}=j}\}表示当y(i)y^{(i)}样本类别等于j时,取1.