打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Word2vec之公式推导笔记 | PLM's Notes | 好好学习,天天笔记

cs224n word2vec 简介和公式推导

https://plmsmile.github.io/2017/11/02/cs224n-lecture2-word2vec/#

Word meaning

词意

词的意思就是idea,如下:

  • 词汇本身表达的意义

  • 人通过词汇传达的想法

  • 在写作、艺术中表达的意思

  • signifier - signified(idea or thing) - denotation

传统离散表达

传统使用分类学去建立一个WordNet,其中包含许多上位词is-a和同义词集等。如下:

上义词同义词
entity, physical_entity,object, organism, animalfull, good; estimable, good, honorable, respectable

离散表达的问题:

  • 丢失了细微差别,比如同义词:adept, expert, good, practiced, proficient, skillful

  • 不能处理新词汇

  • 分类太主观

  • 需要人力去构建和修改

  • 很难去计算词汇相似度

每个单词使用one-hot编码,比如hotel=[0,1,0,0,0][0,1,0,0,0],motel=[0,0,1,0,0][0,0,1,0,0]。 当我搜索settle hotel的时候也应该去匹配包含settle motel的文章。 但是我们的查询hotel向量和文章里面的motel向量却是正交的算不出相似度

分布相似表达

通过一个单词的上下文去表达这个单词。

You shall know a word by the company it keeps. --- JR. Firth

例如,下面用周围的单词去表达banking

government debt problems turning into banking crises as has happened in saying that Europe needs unified banking regulation to replace the hodgepodge

稠密词向量

一个单词的意义应该是由它本身的词向量来决定的。这个词向量可以预测出的上下文单词。

比如lingustics的词向量是[0.286,0.792,0.177,0.107,0.109,0.542,0.349][0.286,0.792,−0.177,−0.107,0.109,−0.542,0.349]

词嵌入思想

构建一个模型,根据中心单词wtwt,通过自身词向量,去预测出它的上下文单词。 p(contextwt)=p(context∣wt)=⋯ 损失函数如下,wtw−t表示wtwt的上下文(负号通常表示除了某某之外),如果完美预测,损失函数为0。 J=1p(wtwt)J=1−p(w−t∣wt)

Word2Vec

在每个单词和其上下文之间进行预测。

有两种算法:

  • Skip-grams(SG): 给目标单词,预测上下文

  • Continuous Bag of Words(CBOW):给上下文,预测目标单词

两个稍微高效的训练方法:

  • 分层softmax

  • 负采样

课上只是Naive softmax。两个模型,两种方法,一共有4种实现。这里是word2vec详细信息

Skip-gram

对于每个单词wtwt,会选择一个上下文窗口mm。 然后要预测出范围内的上下文单词,使概率P(wt+iwt)P(wt+i∣wt)最大。

目标函数

θθ是我们要训练的参数,目标函数就是所有位置预测结果的乘积,最大化目标函数: J(θ)=Tt=1mjmp(wt+jwt;θ),tjJ′(θ)=∏t=1T∏−m≤j≤mp(wt+j∣wt;θ),t≠j 一般使用negative log likelihood负采样教程

最大化目标函数,就得得到损失函数。对于对数似然函数,取其负对数就可以得到损失函数,再最小化损失函数,其中TT是文本长度,mm是窗口大小: J(θ)=1TTt=1mjmlogP(wt+jwt)J(θ)=−1T∑t=1T∑−m≤j≤mlog⁡P(wt+j∣wt)

  • Loss 函数 = Cost 函数 = Objective 函数

  • 对于softmax概率分布,一般使用交叉熵作为损失函数

  • 单词wt+jwt+j是one-hot编码

  • negative log probability

Word2vec细节

词汇和词向量符号说明:

  • uu 上下文词向量,向量是dd维的

  • vv 词向量

  • 中心词汇tt,对应的向量是vtvt

  • 上下文词汇jj ,对应的词向量是ujuj

  • 一共有VV个词汇

计算p(wt+jwt)p(wt+j∣wt), 即: p(wjwt)=softmax(uTjvt)=exp(uTjvt)Vi=1exp(uTivt)p(wj∣wt)=softmax(ujT⋅vt)=exp⁡(ujT⋅vt)∑i=1Vexp⁡(uiT⋅vt) 两个单词越相似,点积越大,向量点积如下: uTv=Mi=1ui×viuT⋅v=∑i=1Mui×vi softmax之所以叫softmax,是因为指数会让大的数越大,小的数越小。类似于max函数。下面是计算的详细信息:

一些理解和解释:

  • wtwt是one-hot编码的中心词汇,维数是(V,1)(V,1)

  • WW是词汇表达矩阵,维数是(d,V)(d,V),一列就是一个单词

  • Wwt=vtWwt=vt 相乘得到词向量vtvt(d,V)(V,1)(d,1)(d,V)⋅(V,1)→(d,1)dd维向量去表达了词汇t

  • WW′Wvt=sW′⋅vt=s(V,d)(d,1)(V,1)(V,d)⋅(d,1)→(V,1) , 得到 语义相似度向量ss

  • 再对ss进行softmax即可求得上下文词汇

  • 每个单词有两个向量,作为center单词向量和context单词向量

偏导计算

oo是上下文单词,cc是中心单词,条件概率如下: P(oc)=exp(uTovc)Vi=1exp(uTivc)P(o∣c)=exp⁡(uoT⋅vc)∑i=1Vexp⁡(uiT⋅vc) 这里只计算logPlog⁡Pvcvc向量的偏导。

θθ向量表示所有的参数,有VV个单词,dd维向量。每个单词有2个向量。参数个数一共是2dV2dV个。

向量偏导计算公式,x,ax,a 均是向量 xTax=aTxx=a∂xTa∂x=∂aTx∂x=a 函数偏导计算,链式法则y=f(u),u=g(x)y=f(u),u=g(x) dydx=dydududxdydx=dydududx 最小化损失函数J(θ)=1TTt=1mjmlogP(wt+jwt),jmJ(θ)=−1T∑t=1T∑−m≤j≤mlog⁡P(wt+j∣wt),j≠m 这里只计算vcvc的偏导,先进行分解原式为2个部分vclogP(oc)=vclogexp(uTovc)Vi=1exp(uTivc)=vclogexp(uTovc)1vclogVi=1exp(uTivc)2∂∂vclog⁡P(o∣c)=∂∂vclog⁡exp⁡(uoT⋅vc)∑i=1Vexp⁡(uiT⋅vc)=∂∂vclog⁡exp⁡(uoT⋅vc)⏟1−∂∂vclog⁡∑i=1Vexp⁡(uiT⋅vc)⏟2 部分1推导 vclogexp(uTovc)=vcuTovc=uo∂∂vclog⁡exp⁡(uoT⋅vc)=∂∂vcuoT⋅vc=uo 部分2推导 vclogVi=1exp(uTivc)=1Vi=1exp(uTivc)vcVx=1exp(uTxvc)=1AVx=1vcexp(uTxvc)=1AVx=1exp(uTxvc)vcuTxvc=1Vi=1exp(uTivc)Vx=1exp(uTxvc)ux=Vx=1exp(uTxvc)Vi=1exp(uTivc)ux=Vx=1P(xc)ux∂∂vclog⁡∑i=1Vexp⁡(uiT⋅vc)=1∑i=1Vexp⁡(uiT⋅vc)⋅∂∂vc∑x=1Vexp⁡(uxT⋅vc)=1A⋅∑x=1V∂∂vcexp⁡(uxT⋅vc)=1A⋅∑x=1Vexp⁡(uxT⋅vc)∂∂vcuxT⋅vc=1∑i=1Vexp⁡(uiT⋅vc)⋅∑x=1Vexp⁡(uxT⋅vc)ux=∑x=1Vexp⁡(uxT⋅vc)∑i=1Vexp⁡(uiT⋅vc)⋅ux=∑x=1VP(x∣c)⋅ux 所以,综合起来可以求得,单词o是单词c的上下文概率logP(oc)log⁡P(o∣c) 对center向量vcvc的偏导: vclogP(oc)=uoVx=1P(xc)ux=∂∂vclog⁡P(o∣c)=uo−∑x=1VP(x∣c)⋅ux=观察到的−期望的 实际上偏导是,单词oo的上下文词向量,减去,所有单词xx的上下文向量乘以x作为cc的上下文向量的概率。

总体梯度计算

在一个window里面,对中间词汇vcvc求了梯度, 然后再对各个上下文词汇uouo求梯度。 然后更新这个window里面用到的参数。

比如句子We like learning NLP。设m=1m=1

  • 中间词汇求梯度 vlikevlike

  • 上下文词汇求梯度 uweuweulearningulearning

  • 更新参数

梯度下降

有了梯度之后,参数减去梯度,就可以朝着最小的方向走了。机器学习梯度下降 θnew=θoldαθoldJ(θ),θnew=θoldαΔθJ(θ)θnew=θold−α∂∂θoldJ(θ),θnew=θold−αΔθJ(θ) 随机梯度下降

预料会有很多个window,因此每次不能更新所有的。只更新每个window的,对于window t: θnew=θoldαΔθJt(θ)θnew=θold−αΔθJt(θ)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Matlab图形绘制经典案例
通俗讲解从Transformer到BERT模型!
揭开知识库问答KB-QA的面纱5·深度学习上篇
BERT模型详解
超实用总结:AI实践者需要用到的10个深度学习方法
做AI必须要知道的十种深度学习方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服