CS224N-2019笔记1.Word Vector

寒假时间花了十多天看完了CS22N 2019的19节课程,边看视频边做笔记写了20多页的A4纸,纸质稿写完了就容易记完就丢弃了,所以把它写成电子版一并再写写个人心得整理一下。


1. Word Vector

one-hot向量
v w 1 = [ 1 , 0 , 0 , 0 , 0 , 0 , . . . ] ∈ R v o c a b s i z e v_{w1} = [1,0,0,0,0,0,...]\in R^{vocabsize} vw1=[1,0,0,0,0,0,...]Rvocabsize
v w 2 = [ 0 , 1 , 0 , 0 , 0 , 0 , . . . ] ∈ R v o c a b s i z e v_{w2} = [0,1,0,0,0,0,...]\in R^{vocabsize} vw2=[0,1,0,0,0,0,...]Rvocabsize
该单词对应所在元素为1,向量中其他元素均为0
one-hot十分稀疏 ,维度较大。sparse vector,人们希望构建dense vector,大多数元素不为零且维度较小的向量,并且希望在相似的context下的word vector也较为相似。

于是有了Word2Vec(2013)
核心思想就是已知我们有了很大的文本库(corpus),当我们用固定窗口不断的扫过文本库的句子时,我们有位于中间的center word c及其周边的单词们context words o, 而它们的相似度可用给定c的情况下o的条件概率来表示,我们不断的调整word vector使得这个概率最大化。

P ( O = o ∣ C = c ) = e x p ( u o T v c ) ∑ w ∈ V o c a b e x p ( u w T v c ) P(O=o| C=c) = \frac {exp(u_{o}^{T}v_{c})}{\sum_{w\in Vocab}exp(u_{w}^{T}v_{c})} P(O=oC=c)=wVocabexp(uwTvc)exp(uoTvc)

条件概率就可写作center word和context word的dot product再对其做softmax运算
分母可以看作是center word对每个词都做点积在求其exp再把所有加和

为了运用到neutral network中,机器学习领域通用招数都是对问题考虑后建模构造出目标函数,从而求得一组最优的参数,利用这个参数用模型进行预测。(这里模型是Skip-Gram model)
利用最大似然可把目标函数写成
L ( θ ) = ∏ w ∈ C p ( C o n t e x t ( w ) ∣ w ) L(θ)=\prod_{w \in C} p(Context(w)|w) L(θ)=wCp(Context(w)w)
C代表Corpus,Context(w)代表w的上下文
这里整体的似然率表示成了

L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m p ( w t + j ∣ w t ; θ ) L(θ)=\prod_{t=1}^T\prod_{-m≤j≤m} p(w_{t+j}|w_{t};θ) L(θ)=t=1Tmjmp(wt+jwt;θ)
为了方便计算将目标函数添加了log和负号,变成累加和和转化为求极小值

J ( θ ) = − 1 T log ⁡ L ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m log ⁡ p ( w t + j ∣ w t ; θ ) J(θ)=-\frac {1}{T}\log L(θ) = -\frac {1}{T} \sum_{t=1}^T\sum_{-m≤j≤m} \log p(w_{t+j}|w_{t};θ) J(θ)=T1logL(θ)=T1t=1Tmjmlogp(wt+jwt;θ)

有了目标函数以及每个条件概率的表现形式,我们就可以利用梯度下降算法来逐步求得使目标函数最小的word vector的形式了。

图示理解word2vec (shik-gram模型)
word2vec其实是很简单的只有三层结构的神经网络
在这里插入图片描述
skip-gram网络结构,V是vocabSize,x是one-hot编码,y是这个V个词上输出的概率
x , y ∈ R V x,y \in R^{V} x,yRV
在skip-gram中y再经过softmax后其实就是预测的每个环境词的概率,我们希望和真实的y的one-hot编码一致,其实这一步就对应着极大化目标函数argmax L(θ)或者是极小化损失函数argmin J(θ),其中
L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m p ( w t + j ∣ w t ; θ ) L(θ)=\prod_{t=1}^T\prod_{-m≤j≤m} p(w_{t+j}|w_{t};θ) L(θ)=t=1Tmjmp(wt+jwt;θ)

J ( θ ) = − 1 T log ⁡ L ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m log ⁡ p ( w t + j ∣ w t ; θ ) J(θ)=-\frac {1}{T}\log L(θ) = -\frac {1}{T} \sum_{t=1}^T\sum_{-m≤j≤m} \log p(w_{t+j}|w_{t};θ) J(θ)=T1logL(θ)=T1t=1Tmjmlogp(wt+jwt;θ)

p ( O = o ∣ C = c ) = e x p ( u o T v c ) ∑ w ∈ V o c a b e x p ( u w T v c ) p(O=o| C=c) = \frac {exp(u_{o}^{T}v_{c})}{\sum_{w\in Vocab}exp(u_{w}^{T}v_{c})} p(O=oC=c)=wVocabexp(uwTvc)exp(uoTvc)

当模型训练完后,最后得到的其实是神经网络的权重(lookup table),每一行就对应着一个word embedding vector。

边角料:每次计算出的隐藏层其实就是公式中的vc,公式中的uw,uo其实是输出向量,这也是为什么中心词向量和环境词向量用不同字母表示的原因,它们不在同一个矩阵中,其实隐含层到输出层的权重也可以作为lookup Table,也是一种词向量的表示方式,不过我们一般使用的是输入层到隐藏层的权重(Mikolov, Distributed Representations of Sentences and Documents),手绘理解图如下:
在这里插入图片描述

当y由多个词时,网络结构如下在这里插入图片描述
在这里插入图片描述
可以看成是 单个x->单个y 模型的并联,cost function 是单个 cost function 的累加(取log之后)(Xin Rong,『word2vec Parameter Learning Explained』)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值