glove词向量模型

词向量的表示可以分成两类:

  • 基于统计方法 共现矩阵、svd
  • 基于语言模型 神经网络语言模型,word2vector,glove,elmo
     word2vector中的skip-gram模型是利用类似于自动编码的器网络以中心词的one-hot表示作为输入来预测这个中心词环境中某一个词的one-hot表示,即先将中心词one-hot表示编码然后解码成环境中某个词的one-hot表示(多分类模型,损失函数用交叉熵)。CBOW是反过来的,分别用环境中的每一个词去预测中心词。尽管word2vector在学习词与词间的关系上有了大进步,但是它有很明显的缺点:只能利用一定窗长的上下文环境,即利用局部信息,没法利用整个语料库的全局信息。鉴于此,斯坦福的GloVe诞生了,它的全称是global vector,很明显它是要改进word2vector,成功利用语料库的全局信息。
    这里需要提一点的是 :
    word2vector 得到的词向量是隐藏层的权重矩阵,并非模型的输出

共现概率

共现 :
单词a 出现在单词b的环境中(环境指的是以b为中心的左右各若干个词)
共现矩阵:
单词对共现次数的统计表。我们可以通过大量的语料文本来构建一个共现统计矩阵。
  例如,有语料如下:
  I like deep learning.
  I like NLP.
  I enjoy flying.
共现矩阵的特点:
统计的是单词在给定环境中出现的次数,所以在一定程度上能够表达词间关系。
共现频次的技术是针对整个语料库,而不是在一定程度上能表达词间的关系
共现矩阵是对称的

共现概率比

定义X为贡献矩阵,共现矩阵,共现矩阵中xijx_{i j}xij表示词j出现在词i的环境中的次数,xix_ixi为任一词出现在i环境中的次数(即行和)

Pij=P(j∣i)=xijxiP_{i j}=P(j \mid i)=\frac{x_{i j}}{x_{i}} Pij=P(ji)=xixij
为词j出现在词i环境中的概率(用频率代表概率),这个概率就是词i和词j的共现概率,共现概率也就是给定语料环境,某一个词出现的概率。
共现概率比
glove论文中给出了一个有趣的例子

k是语境词,ice和steam分别是两个中心词,但从这些概率中看不出什么东西。
接着作者对论文把这些概率做了些除法,有趣的东西出现了。

第一列:solid ice,固态冰,虽然别扭,但显然是个合理的词对(两者都有固体之意);solid steam,固态蒸汽。在背景词solid下,ice与solid的关系比steam要紧密,P(solid|ice)/P(solid|steam)这个比率很大。

第二列:ice gas,冰气;gas steam,都是气体,合理。在背景词gas下,steam与gas的关系比ice要紧密,P(gas|ice)/P(gas|steam)这个比率很小。

第三列:ice water,冰水,没问题;water steam,水蒸气,也没问题;ice和steam都与water相关,P(water|ice)/P(water|steam)趋近于1。

第四列:fashion ice,时尚冰?fashion steam,流行蒸汽?wtf?显然八竿子打不着,P(fashion|ice)/P(fashion|steam)也趋近于1。
作者假设共现概率比,可以由词向量通过函数F得到:
F(wi,wj,w~k)=PikPjkF\left(w_{i}, w_{j}, \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}} F(wi,wj,w~k)=PjkPik

使用均方误差损失函数:
J=∑i,j=1V(wiTwj+bi+bj−log⁡(Xij))2J=\sum_{i, j=1}^{V}\left(w_{i}^{T} w_{j}+b_{i}+b_{j}-\log \left(X_{i j}\right)\right)^{2} J=i,j=1V(wiTwj+bi+bjlog(Xij))2

矩阵分解方法,有个缺点,就是各个词的权重是一样的,处理这个问题,就是添加一个根据词频决定的权重项:
J=∑i,j=1Vf(Xij)(wiTwj+bi+bj−log⁡(Xij))2J=\sum_{i, j=1}^{V} f\left(X_{i j}\right)\left(w_{i}^{T} w_{j}+b_{i}+b_{j}-\log \left(X_{i j}\right)\right)^{2} J=i,j=1Vf(Xij)(wiTwj+bi+bjlog(Xij))2

这个权重函数有些特点:

  • 没有出现过的词直接忽略
  • f(x)应该是非减函数,比如常出现的词,其权重应该不小,不常见的词,其权重应该不会过大。权重多少跟出现的频次正相关。
  • 对于大的输入,f(x)应该不至于太大,不然像the、he这类词,权重就会过大。


论文中给出了详细的推导过程 Global Vectors for Word Representation

Attentive Reader & Impatient Reader

Attentive Reader & Impatient Reader 是一维匹配和二维匹配的鼻祖

  • 一维匹配:
    问题编码成固定长度的向量,计算文档D每个歌词在特定问题上下文向量中作为答案的概率;
  • 二维匹配
    问题q每一个词编码,计算文档q中每一个词对D中每一个词的注意力,形成词-词的二维匹配结构,效果稍高于一维匹配模型

Deep LSTM Reader

Attentive Reader

query,长度为|q|,query作为一个整体拼接正、反向上的LSTM输出作为向量表示,记为u;
u=yq→(∣q∣)∥yq←(1)u=\overrightarrow{y_{q}}(|q|) \| \overleftarrow{y_{q}}(1) u=yq

(q)yq

(1)
yd(t)y_d(t)yd(t)是document中第t个位置的token输出表示为正、反向上LSTM的输出的拼接:
yd(t)=yd→(t)∥yd←(t)y_{d}(t)=\overrightarrow{y_{d}}(t) \| \overleftarrow{y_{d}}(t) yd(t)=yd

(t)yd

(t)

将文档D中yd(t)y_d(t)yd(t)作为key,将问题u作为一个query,输入一个注意力层,得到问题qury对文档的注意力加权表征rrr
m(t)=tanh⁡(Wymyd(t)+Wumu)s(t)∝exp⁡(WmsTm(t))r=yds\begin{array}{c} m(t)=\tanh \left(W_{y m} y_{d}(t)+W_{u m} u\right) \\ s(t) \propto \exp \left(W_{m s}^{\mathrm{T}} m(t)\right) \\ r=y_{d} s \end{array} m(t)=tanh(Wymyd(t)+Wumu)s(t)exp(WmsTm(t))r=yds

然后使用query和document的表示作为分类模型的输入。
gAR(d,q)=tanh⁡(Wrgr+Wugu)g^{A R}(d, q)=\tanh \left(W_{r g} r+W_{u g} u\right) gAR(d,q)=tanh(Wrgr+Wugu)
以上的权重矩阵www全部是随机初始化得到的,可以在模型中学习
整个qurry中的uuu 向量只跟document中的每个词做一次attention,生成document中rrr的ecoding。

Impatient Reader

qurry中每个token的重要性是不同的
Imaotient Reader 进一步分析qurry中的每一个token,尝试找到qurry中token与document中各个token之间关系权重,都需要考虑到上一个token在document中累积的信息

yq(i)=yq→(i)∥yq←(i)m(i,t)=tanh⁡(Wdmyd(t)+Wrmr(i−1)+Wqmyq(i)),1≤i≤∣q∣s(i,t)∝exp⁡(WmsTm(i,t))r(0)=r0r(i)=ydTs(i)+tanh⁡(Wrrr(i−1)),1≤i≤∣q∣\begin{array}{c} y_{q}(i)=\overrightarrow{y_{q}}(i) \| \overleftarrow{y_{q}}(i) \\ m(i, t)=\tanh \left(W_{d m} y_{d}(t)+W_{r m} r(i-1)+W_{q m} y_{q}(i)\right), 1 \leq i \leq|q| \\ s(i, t) \propto \exp \left(W_{m s}^{\mathrm{T}} m(i, t)\right) \\ r(0)=r_{0} \\ r(i)=y_{d}^{\mathrm{T}} s(i)+\tanh \left(W_{r r} r(i-1)\right), 1 \leq i \leq|q| \end{array} yq(i)=yq

(i)yq

(i)m(i,t)=tanh(Wdmyd(t)+Wrmr(i1)+Wqmyq(i)),1iqs(i,t)exp(WmsTm(i,t))r(0)=r0r(i)=ydTs(i)+tanh(Wrrr(i1)),1iq

Impatient Reader较Attentive Reader更为复杂,在某些情况下,IR效果可能并不好,因为每读取query中的一个token就要通读原文一次!并且还要考虑上一个token在原文中的相关token,这样效率可能不高,且可能存在梯度弥散问题。

Bi-DAF

Bi-Directional Attention Flow network
双向注意力流网络。

  • Character Embedding Layer
    这是处理英文数据使用的,将单词再细分之后的的词向量层,中文不用,英文中也不常用。

  • Word Emded Layer
    将文章(Context)和问题(Query)语句中的词映射到语义向量空间,相当于把自然语言翻译成机器能接受的数字语言。图中采用GLOVE获取词向量,也可以使用word2vec,一般是最终性能哪个最好用哪个。假设词向量维度为d,假设有包含T个词的文章向量 X∈Rd×T\mathbf{X} \in \mathbb{R}^{d \times T}XRd×T,含j个词的问题的问题向量Q∈Rd×J\mathbf{Q} \in \mathbb{R}^{d \times J}QRd×J

  • Contextual Embed Layer
    这层利用双向LSTM进行更高层面的信息提取。将X和Q分别输出双向LSTM网络,将LSTM网络的正向输出和反向输出拼接起来作为输出,那么我们就得到了综合整个文章的信息向量序列H∈R2d×T\mathbf{H} \in \mathbb{R}^{2d \times T}HR2d×T和问题向量U∈R2d×J\mathbf{U} \in \mathbb{R}^{2d \times J}UR2d×J

  • Attention Flow Layer
    attention层是最重要的层,有两个过程:match和fuse
    match就是使用attention机制对文本向量H和U进行双向匹配,在运用注意力机制时,定义一个匹配矩阵S∈RT×J\mathbf{S} \in \mathbb{R}^{T \times J}SRT×J,其中StjS_{tj}Stj代表H中第t个向量与U中第j个向量的相似度,且Stj=α(H:t,U:j)∈R\mathbf{S}_{t j}=\alpha\left(\mathbf{H}_{: t}, \mathbf{U}_{: j}\right) \in \mathbb{R}Stj=α(H:t,U:j)R,这个相似度通过一个可训练的标量函数来计算。用h代表H中的一个向量,u代表U中的一个向量,将[h,u,hu]拼接成一个6d维度的向量(其中代表内积’),乘上一个可训练的权值向量w即可得到对应的s。

    • context-to-query Attention:计算文章文本到问题文本的attention。定义at∈RJ\mathbf{a}_{t} \in \mathbb{R}^{J}atRJ为对文章中第t个向量,第j个问题词向量的重要程度,对于每一个t,∑atj=1\sum \mathbf{a}_{t j}=1atj=1,at=softmax⁡(St)\mathbf{a}_{t}=\operatorname{softmax}\left(\mathbf{S}_{t}\right)at=softmax(St),那个就有了T个不同的对于问题向量的J维权值.

    • querry-to-context:问题文本到文章文本的attention,b=softmax⁡(max⁡col(S))∈RT\mathbf{b}=\operatorname{softmax}\left(\max _{c o l}(\mathbf{S})\right) \in \mathbb{R}^{T}b=softmax(maxcol(S))RT为T个文章向量序列的权值向量。注意到,衡量文章向量重要程度时,使用了max处理,这就意味着模型并不在意该文章向量对于哪一个问题向量比较重要,只在意该文章向量是否对于某一个问题向量比较重要,只要在J维的重要性中,存在一维比较大,就认为该文章向量是重要的。那么加权后的文章向量为:h~=∑tbtH:t∈R2d\tilde{\mathbf{h}}=\sum_{t} \mathbf{b}_{t} \mathbf{H}_{: t} \in \mathbb{R}^{2 d}h~=tbtH:tR2d
      双向attention结束,得到两个 2d*T维的向量序列。

    • fuse过程:将上面获得的两个注意力向量序列和之前获得的文章信息向量序列H综合起来,求得文章向量序列上的query-aware representations,定义为G:t=β(H:t,U~:t,H~:t)∈RdG\mathbf{G}_{: t}=\boldsymbol{\beta}\left(\mathbf{H}_{: t}, \tilde{\mathbf{U}}_{: t}, \tilde{\mathbf{H}}_{: t}\right) \in \mathbb{R}^{d \mathbf{G}}G:t=β(H:t,U~:t,H~:t)RdG,其中每一个向量由[h;u~‾;h∘u~;h∘h~][\mathbf{h} ; \overline{\tilde{\mathbf{u}}} ; \mathbf{h} \circ \tilde{\mathbf{u}} ; \mathbf{h} \circ \tilde{\mathbf{h}}][h;u~;hu~;hh~]拼接成维度为8d*T的G.

  • Modeling Layer
    利用双向LSTM将8dT的G中的信息综合,生成2dT的M,则M中包含了非常多的信息,一方面体现了问题与文章之间的交互,另一方面将这种交互输入到LSTM网络后得到了交互的上下文信息。

  • Output Layer
    利用交叉熵损失函数构建 loss function进行训练。
    L(θ)=−1N∑iNlog⁡(pyi11)+log⁡(pyi22)L(\theta)=-\frac{1}{N} \sum_{i}^{N} \log \left(\mathbf{p}_{y_{i}^{1}}^{1}\right)+\log \left(\mathbf{p}_{y_{i}^{2}}^{2}\right)L(θ)=N1iNlog(pyi11)+log(pyi22)

机器阅读理解笔记之glove词向量与attentive readerimpatient reader和bi-DAF相关推荐

  1. 基于神经网络的机器阅读理解综述学习笔记

    基于神经网络的机器阅读理解综述学习笔记 一.机器阅读理解的任务定义 1.问题描述 机器阅读理解任务可以形式化成一个有监督的学习问题:给出三元组形式的训练数据(C,Q,A),其中,C 表示段落,Q 表示 ...

  2. 【阅读笔记】机器阅读理解(中)——架构篇

    文章目录 一.MRC模型架构 总体架构 编码层 词表向量 字符编码 上下文编码 交互层 互注意力 自注意力 上下文编码 输出层 多项式选择答案生成 区间式答案 自由式答案生成 注意力机制的应用 拷贝生 ...

  3. 【博文笔记】Attentive Reader\Impatient Reader:机器阅读理解之开山之作Teaching Machines to Read and Comprehend

    来源 参考博客: 机器阅读理解(看经典MRC模型与花式Attention) CNN&Dailymail:Teaching Machines to Read and Comprehend 论文: ...

  4. 【哈工大SCIR笔记】机器阅读理解简述

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要25分钟 跟随小博主,每天进步一丢丢 来自:哈工大SCIR 作者:施琦.妥明翔.孙月晴.尹治博 机器阅读理解技术即机器自动从给定的文本中回答用户 ...

  5. 【论文笔记】Retro-Reader:基于回溯式阅读器的机器阅读理解模型

    Zhuosheng Zhang, Junjie Yang, Hai Zhao, Department of Computer Science and Engineering, Shanghai Jia ...

  6. NLP-阅读理解:“阅读理解”综述(Machine Reading Comprehension, MRC)【完形填空、多项选择、抽取式(答案片段抽取)、生成式(自由作答)】《机器阅读理解数据集》

    <原始论文:Neural Machine Reading Comprehension: Methods and Trends> 一.阅读理解概述 所谓的机器阅读理解(Machine Rea ...

  7. 论文浅尝 | 机器阅读理解中常识知识的显式利用

    论文笔记整理:吴林娟,天津大学硕士,自然语言处理方向. 链接:https://arxiv.org/pdf/1809.03449.pdf 动机 机器阅读理解(MRC)和人类进行阅读理解之间还存在差距,作 ...

  8. 【Day 3】机器阅读理解——常见机器阅读理解模型(下)

    引言 本文介绍常见机器阅读理解模型中的R-NET.FusionNet和QA-Net. 上一篇: 机器阅读理解--常见机器阅读理解模型(上) 下一篇: R-NET R-Net1在Attention计算中 ...

  9. 机器阅读理解(Neural Machine Reading Comprehension)综述,相关方法及未来趋势

    Neural Machine Reading Comprehension:Methods and Trends Author:Shanshan Liu , Xin Zhang , Sheng Zhan ...

最新文章

  1. Distance计算的距离随经纬度不同
  2. 快速使用Python连接MySQL数据库的方法
  3. selenium操作chrome时的一些配置
  4. 移动web前端开发框架_移动前端开发是Web前端开发吗?
  5. iOS Application Security
  6. Typecho Theme Aria书写自己的篇章
  7. Python二:【ImageEnhance】+【PIL模块】如何利用python实现图像增强
  8. php加入队列失败,Laravel队列使用中踩的坑,不报错但是队列一直再重试
  9. AD19调用器件封装时报错Access violation at address 0000000141A9EDD4 in module 'IntegratedLibrary.DLL'.
  10. 图像处理里面的的尺度什么?
  11. js a/a中this的使用
  12. Android水平仪实训报告,测量实训报告范文3篇
  13. 畅管进销存管理系统 v6.0
  14. 《信号与系统学习笔记》—通信系统(一)
  15. setValue和setObject的区别
  16. Eclipse的MAT的支配树
  17. 比犀利哥更经典的话语
  18. Python中函数的说明与注释
  19. 微信电子健康卡——身份证照片OCR接口
  20. 蓝桥杯 算法提高-求最大值(dp基础/类01背包+滚动数组)

热门文章

  1. 【推荐书籍】《机器学习范式在推荐系统中的应用Machine Learning Paradigms- Applications in Recommender Systems》
  2. Spring Sercurity在Spring Boot 中的使用
  3. 2006年底的1篇CRM文章:对当前国内CRM市场发展的一点拙见。
  4. canvas 绘制动态雷达图
  5. 突破性研究成果:验血就能检测癌症发现新系统性癌症标志物
  6. PPT文件取消限制密码
  7. 睿尔曼 RM65-B 机械臂 WIN 示教软件测试
  8. 【Kubernetes 系列】ConfigMap 进阶 环境变量的配置及使用
  9. Ubuntu10.04如何设置特效3D桌面
  10. qt报错意外标记的class