《基于深度学习的自然语言处理》【以色列】约阿夫 第三部分 笔记

第三部分 特殊的结构

- CNN:n元语法探测器
- RNN:序列和栈建模
- 实际的RNN结构
- 通过循环网络建模
- 条件生成

CNN专门用来识别文本中的一个序列里的富信息n元语法和带槽n元语法,忽略位置但考虑局部有序。
RNN用来捕捉序列内敏感模式和规则。

本章RNN和CNN结构主要用于特征提取。


n元语法探测器:卷积神经网络

#主要思想:k个词滑动串口的每个实例应用一个非线性(习得的)函数。(可看成滤波器)
1、卷积池化
(1)文本上的一维卷积:类似于图像,左右移动,窗口对应于图像CNN中的核,每个词会有对应的权重。
(2)宽卷积和窄卷积
#窄卷积——正常做卷积;宽卷积——对句子两端进行填充后做卷积。
(3)另一种卷积方法:词序列往上叠加一层,对叠加层进行卷积。
在这里插入图片描述
(4)向量池化:max-pooling、average-pooling、k-max pooling(每一维保持前k个而不是最大值,并保留其顺序)、动态池化。
(5)还有一些变体操作,比如使用多个卷积层等。

2、特征哈希(哈希技巧):解决向量池化占用高内存空间问题。

  • 思想:不需要预先计算词汇-下标的映射。
  • 方法:创建一个N行的词嵌入矩阵E,在训练过程中的k元语法,我们使用哈希函数h将其指派给E中的一行,h再确定性的将其映射成一个数,然后使用对应行作为词嵌入。
  • 可做go-to基线方法

3、层次化卷积
一元卷积扩展而成,卷积序列逐层相连。
在这里插入图片描述

  • 膨胀(d卷积结构)
    两种方法:(1)设置步长为k-1;(2)步长固定为1,每层间使用局部池化的方式来缩短序列长度。
    在这里插入图片描述
    在这里插入图片描述
    参数捆绑和跨层连接。
    参数捆绑:对于所有参数层都使用同样的参数集合。
    跨层连接:拼接、平均、作何的方式和其它层进行连接。

循环神经网络:序列和栈建模
1、RNN常见使用模式:接收器(将监督信号仅置于最后的输出向量y上)、编码器、传感器(每读取一个输入生成一个输出,例:序列标注器/语言模型)。
2、双向RNN(biRNN):相对于RNN放宽了固定窗口大小的假设,允许在序列内部向前或向后看任意远的距离。等于两个RNN向量的简单拼接。
在这里插入图片描述
在这里插入图片描述
3、堆叠RNN——deep-biRNN
在这里插入图片描述
4、用于表示栈的RNN
(基于转移的依存关系)


实际的循环神经网络结构
1、S-RNN对元素顺序敏感
2、使用二进制门向量控制读写
#实际操作时01可换成任意实值再经过sigmoid函数即可。(解决01不可微分的问题)
在这里插入图片描述
3、LSTM/GRU

4、其他循环结构变体
非门结构的改进、新的神经网络结构(如,可微的栈结构Grefenstette et al.,2015、神经网络图灵机Graves
et al., 2014等)
5、在非循环连接部分应用Dropout——Gal(2015)的变分RNN丢弃方法
在这里插入图片描述


通过循环网络建模
#RNN作为接收器
1、情感分类
(1)句子级情感分类:给定一个句子(通常是评论信息),做情感分类(属于消极类还是积极类)。

  • 从语言角度整体构建句子的情感极性。
  • 处理讽刺和隐喻。
    (2)文本级的情感分类——适合使用层次化结构(Li等人2015)的方法。

2、主谓语一致语法检查
“现在时态谓语动词的单复数必须与动词的主语一致”的规则。
难点:主谓语可能被隔开了。
解决办法:句法分析树。

3、词性标注
框架:深度双向RNN
先用字符级RNN对每个词进行词嵌入转换,再将生成的词向量送入深度双向RNN中。每个标签的预测可以依赖整个输入的句子。
在这里插入图片描述
替换方案:词向量的构建可以使用字符级的卷积和池化方法。

4、RNN-CNN文本分类
方法同上。

5、弧分解依存句法分析
给定词语与其对应的词性标签——得到对应的特征向量——送入双向RNN——得到编码(句子中每一个位置上的词向量和对应的词性标签向量的拼接结果)——送入深度双向RNN——输出向量拼接——送入MLP——得到核心词-修饰词候选对的打分


条件生成
#RNN作为生成器
1、RNN序列生成示例
单步输出方法:选择概率最高项进行输出/根据模型预测的分布进行采样/使用beam-search获取全局最高概率输出。
在这里插入图片描述
2、teching-forcing方法(教师-强制方法):对于训练语料中长度为n的句子,我们生成一个具有 n个输入以及 n+ 1 个相应输出的 RNN 转换器,其中第一个输入是句首符,接下来是句子的 n个词。第一个期望的输出是叫w1,第二个期望输出是W2 ,以此类推,第 n+ 1 个期望输出是句尾符。
#这种方法不能很好处理生成序列与观测序列之间的偏差。

3、条件生成(编码-解码器)——利用已生成项来生成下一个项。

4、序列到序列模型示例
在这里插入图片描述

5、应用
机器翻译、邮件自动回复(将可能较长的邮件文本映射至一条较短的回复)、形态屈折(输入基本词和期望的形态变化需求,输出为改词的屈折形式,如输入do和过去式,输出为did),其他应用(如句子压缩、句法分析、命名实体识别等)
#映射任务都可尝试使用。

6、其他条件的上下文
上下文不一定是基于文本的,也可以是对话任务、也可以是图像等。

7、无监督的句子相似性
skip-thought向量——出现在相似上下文(围绕该句子的其他句子)的句子是语义相似的。
句法相似度:对句子进行编码,解码器重构一棵线性化的句法分析树。句子编码表示能捕捉到句子的句法结构信息。

8、结合注意力(软注意力机制)的条件生成
模型:结合注意力机制的编码器-解码器结构+biRNN
输入长度为n的序列——编码产生n个向量c——添加注意力(涵盖了编解码结构)得到含焦点的上下文向量
模型计算过程:
在这里插入图片描述
模型示例:
在这里插入图片描述
注意力作用在编码阶段的原因:(1)biRNN编码的向量已经包含了上下文信息,而不仅仅是词本身信息;(2)有一个可训练的编码模块与解码器进行联合训练,编码器与解码器可以协同演化 ,同时该网络可以学习如何对输入序列中有助于解码的属性进行编码,而这些属性可能并不直接出现在源序列 X1,n 中。例如, biRNN 编码器也许能够学习到 X; 在整个序列中位置信息的编码,而解码器则能够使用该信息来依次访问源序列中的元素,或者将更多的注意力放在序列首的元素。

9、计算复杂性

  • 不含注意力的条件生成:
    编码过程:输入序列长度的线性时间O(n)
    解码过程:输出序列长度的线性时间O(m)
    整体时间复杂度:O(m+n)
  • 含注意力机制的条件生成:
    编码过程:输入序列长度的线性时间O(n)
    解码过程:需计算注意力
    整体时间复杂度:O(m*n)

10、可解释性
含注意力的模型可以通过观察注意力权重来提供一定的解释性。

11、NLP中基于注意力机制的模型
(1)机器翻译:子词单元(字符级编码)、融合单语数据、输入时候添加语言学标注、其他(如扩大输出词表、训练阶段采用柱搜索解码,利用句法信息的模型等)
(2)形态屈折:SIGMORPHON形态屈折联合任务(Cotterell 2016)、获胜系统(Kann 2016)等。
(3)句法分析:集成多个含注意力神经网络的句法分析器。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值