cs224n-第二课-word2vec

1.one-hot编码

为了机器更加方便的计算,将字或者词转化为向量进行计算更加方便,机器也能更好的识别。使用one-hot编码,one-hot的编码的意思是:字典库中有n个词,每个词都有一个对应的向量,向量的维度为1*n,第2个词的向量为 [ 0 , 1 , 0 , … … , 0 ] T [0,1,0,……,0]^T [0,1,0,,0]T,同理第三个词的向量为 [ 0 , 0 , 1 , … … , 0 ] T [0,0,1,……,0]^T [0,0,1,,0]T,即第i位为1,其它位都是0。

2.word2vec编码

使用one-hot编码比较清晰易读,但是维度很大,在多层的神经网络计算中会造成维度爆炸,这个时候计算难度增加,网络进行训练使用的时间是无法忍受的。这个时候使用word2vec编码,即每一个字(词)有两个向量表示它,一个是中心向我们使用 V V V表示,一个是上下文向量使用 u u u表示。借用语言模型的概念,对于一个句子 S S S,中心词为t,计算该句子的概率为:
P ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m P ( w t + j ∣ w t ; θ ) , j ≠ 0 P(\theta)=\prod_{t=1}^{T}\prod_{-m\leq j \leq m}P(w_{t+j}|w_t;\theta), \quad j\neq0 P(θ)=t=1TmjmP(wt+jwt;θ),j=0因为是训练中的句子,所以就是需要使 P ( θ ) P(\theta) P(θ)最大,连乘容易造成梯度消散,所以对其取对数,转化为求和,并取负数转化为求最小化,此时目标函数为: J ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m log ⁡ P ( w t + j ∣ w t ; θ ) j ≠ 0 J(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m \leq j \leq m}\log P(w_{t+j}|w_t;\theta) \quad j\neq0 J(θ)=T1t=1TmjmlogP(wt+jwt;θ)j=0softmax的操作是放大差异,对于 P ( w o ∣ w t ) = e x p ( u o v t ) ∑ w = 1 ∣ v ∣ e x p ( u w v t ) , w ≠ t P(w_{o}|w_t)=\frac{exp(u_ov_t)}{\sum_{w=1}^{|v|}exp(u_wv_t)},\quad w\neq t P(wowt)=w=1vexp(uwvt)exp(uovt),w=t所以对于中心向量 v t v_t vt,要使 P P P最大,所以对 P P P求关于 v t v_t vt的微分: ∂ ∂ v t log ⁡ P = ∂ ∂ v t log ⁡ e x p ( u o v t ) − ∂ ∂ v t log ⁡ ∑ w = 1 ∣ v ∣ e x p ( u w v t ) \frac{\partial}{\partial v_t}\log P=\frac{\partial}{\partial v_t}\log exp(u_ov_t)-\frac{\partial}{\partial v_t}\log \sum_{w=1}^{|v|}exp(u_wv_t) vtlogP=vtlogexp(uovt)vtlogw=1vexp(uwvt)又因为 ∂ ∂ v t log ⁡ e x p ( u o v t ) = u o \frac{\partial}{\partial v_t}\log exp(u_ov_t)=u_o vtlogexp(uovt)=uo并且根据链式法则: ∂ ∂ v t log ⁡ ∑ w = 1 ∣ v ∣ e x p ( u w v t ) = 1 ∑ w = 1 ∣ v ∣ e x p ( u w v t ) ∂ ∂ v t ∑ x = 1 ∣ v ∣ e x p ( u x v t ) = ∑ x = 1 ∣ v ∣ e x p ( u x v t ) ∗ u x ∑ w = 1 ∣ v ∣ e x p ( u w v t ) = ∑ x = 1 ∣ v ∣ P ( x ∣ t ) ∗ u x \frac{\partial}{\partial v_t}\log \sum_{w=1}^{|v|}exp(u_wv_t)=\frac{1}{\sum_{w=1}^{|v|} exp(u_wv_t)}\frac{\partial}{\partial v_t}\sum_{x=1}^{|v|} exp(u_xv_t)=\sum_{x=1}^{|v|}\frac{exp(u_xv_t)*u_x}{ \sum_{w=1}^{|v|}exp(u_wv_t)}=\sum_{x=1}^{|v|}P(x|t)*u_x vtlogw=1vexp(uwvt)=w=1vexp(uwvt)1vtx=1vexp(uxvt)=x=1vw=1vexp(uwvt)exp(uxvt)ux=x=1vP(xt)ux最终上面的式子转化为: u o − ∑ x = 1 ∣ v ∣ P ( x ∣ t ) ∗ u x = 0 u_o-\sum_{x=1}^{|v|}P(x|t)*u_x=0 uox=1vP(xt)ux=0进行求解。

3.语言模型

d在这里插入图片描述
语言模型的使用n-gram模型,即根据前n个字推测出第n+1字,使用简单的神经网络如上所示,经过词嵌入(word2vec)的编码方式将其转化为向量,输入到隐藏层然后使用tanh的激活函数,最后使用使用解码方式转化为跟one-hot一样的维度,使用softmax得到对应的评价分数,然后取值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值