热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【读】seq2seq—(7)IncorporatingCopyingMechanisminSequencetoSequenceLearning

本文转载自:自动文摘(十三)目录综述Seq2SeqCOPYNET模型综述拷贝模式和生成模式状态更新M矩阵实验文本摘要

本文转载自:

自动文摘(十三)

目录

综述

Seq2Seq

COPYNET

模型综述

拷贝模式和生成模式

状态更新

M矩阵

实验

文本摘要

Link



天下武功,唯快不破

今天分享的paper是Incorporating Copying Mechanism in Sequence-to-Sequence Learning,作者来自香港大学和华为诺亚方舟实验室。

本文的模型通过借鉴人类在处理难理解的文字时采用的死记硬背的方法,提出了COPYNET。将拷贝模式融入到了Seq2Seq模型中,将传统的生成模式和拷贝模式混合起来构建了新的模型,非常好地解决了OOV问题。解决问题的思路与之前的一篇有关Pointer的文章十分类似。decoder部分不断地变复杂,考虑的因素越来越多,模型的效果也越来越好。如果结合上一篇Minimum Risk Training的训练方法,相信在评价指标上会更进一步。

综述

Seq2Seq技术占据了nlp多个研究任务的评测榜首,包括最早提出该技术的机器翻译,句法分析,文本摘要,对话系统。Seq2Seq本质上是一个encoder-decoder的模型,encoder部分将输入的序列变换成某一种表示,然后decoder将这种表示变换成输出序列。在Seq2Seq的基础上,首次增加注意力机制来做机器翻译的自动对齐。注意力机制在很大程度上提升了Seq2Seq的性能。

本文研究了人类语言交流的另一个机制,“拷贝机制”(copy mechanism),定位到输入序列中的某个片段,然后将该片段拷贝到输出序列中。比如:

但是注意力机制严重依赖于语义的表示,在系统需要获取到命名实体或者日期时难以准确地表示。相对之下,拷贝机制更加接近于人类处理语言问题的方式。本文提出了COPYNET系统,不仅具备传统Seq2Seq生成词的能力,而且可以从输入序列中拷贝合适的片段到输出序列中。在合成数据和真实数据中均取得了不错的结果。

Seq2Seq

文章的这部分简单介绍了一下Seq2Seq+Attention Mechanism技术,前面的博客分享了很多这部分的内容,这里就不再赘述了。

COPYNET

从神经学角度来讲,拷贝机制和人类的死记硬背类似,较少地理解到了意思但保留了字面的完整。从模型的角度来讲,拷贝机制相比于soft注意力模型更加死板,所以更难整合到神经网络模型中。

模型综述

COPYNET依然是一个encoder-decoder模型,如图1所示:

encoder采用了一个双向RNN模型,输出一个隐藏层表示的矩阵M作为decoder的输入。decoder部分与传统的Seq2Seq不同之处在于以下三部分:

  • 预测:在生成词时存在两种模式,一种是生成模式,一种是拷贝模式,生成模型是一个结合两种模式的概率模型。
  • 状态更新:用t-1时刻的预测出的词来更新t时刻的状态,COPYNET不仅仅词向量,而且使用M矩阵中特定位置的hidden state。
  • 读取M:COPYNET也会选择性地读取M矩阵,来获取混合了内容和位置的信息。

拷贝模式和生成模式

首先,构造了两个词汇表,一个是高频词词汇表,另一个是只在输入序列中出现过一次的词,这部分的词用来支持COPYNET,用UNK表示超纲词(OOV),最终输入序列的词汇表是三者的并集。

给定了decoder当前状态和M矩阵,生成目标单词的概率模型如下:

模型中g表示生成模式,c表示拷贝模式。两种模式的概率由下式给定:

共四种可能情况,下图会更形象一些:

其中生成模式的打分公式是:

拷贝模式的打分公式是:

状态更新

decoder状态更新的公式是

不同的是这里的t-1时刻的y由下式表示:

后面的部分是M矩阵中与t时刻y相关的状态权重之和,如下:

M矩阵

M矩阵中既包含了内容(语义)信息,又包含了位置信息。COPYNET在attentive read时由内容(语义)信息和语言模型来驱动,即生成模式;在拷贝模式时,由位置信息来控制。

位置信息的更新方式如下图所示:

实验

一共分为三个实验:

  • 简单规则构造的合成数据。
  • 文本摘要相关的真实数据。
  • 简单对话系统的数据。

这里只看文本摘要实验。

文本摘要

数据采用LCSTS中文短文本摘要数据集,分为两个level来测试:word-level和char-level,并且以LCSTS的baseline作为对比,结果如下:

本文的模型远远优于baseline,而且word-level的结果比char-level更好,这与当时LCSTS paper中的结论不同,一个可能的原因是,数据集中包含了大量的命名实体名词(entity name),LCSTS paper中的方法并不能很好地处理大量的UNK单词,因此baseline中的char-level效果比word-level更好,而本文的模型的优势在于处理OOV问题,所以word-level结果更好一些。

Link

[1] Incorporating Copying Mechanism in Sequence-to-Sequence Learning Training


推荐阅读
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • oracle安装时找不到启动,Oracle没有开机自启是怎么回事?这一步骤很重要
    重启Oracle数据库重启Oracle数据库包括启动Oracle数据库服务进程和启动Oracle数据库两步,大家继续往下看。按照《【Oracle】什么?作为DBA&# ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
author-avatar
黄智铭铭铭铭_216
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有