cs224n学习笔记——word2vec

 从今天开始对cs224n的学习进行记录,争取可以把每一个内容弄明白!!!

关于word2vec 以前只知道是一种得到词向量的算法:

两个算法:

  • Skip-grams (SG):预测上下文

  • Continuous Bag of Words (CBOW):预测目标单词

两种稍微高效一些的训练方法:

  • Hierarchical softmax

  • Negative sampling

Skip-gram理解hankcs.com 2017-06-07 下午2.47.31.png

这里是已banking为中心词 预测前后的四个词,窗口大小是5 

目标函数是希望所有位置的预测结果的乘积最大:

\large J{}'(\theta ) =\prod_{t=1}^{T} \prod_{-m\leq j\leqslant m j\neq 0} p(w_{t+j}| w_{t} ;\theta )

取负对数得到损失函数(Loss function = cost function = objective function 都是损失函数):

\large loss function:J(\theta ) = - \frac{1}{T} {}\prod_{t=1}^{T} \prod_{-m\leq j\leqslant m j\neq 0} log p(w_{t+j}| w_{t} )

 

 

2017-06-07_15-24-56.png

老师的这张图真的太好了,把我多年的困惑给搞明白:最左边是中心词\large w_{}t的one-hot向量维度是V*1(V是训练的词向量词库的大小,很大!!!),乘以center word的W参数,维度是d*V(d是我希望得到的词向量的长度,一般是300左右)。得到一个hidden layer的结果\large V_c ,一个d*1维的向量,\large V_c 乘以另一个context word的矩阵W'得到中心词对于词库中每一个词的“相似度”,这里得到的是一个V*1的列,每一行的大小是\large [u_i^Tv_c],这里的\large u_i代表 w' 的第i 行\large v_c是hidden layer的结果。然后对相似度取softmax得到概率,与答案对比计算损失。

这两个矩阵都含有V个词向量,也就是说同一个词有两个词向量,哪个作为最终的、提供给其他应用使用的embeddings呢?有两种策略,要么加起来,要么拼接起来。在CS224n的编程练习中,采取的是拼接起来的策略:

 Skip-Gram.png

这里 预测到的某个上下文条件概率\large p(w_{t+j} |w_t)可由softmax得到:

\large p(o|c) = \frac{e^{(u_o^Tv_c)}} {\sum_{w=1}^{v}e^{(u_w^T v_c)}}

这里o是输出的上下文词语中的确切某一个,c是中间的词语。\large u_o是词向量(参数矩阵w' 对应的第o行),\large u_w是词向量(参数矩阵w' 对应的第w行),\large v_c是中心词的one-hot向量乘以参数矩阵W得到的hidden layer 词向量。

W中的向量叫input vector,W'中的向量叫output vector。

训练模型:计算参数向量的梯度

把所有参数写进向量θ,对d维的词向量和大小V的词表来讲,有:2017-06-07_15-34-33.png

 因为是有W、W'两个参数矩阵,所以所有参数θ的维度是2d*V

然后计算梯度。

跟着manning老师手推了一下,加强理解

\large J'(\theta ) =\prod_{t=1}^{T} \prod_{-m\leq j\leqslant m j\neq 0} p(w_{t+j}| w_{t} ;\theta )\\ loss function:J(\theta ) = - \frac{1}{T} {}\prod_{t=1}^{T} \prod_{-m\leq j\leqslant m j\neq 0} log\ p(w_{t+j}| w_{t} )\\ p(o|c) = \frac{e^{(u_o^Tv_c)}} {\sum_{w=1}^{v}e^{(u_w^T v_c)}}\\ \frac{\partial }{\partial v_c}log\ p(o|c) = log\ \frac{e^{(u_o^Tv_c)}} {\sum_{w=1}^{v}e^{(u_w^T v_c)}} = \frac{\partial }{\partial v_c}log\ e^{(u_o^T v_c)} -\frac{\partial }{\partial v_c} \sum_{w=1}^{v}e^{(u_w^T v_c)} \\ \frac{\partial }{\partial v_c}log\ e^{(u_o^T v_c)} = \frac{\partial }{\partial v_c}{(u_o^T v_c)} = u_o \\ \frac{\partial }{\partial v_c} \sum_{w=1}^{v}e^{(u_w^T v_c)} = \frac{1}{\sum_{w=1}^{V}e^{(u_w^T v_c)}} (\sum_{x-1}^V \frac{\partial }{\partial v_c} e^{(u_x^Tv_c)})\\

\large \frac{\partial }{\partial v_c}log\ p(o|c) = u_o- \sum_{x=1}^V p(x|c)u_xhankcs.com 2017-06-07 下午5.18.54.png

 hankcs.com 2017-06-07 下午5.19.15.png

 hankcs.com 2017-06-07 下午5.20.24.png

hankcs.com 2017-06-07 下午5.20.42.png

更新参数

\large \theta^{new} = \theta^{old} - \alpha\frac{\partial }{\partial \theta^{old}}J(\theta) \\ \theta^{new} = \theta^{old} - \alpha\bigtriangledown_\theta J(\theta) 

 

大概就是这样吧,主要跟着老师把公式捋了一下。

接下来试试把

  • Skip-grams (SG):预测上下文

  • Continuous Bag of Words (CBOW):预测目标单词

  • Hierarchical softmax

  • Negative sampling 

这两种算法和两种训练方法结合捋一下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值