自然语言处理11——深度学习应用
通过预训练语言模型得到情感语义树:将原始数据传进BERT中得到每一时刻的编码,将编码输入到attention中,包含1.计算上层的节点情感语义值时关注下层哪一部分,2.上层层与层之间的attention,输出为一颗情感语义树。输入基本序列经过编码后经过中间层对整句话进行情感分类,并找到其中的情感词,将除了情感词的其他部分都保留,对整句话进行重构,1.让情感化模块在有监督的情况下学习增加情感;思路:
自然语言处理11——深度学习应用
文章目录
自然语言处理任务
情感分析
传统词向量的方法根据目标词的上下文建立基于上下文窗口的语言模型,通过最大化目标词向量的概率来学习词向量。
深度学习的方法如何处理?
基础资源:情感知识库的构建:属性词、情感词典、观点持有者。
情感分类模型:属性级、句子级、篇章级
-
属性级:细粒度情感分析,指对所描述事物的属性的情感极性进行判断。
- 基本思想:前提:将属性词识别出来;对属性词和其上下文进行表示,并建立关系,进而判断情感。
- 方法:
- 分段式表示(RNN、CNN):用双向模型用上下文分别得到两个向量,再进行融合;
- 整体表示(记忆网络):针对RNN记忆单元的记忆较少,因此用记忆网络记忆更多的东西,检索记忆网络中目标词的上下文的词,把上下文一股脑地丢入记忆网络中,来判断情感。
-
情感词向量学习模型:具有相似语法和语义的词,在词向量空间中的距离比较近,但是情感相反。假设:窗口中的词情感极性趋于一致,判断窗口的情感。从词义级计算情感
-
句子级:对单句的情感极性进行分析判断,如:CNN、RNN、BERT等。可以转换成句子分类问题。
-
篇章级:难点:篇章的情感可能有多种,如:先抑后扬。简单地把句子的情感累加起来是不准确的。
- 基本思想:计算篇章级的向量表示,即对词->句子->篇章逐层进行语义编码表示。这是一种层次概念。
端到端模型:来一个原始的输入,输出就是任务的输出。
- 意见目标抽取和目标情感预测:用端到端的模型,一次性解决掉把一阶目标抽取和目标情感预测两个任务。用标注数据和模型得到的结果的误差来反向传递,来同时调整两个任务的参数。用到了两层RNN(LSTM),这两层是相互影响的。
- 上边一层用于预测联合的标签,得到最终的意见目标的情感分析的输出;
- 下边一层用于意见目标实体的边界检测:
- 边界引导BG:类似残差网络的结构,利用下层的输出来指导上层更准确地预测,用意见目标边界识别的准确率增强情感计算的准确率。
- 观点增强OE:二元分类模块,若意见目标的边界预测准确,情感值计算准确,那么这就是一个正例,利用输出的分类结果反向传播回来来指导这两层的参数。
- SC:一个门机制,在多个词的意见目标中保持情感一致性,利用情感输出的结果来反过来增强意见目标的边界检测准确率,如:摄像 和 头两个词的情感一致性很高,那么可以认为把它们两个合在一起”摄像头“是想要的词。
迁移学习:两个相近的任务,其中一个可以得到比较好的模型,可以把这个迁移到另外一个数据比较少、不好训练的任务中。粗粒度的情感分析任务可以迁移到细粒度的情感分析任务。
- 如何迁移?对文本的编码部分直接搬过来了,注意力机制无法共享。
- 训练注意力机制的参数:限制性的特征对齐损失函数:将两个任务的全连接层进行比较,通过特征对齐得到一个损失函数,通过损失函数进行误差的回传,来训练参数。
基于预训练模型:
-
情感语义树:类似句法分析树,从叶子节点将节点的情感进行合并,直到合并到最上边得到整个句子的情感。
通过预训练语言模型得到情感语义树:将原始数据传进BERT中得到每一时刻的编码,将编码输入到attention中,包含1.计算上层的节点情感语义值时关注下层哪一部分,2.上层层与层之间的attention,输出为一颗情感语义树。
应用:话题传播分析、观点摘要、观点检索
机器阅读
让机器读一篇文章,然后回答相关问题。
主要步骤:
- 文本表示:词向量等进行文本的表示
- 问句匹配:问题和原文句子的语义关联,来找到答案
- 理解推理:基于知识图谱等对语义关联进行加工和推理
- 结果推荐:对候选答案进行排序和输出
数据集:
MCTest | 给定一篇文章,一个问题及四个选项,预测哪个选项是问题的答案 |
---|---|
CNN/Daily Mail | 给定一篇文章和一个问题,预测问题中被X替换的实体是文章中哪个实体 |
SQuAD | 给定一篇文章,一个问题,预测文章中一个区间 |
Quasar-T | 给定几篇文章,一个问题,预测文章中的一个区间 |
模型:
BiDAF:
-
输入:一篇文章和一个问题;输出:文章中每一个词作为答案开始的概率和结束的概率
-
文本表示:字符嵌入、词嵌入、上下文嵌入;语义匹配:attention flow;理解推理:Modeling Layer;结果推荐:Output Layer。
-
交叉注意力层:
- 从正文到问句的注意力值的计算,对于正文中的一个词看它关注问句中的哪些词,把正文的 h i h_i hi、问句的 q j q_j qj、 h i h_i hi和 q j q_j qj的内积进行加权求和作为问句每个词的权重 a i j a_{ij} aij,一个词的注意力值 c i = ∑ j = 1 n q q j p i j c_i = \sum \limits_{j=1}^{n_q}q_jp_{ij} ci=j=1∑nqqjpij
- 从问句到正文:对于问句中的一个词会关注正文中的哪个词,计算过程与上述类似,取最大值。
- 输出:两个表示拼接到一起,作为正文中第i个词的表示,输出再经过BiDAF的两层编码,得到最终的输出。
机器阅读最新进展:
- 将人阅读习惯:反复阅读、重要的地方进行标记、自我评估放到模型中,用到了GPT。
- 对抗阅读:在正文中插入干扰项,然后测试系统是否能够围绕这一段落回答问题。对模型的鲁棒性提高了很高的要求。
自动问答
基于知识图谱的问答系统
基于特定领域的问答系统,可以查看它的知识图谱给出答案
三个基本问题:
-
对问题的表示:词得到向量化、句子的向量化、知识的向量化
- 确定主题实体->生成候选答案实体->答案表示-注意力机制->问句表示
-
对答案的表示
-
建立问题和答案之间的语义关联
基于知识图谱的多跳回答:答案距离问句实体很远。
头实体:问句中的实体;候选实体:通过头实体在知识图谱中搜索出的实体
- 问题的表示:问题嵌入模块:RoBERTa预训练语言模型
- 知识库:KG嵌入模块:ComplEx进行实体和关系的嵌入
- 答案选择模块:为(头实体,问题)和每个可能的答案打分。候选答案评分 = 问句与关系的相关度 + 头实体到候选实体间的最短路径
- 小知识图谱:遍历,选择最高得分的实体
- 大知识图谱:通过修剪候选实体来进行选择。
基于推理的问答系统
知识图谱不够完善时,可以通过知识图谱的推理来补全关系;或者在给定问句和问句的上下文后,对知识进行推理,然后得到答案。
Memory Network:使用额外的Memory来上下文。
网络结构:
步骤:
- 输入组件将上下文编码成一个一个向量存在记忆组件中
- 使用时相当于信息检索的过程,来一个问句时,利用注意力机制检索记忆组件看哪个向量与问句相关
- 推理组件:检索过程,得到的结果用输出组件输出,回复组件将输出组件得到的结果整合成最终的答案。
基于Lattice CNN的中文问答匹配
整理好大量的问答对,将问题与问答对中的问题匹配起来,将对应的但返回。即如何处理短文本相似度计算问题。
步骤:全切分->将切分出的都转化成一个向量,将编码向量构成一个图像->对图像进行卷积神经网络的操作->分类
文本生成
机器输出一个文本给人看
分类:文本->文本;数据->文本;图像->文本
基于神经网络的生成模型:
拷贝机制:生成的文本可能是原始的文本的某一部分,可以直接粘贴过去。
注意力机制:生成文本的时候需要注意到原始文本中的某一部分
生成+抽取摘要:
- 抽取式摘要:句子的连贯性不需要担心,但内容上不一定能够形容文章内容。可以看作分类任务,关键句子即为正类
- 生成式摘要:内容可能非常好,但形式可能很离谱。端到端的Seq2Seq模型。
- 生成+抽取摘要:融合各自优点:包含抽取模块(得到比较好的句子) + 生成模块(抽取出的文本作为生成模块的参考句子)。
- Reward机制:如果生成的摘要比较好就给它奖励,反馈回去
结构化数据生成:
输入是表格化的数据,自动生成一段文本数据。
输入端需要对表格的字段进行编码。
图像描述生成:
将attention机制引入到图像领域的文章中,对输入的图像进行特征抽取,对得到的向量用RNN来生成文本,用注意力机制看生成当前词时需要注意到图像中的哪一个区域。包括:反向传播训练的Soft Attention;强化学习训练的Hard Attention
可控文本生成:
为了控制文本生成的风格、情感、架构等加入可控因子。
如:情感风格迁移任务:
输入基本序列经过编码后经过中间层对整句话进行情感分类,并找到其中的情感词,将除了情感词的其他部分都保留,对整句话进行重构,1.让情感化模块在有监督的情况下学习增加情感;2.将情感词取反,可以实现添加相反的情感词。
文本改写:
目标:解决开放域的对话生成,即不限定领域时生成的句子可能很离谱,需要保证生成的句子的质量。
思路:将主题词丢到搜索引擎中,找到相关的文本,对其中的内容进行增删改,得到编辑向量,最后得到生成的文本。
多模态融合技术
将图像处理和自然语言处理、语音信息、视频信息等融合到一起
传统多模态融合:通过多个学习器对多个模态进行学习,将得到的分类结果整合起来作为一个输出,是后融合阶段(对分类结果进行融合)。但没有对共同的部分进行识别。
我们希望能够实现前融合(特征提取时进行融合)/中融合(对提取到的特征进行融合)
**多模态情感分类:**给出图片和图片描述,如果两个单看可能无法理解,但是两个结合起来可以得到很好的理解。
多模态检索:
如:以图搜声;以图搜文等
关键点:找到不同模态之间的共同部分并进行对齐
如何进行前融合?
基本思路:采用自编码器
自编码器:是一种前馈神经网络,目标是尽可能让输入与输出一致。若输入和输出一致,则中间层是想要得到的自编码器层。
Bimodal DBN:
对文本和图片都搞一个编码,将两个编码拼接起来作为图文的整体表达,输出时重建出一个文本和图像,若输入输出一致,中间的表达则是融合结果。
更加关注多模态数据表示的补全,没有把重点放在学习不同模态数据的关联上,效果不如后三种好。
对应自编码器:
图像搞一个自编码器,文本搞一个自编码器,对于中间层设计一个损失函数,使二者尽量相近(相似性约束),使得
- 对齐的图像和文本输入在表示空间中距离相近
- 相似的单模态输入在表示空间中相近
对应跨模态自编码器:
图像搞一个自编码器,使其输出是文本,文本的自编码器输出是图像,中间层也设计相似性约束,使得学习到不同模态数据间的关联性信息。
对应全模态自编码器:
对于图像输入,输出图像和文本;对文本输入,也输出图像和文本
命名实体识别
利用多模态融合实现命名实体识别。如:结合文本和图像信息,得知文本中的名字是狗的名字。
方案1Adaptive Co-attention Network:
文本进行一系列的词向量的表示,经过双向LSTM编码后得到每个词的中间表示;对于图像,经过卷积神经网络得到图像的特征表示。
- 融合方式:Co-attention,同时进行文本和图像的共同关注。增强文本和图片间的关联,从而将相关文本的图片内容进行对齐。
方案2基于transformer的多模态NER:
文本的编码(BERT),图像的编码(残差网络)
- 多模态交互模块(Multimodal Interaction Module):学习到有图像信息的文本表示以及有文本信息的图像表示。
- 最终通过CRF层进行命名实体识别
- 创新点:认为图像中体现出的命名实体可能没有文本中提到的多,因此在左上角加了一部分作为辅助模块,对于图像中没有体现的实体进行关注,对最终的结果进行修正。
应用与实践
优化基本原则:快速试错
- 由小数据到大数据:小数据快速跑一遍验证程序本身有无问题
- Loss函数设计要合理
- 观察loss变化胜于观察准确率:loss下降情况可靠,准确率有时是突变的,loss缓慢下降可以放心地迭代下去
- 确认分类网络学习充分:观察样本的分类边界是否从模糊到清晰
- 学习率设置合理
- 对于训练集和验证集的loss:判断是否过拟合,训练是否足够
调优过程
- 数据处理:数据增强:同义替换、回译(英文->中文->英文)、文本表层句法结构的转化、随机噪声插入、文本生成、文本改写
- 模型改进:深度/宽度加大;选择更合适的模型,如:预训练-微调;模型整合
- 参数调优:
- 防止梯度消失、梯度爆炸:更换激活函数、采用残差结构、批归一化(将一批训练样本的取值在同一范围内)、梯度截断、预训练+微调
- 防止网络过拟合:数据增强、提取停止、权重正则化、批归一化、dropout
- 防止网络训练不稳定、不收敛:观察loss
- 其他:调优化函数、学习率、训练轮数、Batch size
- 后处理:模型融合+测试结果融合;根据实际任务进行改进;选择好的参数初始化
往期文章:
自然语言处理1——NLP概述
自然语言处理2——语言学基础
自然语言处理3——语言学资源
自然语言处理4——统计语言模型
自然语言处理5——词法分析
自然语言处理6——HMM模型和词性标注
自然语言处理7——句法分析
自然语言处理8——语义分析
自然语言处理9——深度学习往期文章:
自然语言处理1——NLP概述
自然语言处理2——语言学基础
自然语言处理3——语言学资源
自然语言处理4——统计语言模型
自然语言处理5——词法分析
自然语言处理6——HMM模型和词性标注
自然语言处理7——句法分析
自然语言处理8——语义分析
自然语言处理9——深度学习
自然语言处理10——预训练模型

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)