当前位置: 首页 > article >正文

Pretraining Methods for Dialog Context Representation Learning

前言

Abstract

本文考察了各种用于学习对话上下文表示的无监督预训练目标, 提出了两种新颖的对话上下文编码器预训练方法,并研究了四种方法。使用MultiWoz数据集对每个预训练目标进行了微调,并在一组下游对话任务上进行了评估,并观察到了出色的性能改进。 进一步的评估表明,我们的预训练目标不仅可以带来更好的性能,而且可以带来更好的收敛性,并且模型需要的数据更少,并且具有更好的领域通用性。

Introduction

目前预训练方法仍处在起步阶段,我们仍然不能完全了解他们的性质。大多数方法都是基于语言模型的,给一个句子,预测当前词,下一个词或者被mask的词。如Word2Vec,Glove,ELMO等。这些方法将自然语言看作是word token的流,需要复杂的模型利用大规模的语料库和庞杂的计算来发现更高级别的依赖关系。BERT模型也是基于语言模型,但是加入了句子对级别的信息,预测两句话是否是连续的。这种方法在预训练时利用了语句之间的关系。但是,在对话上下文建模这种存在多轮的依赖关系的任务上还并没有行之有效的预训练方法,于是本文在这个方面做了一些尝试。本文目的就是研究几个预训练话语级语言表示的方法,本文迈出了建立对话系统预训练方法系统分析框架的第一步。

评估预训练方法的四个假设:

  • 预训练能够在整个可用数据集上进行微调,且提升下游任务
  • 预训练结果需要更好的收敛
  • 预训练将在有限的数据下表现出色
  • 预训练有助于领域通用化

对话与其他文本的区别:

  • 对话必须是语句之间连贯的,并在多轮上达到一个交际的目的。
  • 对话在本质上是互动的,说话者之间有反馈,而且说话者轮流进行发言。

本文的主要贡献:

  • 针对对话上下文表示研究四个不同的预训练方法,包括两个新的方法
  • 在四个下游任务上,综合分析预训练对对话上下文表示的影响

Related Work

这项工作与NLP系统的辅助多任务学习和带预训练的迁移学习的研究紧密相关。

Training with Auxiliary Tasks

结合有用的辅助损失函数来补充主要目标已被证明可以改善深度神经网络模型的性能。一些辅助损失函数专门设计来提高特殊任务的性能。在一些案例中,辅助函数被用来提升模型的泛化能力。经过适当的辅助任务预训练后,模型可以捕获更长的依赖关系。

Transfer Learning with Pretraining

基本过程通常是首先在无监督目标的海量文本数据上预训练功能强大的神经编码器。 第二步是使用更小的域内数据集对特定的下游任务微调此预训练模型。ELMo使用BiLSTM网络来训练双向语言模型来同时预测前一个词和后一个词。OpenAI的GPT使用Transformer网络和BERT进行了两个目标的同时训练:掩蔽语言模型和下一句预测。每个模型均已在GLUE基准上展示了最新的结果。这些利用大规模预训练的模型优于仅使用域内数据的系统。用于学习从输入文本中提取话语级别信息的预训练方法的工作很少。BERT中的下一句话预测损失是朝着这个方向迈出的一步。尽管这些预训练方法擅长于对顺序文本进行建模,但它们并未明确考虑对话的独特话语级功能。因此,我们在研究预训练目标时采取了第一步,以提取对话上下文的更好的话语级表示形式。

Pretraining Objectives

本文定义了一种强有力的表示形式,它可以捕获整个对话历史中的话语级信息以及构成该历史的话语中的话语级信息,在本文的定义下,当表示允许模型在各种下游任务上表现更好时,表示就足够通用了。

  • 一个任意T轮对话(对话历史)的表示符号: c = [ u 1 , . . . , u t ] c = [u_1,...,u_t] c=[u1,...,ut] u i u_i ui是一个话语。
  • 对话回复 R = r 1 , . . . , r M R = {r_1,...,r_M} R=r1,...,rM

Next-Utterance Retrieval(NUR-检索下一句话)

NUR的目的就是在 k k k个候选回复中选择正确的下一句话。对于此任务,本文使用分层编码器来生成对话上下文的表示,方法是首先通过双向长期短期记忆网络(biLSTM)独立运行每个话语,然后使用所得的话语表示来生成整个对话上下文的表示。给定 [ u 1 , . . . u T − 1 ] [u_1,... u_{T-1}] [u1...uT1],NUR的任务是从R中选择正确的下一个话语 u T u_T uT。损失运算公式如下:

u i ^ = f u ( u i ) , i ∈ [ 1 , T − 1 ] [ h 1 , . . . h T − 1 ] = f c ( u 1 , . . . u ^ T − 1 ) r g t = f r ( u T ) r j = f r ( r j ) , r j ∼ p n ( r ) a g t = ( h T − 1 ) T r g t a j = ( h T − 1 ) T r j \hat{u_i}=f_u(u_i), i\in [1,T-1]\\ [h_1,...h_{T-1}]=f_c(u_1,...\hat{u}_{T-1})\\ r_{gt} = f_r(u_T)\\ r_{j} = f_r(r_j),r_j\sim p_n(r)\\ a_{gt} = (h_{T-1})^{T}r_{gt}\\ a_{j} = (h_{T-1})^{T}r_{j} ui^=fu(ui),i[1,T1][h1,...hT1]=fc(u1,...u^


http://www.kler.cn/news/333116.html

相关文章:

  • 一“填”到底:深入理解Flood Fill算法
  • Robot Operating System——占据栅格地图(occupancy grid map)
  • 【数据库】MongoDB的索引功能及其在Java中的实现
  • 怎么查看网站是否被谷歌收录,查看网站是否被谷歌收录的简便方法
  • 分享自己量化过程中获取历史行情数据的过程
  • IntelliJ IDEA idea修改快捷键,使用系统默认方式打开文件(Windows)
  • matlab 判断多组数据的分布是否一致,可以使用什么方法?
  • C语言自定义类型:联合和枚举
  • C++初始化列表 initializer_list 介绍
  • WASM实现加密与算法保护
  • 【网络安全】Cookie与ID未强绑定导致账户接管
  • 构建高效新闻推荐系统:Spring Boot的力量
  • 【WebGis开发 - Cesium】三维可视化项目教程---初始化场景
  • HTML增加文本复制模块(使用户快速复制内容到剪贴板)
  • 探索TCP协议的奥秘:Python中的网络通信
  • win11无法输入中文,任务栏中输入法消失
  • 基于ROS的激光雷达点云物体检测
  • Java面试题二
  • (Django)初步使用
  • 微信原生小程序