深度学习-词嵌入(word2vec)

词嵌入(word2vec)

自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是用来表示词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌入(word embedding)。近年来,词嵌入已逐渐成为自然语言处理的基础知识。

跳字模型

跳字模型假设基于某个词来生成它在文本序列周围的词。举个例子:

  • 假设文本序列是“the”“man”“loves”“his”“son”
  • 以“loves”作为中心词,设背景窗口大小为2

如下图所示,跳字模型所关心的是,给定中心词“loves”,生成与它距离不超过2个词的背景词“the”“man”“his”“son”的条件概率,即

P(the",man",his",son"∣“loves").P(\textrm{the"},\textrm{man"},\textrm{his"},\textrm{son"}\mid\textrm{``loves"}).P(the",man",his",son"“loves").

假设给定中心词的情况下,背景词的生成是相互独立的,那么上式可以改写成

P(the"∣loves")⋅P(man"∣loves")⋅P(his"∣loves")⋅P(son"∣loves").P(\textrm{the"}\mid\textrm{loves"})\cdot P(\textrm{man"}\mid\textrm{loves"})\cdot P(\textrm{his"}\mid\textrm{loves"})\cdot P(\textrm{son"}\mid\textrm{loves"}).P(the"loves")P(man"loves")P(his"loves")P(son"loves").

在跳字模型中,每个词被表示成两个ddd维向量,用来计算条件概率。

  • 假设这个词在词典中索引为iii
  • 当它为中心词时向量表示为vi∈Rd\boldsymbol{v}_i\in\mathbb{R}^dviRd
  • 当它为背景词时向量表示为ui∈Rd\boldsymbol{u}_i\in\mathbb{R}^duiRd
  • 设中心词wcw_cwc在词典中索引为ccc,背景词wow_owo在词典中索引为ooo

给定中心词生成背景词的条件概率可以通过对向量内积做softmax运算而得到:

P(wo∣wc)=exp(uo⊤vc)∑i∈Vexp(ui⊤vc),P(w_o \mid w_c) = \frac{\text{exp}(\boldsymbol{u}_o^\top \boldsymbol{v}_c)}{ \sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)},P(wowc)=iVexp(uivc)exp(uovc),

其中词典索引集V=0,1,…,∣V∣−1\mathcal{V} = {0, 1, \ldots, |\mathcal{V}|-1}V=0,1,,V1。假设给定一个长度为TTT的文本序列,设时间步ttt的词为w(t)w^{(t)}w(t)。假设给定中心词的情况下背景词的生成相互独立,当背景窗口大小为mmm时,跳字模型的似然函数即给定任一中心词生成所有背景词的概率。

∏t=1T∏−m≤j≤m,j≠0P(w(t+j)∣w(t)),\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(w^{(t+j)} \mid w^{(t)}),t=1Tmjm, j=0P(w(t+j)w(t)),

这里小于1和大于TTT的时间步可以忽略。

训练跳字模型

跳字模型的参数是每个词所对应的中心词向量和背景词向量。训练中我们通过最大化似然函数来学习模型参数,即最大似然估计。这等价于最小化以下损失函数:

−∑t=1T∑−m≤j≤m,j≠0logP(w(t+j)∣w(t)).- \sum_{t=1}^{T} \sum_{-m \leq j \leq m,\ j \neq 0} \text{log}P(w^{(t+j)} \mid w^{(t)}).t=1Tmjm, j=0logP(w(t+j)w(t)).

如果使用随机梯度下降,那么在每一次迭代里我们随机采样一个较短的子序列来计算有关该子序列的损失,然后计算梯度来更新模型参数。梯度计算的关键是条件概率的对数有关中心词向量和背景词向量的梯度。根据定义,首先看到

log⁡P(wo∣wc)=uo⊤vc−log⁡(∑i∈Vexp(ui⊤vc))\log P(w_o \mid w_c) = \boldsymbol{u}_o^\top \boldsymbol{v}_c - \log\left(\sum{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)\right)logP(wowc)=uovclog(iVexp(uivc))

通过微分,我们可以得到上式中vc\boldsymbol{v}_cvc的梯度

∂logP(wo∣wc)∂vc=uo−∑j∈Vexp⁡(uj⊤vc)uj∑i∈Vexp⁡(ui⊤vc)=uo−∑j∈V(exp(uj⊤vc)∑i∈Vexp(ui⊤vc))uj=uo−∑j∈VP(wj∣wc)uj.\begin{aligned} \frac{\partial \text{log} P(w_o \mid w_c)}{\partial \boldsymbol{v}_c} &= \boldsymbol{u}_o - \frac{\sum_{j \in \mathcal{V}} \exp(\boldsymbol{u}_j^\top \boldsymbol{v}_c)\boldsymbol{u}_j}{\sum_{i \in \mathcal{V}} \exp(\boldsymbol{u}_i^\top \boldsymbol{v}_c)}\ \\&= \boldsymbol{u}_o - \sum_{j \in \mathcal{V}} \left(\frac{\text{exp}(\boldsymbol{u}_j^\top \boldsymbol{v}_c)}{ \sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)}\right) \boldsymbol{u}_j\ \\&= \boldsymbol{u}_o - \sum_{j \in \mathcal{V}} P(w_j \mid w_c) \boldsymbol{u}_j. \end{aligned} vclogP(wowc)=uoiVexp(uivc)jVexp(ujvc)uj =uojV(iVexp(uivc)exp(ujvc))uj =uojVP(wjwc)uj.

它的计算需要词典中所有词以wcw_cwc为中心词的条件概率。有关其他词向量的梯度同理可得。

训练结束后,对于词典中的任一索引为iii的词,我们均得到该词作为中心词和背景词的两组词向量vi\boldsymbol{v}_iviui\boldsymbol{u}_iui。在自然语言处理应用中,一般使用跳字模型的中心词向量作为词的表征向量。

连续词袋模型

连续词袋模型与跳字模型类似。与跳字模型最大的不同在于,连续词袋模型假设基于某中心词在文本序列前后的背景词来生成该中心词。在同样的文本序列“the”“man”“loves”“his”“son”里,以“loves”作为中心词,且背景窗口大小为2时,连续词袋模型关心的是,给定背景词“the”“man”“his”“son”生成中心词“loves”的条件概率(如下图所示),也就是

P(“loves"∣“the",man",his",“son").P(\textrm{“loves"}\mid\textrm{“the"},\textrm{man"},\textrm{his"},\textrm{``son"}).P(“loves"“the",man",his",“son").

因为连续词袋模型的背景词有多个,我们将这些背景词向量取平均,然后使用和跳字模型一样的方法来计算条件概率。设vi∈Rd\boldsymbol{v_i}\in\mathbb{R}^dviRdui∈Rd\boldsymbol{u_i}\in\mathbb{R}^duiRd分别表示词典中索引为iii的词作为背景词和中心词的向量(注意符号的含义与跳字模型中的相反)。设中心词wcw_cwc在词典中索引为ccc,背景词wo1,…,wo2mw_{o_1}, \ldots, w_{o_{2m}}wo1,,wo2m在词典中索引为o1,…,o2mo_1, \ldots, o_{2m}o1,,o2m,那么给定背景词生成中心词的条件概率

P(wc∣wo1,…,wo2m)=exp(12muc⊤(vo1+…+vo2m))∑i∈Vexp(12mui⊤(vo1+…+vo2m)).P(w_c \mid w_{o_1}, \ldots, w_{o_{2m}}) = \frac{\text{exp}\left(\frac{1}{2m}\boldsymbol{u}_c^\top (\boldsymbol{v}_{o_1} + \ldots + \boldsymbol{v}_{o{2m}}) \right)}{ \sum_{i \in \mathcal{V}} \text{exp}\left(\frac{1}{2m}\boldsymbol{u}_i^\top (\boldsymbol{v}_{o_1} + \ldots + \boldsymbol{v}_{o{2m}}) \right)}.P(wcwo1,,wo2m)=iVexp(2m1ui(vo1++vo2m))exp(2m1uc(vo1++vo2m)).

为了让符号更加简单,我们记Wo=wo1,…,wo2m\mathcal{W}o= {w{o_1}, \ldots, w_{o_{2m}}}Wo=wo1,,wo2m,且vˉo=(vo1+…+vo2m)/(2m)\bar{\boldsymbol{v}}_o = \left(\boldsymbol{v}_{o_1} + \ldots + \boldsymbol{v}_{o_{2m}} \right)/(2m)vˉo=(vo1++vo2m)/(2m),那么上式可以简写成

P(wc∣Wo)=exp⁡(uc⊤vˉo)∑i∈Vexp⁡(ui⊤vˉo).P(w_c \mid \mathcal{W}_o) = \frac{\exp\left(\boldsymbol{u}_c^\top \bar{\boldsymbol{v}}_o\right)}{\sum_{i \in \mathcal{V}} \exp\left(\boldsymbol{u}_i^\top \bar{\boldsymbol{v}}_o\right)}.P(wcWo)=iVexp(uivˉo)exp(ucvˉo).

给定一个长度为TTT的文本序列,设时间步ttt的词为w(t)w^{(t)}w(t),背景窗口大小为mmm连续词袋模型的似然函数是由背景词生成任一中心词的概率

∏t=1TP(w(t)∣w(t−m),…,w(t−1),w(t+1),…,w(t+m)).\prod_{t=1}^{T} P(w^{(t)} \mid w^{(t-m)}, \ldots, w^{(t-1)}, w^{(t+1)}, \ldots, w^{(t+m)}).t=1TP(w(t)w(tm),,w(t1),w(t+1),,w(t+m)).

训练连续词袋模型

训练连续词袋模型同训练跳字模型基本一致。连续词袋模型的最大似然估计等价于最小化损失函数

−∑t=1TlogP(w(t)∣w(t−m),…,w(t−1),w(t+1),…,w(t+m)).-\sum_{t=1}^T \text{log} P(w^{(t)} \mid w^{(t-m)}, \ldots, w^{(t-1)}, w^{(t+1)}, \ldots, w^{(t+m)}).t=1TlogP(w(t)w(tm),,w(t1),w(t+1),,w(t+m)).

注意到

log⁡P(wc∣Wo)=uc⊤vˉo−log⁡(∑i∈Vexp⁡(ui⊤vˉo)).\log P(w_c \mid \mathcal{W}_o) = \boldsymbol{u}_c^\top \bar{\boldsymbol{v}}_o - \log\left(\sum_{i \in \mathcal{V}} \exp\left(\boldsymbol{u}_i^\top \bar{\boldsymbol{v}}_o\right)\right).logP(wcWo)=ucvˉolog(iVexp(uivˉo)).

通过微分,我们可以计算出上式中条件概率的对数有关任一背景词向量voi\boldsymbol{v}_{o_i}voii=1,…,2mi = 1, \ldots, 2mi=1,,2m)的梯度

∂log⁡P(wc∣Wo)∂voi=12m(uc−∑j∈Vexp⁡(uj⊤vˉo)uj∑i∈Vexp(ui⊤vˉo))=12m(uc−∑j∈VP(wj∣Wo)uj).\frac{\partial \log P(w_c \mid \mathcal{W}_o)}{\partial \boldsymbol{v}_{o_i}} = \frac{1}{2m} \left(\boldsymbol{u}_c - \sum_{j \in \mathcal{V}} \frac{\exp(\boldsymbol{u}_j^\top \bar{\boldsymbol{v}}_o)\boldsymbol{u}_j}{ \sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \bar{\boldsymbol{v}}_o)} \right) \\ = \frac{1}{2m}\left(\boldsymbol{u}_c - \sum_{j \in \mathcal{V}} P(w_j \mid \mathcal{W}_o) \boldsymbol{u}_j \right).voilogP(wcWo)=2m1ucjViVexp(uivˉo)exp(ujvˉo)uj=2m1ucjVP(wjWo)uj.

有关其他词向量的梯度同理可得。同跳字模型不一样的一点在于,我们一般使用连续词袋模型的背景词向量作为词的表征向量。

  • 词向量是用来表示词的向量。把词映射为实数域向量的技术也叫词嵌入。
  • word2vec包含跳字模型和连续词袋模型。跳字模型假设基于中心词来生成背景词。连续词袋模型假设基于背景词来生成中心词。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ggplot2箱式图两两比较_作图技巧024篇ggplot2在循环中的坑

“ggplot2在循环中的输出”生活科学哥-R语言科学 2020-12-23 8:28ggplot2用过之后,你肯定会爱上它;结合一些不错的包,可以得到非常有展现力的图片,但是呢,有时也会碰到一些奇怪的情况。今天来们来看看,其中…

character-level OCR之Character Region Awareness for Text Detection(CRAFT) 论文阅读

Character Region Awareness for Text Detection 论文阅读 论文地址(arXiv) ,pytorch版本代码地址 最近在看一些OCR的问题,CRAFT是在场景OCR中效果比较好的模型,记录一下论文的阅读 已有的文本检测工作大致如下: 基于回归的文…

c# wpf 面试_【远程面试】九强通信 | 九洲电器集团全资子公司

成都IT内推圈成立于2016年,专注成都IT互联网领域的招聘与求职;覆盖精准IT人群10W,通过内推圈推荐且已入职人数超过5000,合作公司均系成都知名或靠谱公司.此公众号每天7:30AM准时推送当天职位详情,敬请关注并置顶!岗位投递一、登陆内推圈官网: www.itneituiquan.com,…

ViT(Vision Transformer)学习

ViT(Vison Transformer)学习 Paper:An image is worth 1616 words: transformers for image recognition at scale. In ICLR, 2021. Transformer 在 NLP领域大放异彩,并且随着模型和数据集的不断增长,仍然没有表现出饱和的迹象。这使得使用更大规模的数…

cpri带宽不足的解决方法_u盘容量不足怎么办 u盘容量不足解决方法【介绍】

我们在使用u盘的时候总能碰到各种各样的问题,其中u盘容量不足问题也是神烦,很多时候打开并没有发现有文件存在,但是在你存文件的时候又被提示u盘容量不足无法操作,关于这个问题u启动通过整理和大家一起分享下解决办法。1、u盘里的…

复合的赋值运算符例题_Java学习:运算符的使用与注意事项

运算符的使用与注意事项四则运算当中的加号“”有常见的三种用法:对于数值来,那就是加法。对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。char类型字符,和int类型数字之间的对照关系比…

腾讯会议如何使用讲演者模式进行汇报(nian gao)

腾讯会议如何使用讲演者模式进行汇报(nian gao) 首先列出步骤,再一一演示: altf5 开启讲演者模式,调整讲演者模式的窗口为小窗alttab 切换回腾讯会议界面,屏幕共享power point窗口(注意不是“…

bulk这个词的用法_15、形容词与副词(二)比较的用法

初中英语语法——形容词与副词(二)比较的用法语法解释1、形容词与副词比较级和最高级的规则变化单音节词与部分双音节词:(1)一般情况加-er,-estlong-longer-longest strong-stronger-strongestclean-cleaner-cleanest(2)以不发音的e结尾的词,…

retinex 的水下图像增强算法_图像增强论文:腾讯优图CVPR2019

Underexposed Photo Enhancement using Deep Illumination Estimation基于深度学习优化光照的暗光下的图像增强论文地址:Underexposed Photo Enhancement using Deep Illumination Estimation暗光拍照也清晰,这是手机厂商目前激烈竞争的新拍照目标。提出…

python 实现 BCH 纠错码的方法

python 实现 BCH 纠错码的方法 BCH码是一类重要的纠错码,它把信源待发的信息序列按固定的κ位一组划分成消息组,再将每一消息组独立变换成长为n(n>κ)的二进制数字组,称为码字。如果消息组的数目为M(显然M>2),由此所获得的M个码字的全…

结构体引用_C/C++结构体完全攻略

结构体是一个由程序员定义的数据类型,可以容纳许多不同的数据值。在过去,面向对象编程的应用尚未普及之前,程序员通常使用这些从逻辑上连接在一起的数据组合到一个单元中。一旦结构体类型被声明并且其数据成员被标识,即可创建该类…

mysql root密码过期了_Mac下重置mysql的root密码

php中文网最新课程每日17点准时技术干货分享我的mysql版本 MYSQL V5.7.9,旧版本请使用:UPDATE mysql.user SET PasswordPASSWORD(新密码) WHERE Userroot;Mac OS X - 重置 MySQL Root密码密码太多记不住??你是否忘记了Mac OS 的My…

论文页眉奇偶页不同怎么设置_还在愁毕业论文的页眉页脚吗?

在文档中添加页眉和页脚能够很好的对相关信息进行展示或说明,在写论文的时候,设置页眉和页脚,能够让老师清楚的了解你的论文,但同时页眉和页脚的设置也是最让人头疼的,今天零壹学长就给大家详细的介绍页眉和页脚。了解…

账号管理工具_全新微信个人号管理工具能选择吗?为何这么说?

点击上方“蓝字”关注我们伴随着微信营销的重要性越来越高,很多企业的新媒体运营人员也开始把注意力都放到了微信账号的运营上,不仅是公众号的发展和运营,个人号在这个过程中也是非常重要的。相对于公众号和微信群,个人号的影响力…

护理等级分级标准及巡视时间_18项护理核心制度,都在这了

一、护理质量管理制度二、病房管理制度三、抢救工作制度四、分级护理制度五、护理交接班制度六、查对制度七、给药制度八、护理查房制度九、患者健康教育制度十、护理会诊制度十一、病房消毒隔离制度十二、护理安全管理制度十三、患者身份识别制度十四、患者差错、事故报告制度…

2接口详解_java集合【2】——— Collection接口详解

一、Collection接口简介二、Collection源码分析三、Collection的子类以及子类的实现3.1 List extend Collection3.2 Set extend Collection3.3 Queue extend Collection四、Collection和Map的辨析五、Collection和Collections的辨析六、总结一、Collection接口简介 collection在…

幅度响应怎么计算_四电平脉冲幅度调制(PAM4)信号的误码分析

- PAM4 是一种高效利用带宽传输串行数据的方法,所需的通道带宽仅为 NRZ 所需带宽的一半。用户需要具有即时数据访问能力的互联网络,这种不断增长的需求推动着以太网、64G光纤通道、CEI-56 G以及其他新一代数据中心网络链路向前发展。用户需要具有即时数据…

windows功能_这 12 个好用 Windows 软件,让你也能用上 macOS 的独占功能

在离开 macOS 这段时间,每天在家依赖 Windows To Go 为生,感到日常工作流程在四处冒烟。这才发现 macOS 的有些特性就如同空气一样,虽然毫无存在感,却不可缺失。关于「如何在 Windows 中实现 macOS 的 xxx」,随便上网一…

Batch Normalization、Layer Normalization、Group Normalization、Instance Normalization原理、适用场景和实际使用经验

Batch Normalization、Layer Normalization、Group Normalization、Instance Normalization原理、适用场景和使用经验 一、 简单介绍各种Normalization 先放一张来自Group Normalization原论文中的图,个人认为这个图很形象,以此图直观感受一下各种归一…

收发一体超声波测距离传感器模块_芜湖低功耗超声波液位计物位计设备排名

KUS 超声波液位物位计 8种工作状态设置指导 1), 窗口常开模式(模拟量输出产品为正线性工作模式或者距离测量模式)2), 窗口常闭模式(模拟量输出产品为负线性工作模式或者液位测量模式)3), 单点常开模4), 单点常闭模式。5), 单点常开带大滞回区间模式6), 单点常闭带大滞回区间模式…