当前位置: 首页 > 编程日记 > 正文

​GPT-3好“搭档”:这种方法缓解模型退化,让输出更自然

c431102ee8fdcbefd989872f2b6cdfad.gif

作者 | LZM

来源丨数据实战派

文本生成对于许多自然语言处理应用来说都是非常重要的。

但神经语言模型的基于最大化的解码方法(如 beam search)往往导致退化解,即生成的文本是不自然的,并且常常包含不必要的重复。现有的方法通过采样或修改训练目标来引入随机性,以降低某些 token 的概率(例如,非似然训练)。然而,它们往往导致解决方案缺乏连贯性。

近日,来自剑桥大学、香港中文大学、腾讯 AI 实验室和 DeepMind 的科学家们证明,自然语言生成模型出现退化现象的一个潜在原因是 token 的分布式表示向量存在各向异性。

他们进一步提出了一个基于对比学习的自然语言生成框架。在两种语言的三个基准测试上进行的大量实验和分析表明,该方法在人工评估和自动评估两个方面上优于目前最先进的文本生成方法。

研究动机与主要研究内容


12f84fb46eda382c084808d105c5e7fe.png

图1. Token 表示向量的 cosine 相似度矩阵

这项研究中,研究团队发现,神经语言模型的退化源于 token 表示向量的各向异性分布,即它们的表示向量驻留在整个空间的一个狭窄子集中。

图1(a)展示了 token 表示向量的 cosine 相似度矩阵,其中表示向量来源于 GPT-2 的最后一个隐层的输出。研究团队看到句子中 token 之间的余弦相似度超过 0.95,这意味着这些表征彼此十分接近。

在理想情况下,模型的 token 表示应遵循各向同性分布,即 token 相似度矩阵应是稀疏的,不同 token 的表示应是有区别的,如图2(b)所示。在解码过程中,为了避免模型退化,需要保留生成文本的 token 相似矩阵的稀疏性。

基于上述动机,研究团队提出了 SimCTG(一个简单的神经文本生成对比框架),该框架鼓励模型学习有区分度的、各向同性的 token 表示。

对比搜索背后的关键直觉是:

(1)在每个解码步骤,输出应该从组中选择最有可能的候选词的预测模型,以更好地维护生成的文本之间的语义一致性;

(2)token 相似矩阵的稀疏性应该保持以避免退化。

主要方法

  • 对比训练

研究团队的目标是鼓励语言模型学习有区别且各向同性的 token 表示。为此,在语言模型的训练中引入了一个对比损失函数 LCL。给定任意一个变长序列 x,该对比损失函数定义为:

4a11605e25d5bd2affa087871c6fb599.png

其中,ρ 是预先设定的 margin,hxi 是模型输出的 xi 的表示向量。相似度函数 s 计算任意两个表示向量之间的余弦相似度:

5b477244bdb68b5577514768a84b8477.png

可以想象,通过训练上述对比损失函数,不同 token 的表示间的距离将被拉开。因此,可以得到一个可分的、各向同性的模型表示空间。最终的总损失函数为:

1e10172c4836f8d293e55e7ac3d6ce1c.png

  • 对比搜索

研究团队提出一种新的解码方法:对比搜索(contrastive search)。每一步解码时,(1)模型从最可能的候选集合中选出一个作为输出,(2)产生的输出应当与前面已经生成的内容足够不同。这种方式下生成的文本在保持与前文的语义一致性的同时还能避免模型退化。具体来说,输出 xt 的生成满足:

61b31697a80055106414e5043b574563.png

其中 V(k) 是候选词集合,k 通常取 3 到 10。上式的第一项代表模型对 v 的支持度 v(model confidence),是模型估计的候选词 v 为下一个词的概率。第二项是对模型退化的惩罚项(degeneration penalty)是下一个词 v 与前面已生成的词的相似度最大值。α 是超参数,负责调节两项损失之间的平衡。当 α=0 时,解码方法退化到贪婪搜索。

效率分析:该方法可以有效地实现对比搜索。所需的额外计算是退化罚的计算,该计算可以通过简单的矩阵乘法来实现。后文将证明,对比搜索的译码速度优于或可与其他广泛应用的译码方法相媲美。

文本生成


首先在开放式文本生成任务(open-ended document generation)上评价研究团队所提出的新方法。

模型和基线 本文提出的方法与模型结构无关,因此可以应用于任何生成模型。在这项实验中,他们在具有代表性的 GPT-2 模型上评估了所提出的方法。

具体来说,研究团队在评估基准(详细如下)上使用提出的目标 LSimCTG 对 GPT-2 进行了调优,并使用不同的解码方法生成连续文本。使用基础模型(117 M 参数)进行实验,该模型由 12 个 Transformer 层和 12 个 attention head 组成,将本方法与两个强基线方法进行比较:

(1)GPT-2 在标准 MLE 损失函数上微调;(2)利用非似然目标函数微调。研究团队的实现基于 Huggingface 库(Wolf 等人,2019)。

基准数据集 研究团队在 Wikitext-103 数据集(Merity 等人, 2017)上进行了实验,该数据集包含了一个包含超过 1 亿单词。Wikitext-103 是一个文档级数据集,已被广泛用于大规模语言建模的评估。

评价指标


研究团队从两个方面进行评价:

(1)语言建模质量,衡量模型的内在质量;

(2)生成质量,用来衡量生成文本的质量。

l 语言建模质量

n 困惑度

n 预测准确率

n 预测重复率

l 文本生成质量

n 生成重复度

n 多样性

nMAUVE(一种度量机器生成文本与人类生成文本间相近程度的指标;MAUVE 越高,机器文本越像人类文本)

n 语义连贯性

n 生成文本的困惑度

实验结果


ce9ed3cd9fb3b68f561071ce32d475be.png

表1. 多种方法在 Wikitext-103 数据集上的测试结果

表1 展示了 Wikitext-103 数据集上的实验结果。

语言建模质量 从结果来看,SimCTG 获得了最好的困惑度和下一个 token 预测准确率。因为其使用了更有区分度的分布式表示,SimCTG 在进行下一个 token 预测时更不容易混淆,从而提高了模型性能。在 rep 和 wrep 度量上,非似然模型产生了最好的结果,但代价是复杂性和下一个 token 预测准确性方面的性能下降。

文本生成质量 


首先,在 rep-n 和多样性指标上,SimCTG+对比搜索获得了最好的性能,表明它最好地解决了模型退化问题。其次,MAUVE 分数表明 SimCTG+对比搜索生成的文本在令牌分布方面与人类编写的文本最接近。第三,在所有方法中,SimCTG+对比搜索是唯一一种一致性得分在 0.6 以上的方法,表明该方法生成的文本质量高,且相对于前缀而言语义一致。最后,gen-ppl 度量也验证了 SimCTG+对比搜索的优越性,因为与其他方法相比,它获得了明显更好的生成困惑度。

此外,从 MLE 和 Unlikelihood 基线的结果来看,对比搜索仍然比贪婪搜索和 beam 搜索带来了额外的性能提升。然而,对比训练的性能提高仍然滞后于 SimCTG,这说明了对比训练的必要性。一个可能的原因是,没有对比损失 LCL,MLE 或 unlikelihood 训练出来的 token 表示不具备充分的可区分性。因此,不同候选对象的退化惩罚不易区分,输出的选择受模型置信度的影响,使得对比搜索的有效性降低。

人工评价


研究团队还通过内部评分平台,在高英语水平学生的帮助下进行了人工评价。所有生成文本和真实的后文放在一起随机打乱,然后由 5 个人类评分者评估,最终产生总共 9000 个标注样本。评估遵循李克特 5 点量表(1、2、3、4 或 5),从以下三个方面进行打分:

  • 连贯性:生成的文本是否与前文在语义上保持一致

  • 流畅性:生成的文本是否易读

  • 信息量:生成的文本是否多样,是否包含有趣的内容

7532fb6a59a5fcb1769281959e5ed257.png

表2. 文本生成的人工评价

表2 给出了人工评价结果,其中第一行显说明了人类评价能够很好的发现参考文本。首先,研究团队发现直接使用 MLE 或 Unlikelihood 模型进行对比搜索并不能得到满意的结果。这是由于它们表示空间的各向异性。第二,Unlikelihood 模型的一致性得分明显低于 MLE 和 SimCTG,表明其产生的结果最不可能,这从表1 的 generation perplexity(gen-ppl)中也可以看出。此外,SimCTG +对比搜索结果在一致性和流畅性方面明显优于不同模型的核抽样。

最后,SimCTG-large +对比搜索获得了全面的最佳性能,甚至在流畅度指标上与人类书写的文本表现相当。这揭示了该方法对于大型模型的通用性,未来的工作可以集中于将其扩展到包含超过数十亿参数的模型,如 GPT-3。

开放式对话系统


为了测试这个方法在不同任务和语言中的通用性,本文还在开放域对话生成任务中评估了研方法。在这个任务中,给定一个多回合对话上下文(每个回合都是一个用户的话语),要求模型生成一个语义上与上下文一致的适当的响应。在这里,对话语境被视为前文。

基线模型和基准测试集 研究在中文和英文两种语言的两个基准数据集上进行了实验。中国数据集方面,使用 LCCC 数据集(Wang 等人,2020)。英语数据集方面,则使用 DailyDialog 数据集。

研究团队比较了通过 SimCTG 和 MLE 微调的 GPT-2 模型。具体来说,对于中文基准数据集,使用了一个公开可用的中文 GPT-2(Zhao 等人,2019)。在训练期间,使用 128 作为 batch size,并将训练样本截断为最大长度 256 个 token。在 LCCC 数据集上,对模型进行 40k 步的训练(即微调)。对于 DailyDialog 数据集,由于其数据集较小,将模型训练 5k 步。优化方面,使用 Adam 优化器和 2e-5 的学习率。

模型评价 研究团队依靠人工评价来衡量模型的性能,从测试集中随机选取了 200 个对话上下文,请 5 位标注者从三个维度:连贯性、流畅性和(3)信息量,分别进行打分。分数遵循李克特 5 分量表(1、2、3、4 或 5)。

a0e2204bc13482d3e678dd8555d27b6e.png

表3. 开放式对话的人工评价

表3 展示了开放式对话的人工评价结果。在这两个数据集上, SimCTG +对比搜索在各种指标上显著优于其他方法,这表明该方法可推广到不同的语言和任务上。值得强调的是,在 LCCC 基准测试中,SimCTG +对比搜索在流畅度指标上的表现出人意料地优于人类,而在连贯性和信息量指标上的表现也相当不错。

并且,即使不进行对比训练,MLE 模型在使用对比搜索时的性能也显著提高。这是由于汉语语言模型的固有属性,MLE 目标已经可以产生一个表现出高度各向同性的表示空间,使得对比搜索可以直接应用。这一发现尤其具有吸引力,因为它揭示了对比搜索在现成语言模型(即不进行对比训练)上的潜在适用性,适用于某些语言,如汉语。

总结


这项研究中,作者们证明了神经语言模型的退化源于它们的 token 表示的各向异性性质,并提出了一种新的方法——SimCTG,用于训练语言模型,使其获得一个各向同性且有区分度的表示空间。此外,研究还介绍了一种新的解码方法——对比搜索,该方法与本文所提出的 SimCTG 目标一致。基于在两种语言的三个基准测试集上进行的广泛实验和分析,自动和人工评价都表明了,本文所提的方法大大削弱了模型退化程度,显著优于当前最先进的文本生成方法。

318f8838837d82cca5272e1c3e6bfb6d.gif

技术

用Python写了个使命召唤外挂

资讯

俄罗斯 Android 系统受限

技术

面向小白超全Python可视化教程

技术

一行Python代码能干嘛?来看!

627adc10925be7ca1a1246fa14d7c3ca.png

分享

76b6b5229872ab15ef57a1624b7644f5.png

点收藏

0a9f2a58c991fb18902164057e4dbee6.png

点点赞

e4e0cea6159b5c28e93caefbe3f6280d.png

点在看

相关文章:

(Question)CSS中position的绝对定位问题

RT,绝对定位相对于定位的元素存在是哪里? https://yunpan.cn/crjSMTiak2srZ 访问密码 1570转载于:https://www.cnblogs.com/LiuChunfu/p/5139958.html

BZOJ 4817: [Sdoi2017]树点涂色(LCT+树剖+线段树)

题目描述 Bob有一棵 nn 个点的有根树,其中1号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。 Bob可能会进行这几种操作&am…

ls -l |wc -l命令多统计一行

#ls -l |wc -l注意:总用量也占用1行,所以统计出来的是14而不是13其他网友提醒 #ls -l |wc -l 就统计实际的行,放大就看出效果1和l不同

驱动数字经济加速,摩尔线程发布全新元计算架构MUSA和GPU产品

2022年3月30日,北京——摩尔线程今天举行主题为“元动力 创无限”的春季发布会。摩尔线程创始人兼CEO张建中解读了“元计算”这一产业趋势,并发布全新架构及系列重磅新品,包括:MUSA(Moore Threads Unified System Arch…

HDU 4869 Turn the pokers(思维+组合公式+高速幂)

Turn the pokers 大意:给出n次操作,给出m个扑克。然后给出n个操作的个数a[i],每一个a[i]代表能够翻的扑克的个数,求最后可能出现的扑克的组合情况。Hint Sample Input: 3 3 3 2 3 For the this example: 0 express fac…

马云打响本地生活消费攻坚战,饿了么获手淘一级入口,美团危险了

8月2日,细心的网友可以发现,手机淘宝App首页已上线“饿了么外卖”,饿了么成为手机淘宝首页的10个默认入口之一。这也就意味着以后手机淘宝用户可以通过淘宝首页新入口进入外卖服务,在应用内直接完成由饿了么提供的订餐外卖服务。 …

Linux文件,文件描述符以及dup()和dup2()

一.Linux中文件 可以分为4种:普通文件、目录文件、链接文件和设备文件。1、普通文件是用户日常使用最多的文件,包括文本文件、shell脚本、二进制的可执行和各种类型的数据。ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- &#xff…

摩尔线程推出首款数据中心级全栈功能GPU:MTT S2000

2022年3月30日,北京——摩尔线程正式推出首款基于其先进架构MUSA统一系统架构(Moore Threads Unified System Architecture)打造的数据中心级多功能GPU产品MTT S2000。摩尔线程MTT S2000基于其第一代MUSA架构GPU芯片苏堤研发制成,…

jquery 获取 outerHtml 包含当前节点本身的代码

在开发过程中,jQuery.html() 是获取当前节点下的html代码,并不包含当前节点本身的代码,然后我们有时候确需要,找遍jQuery api文档也没有任何方法可以拿到。 看到有的人通过parent().html(),如果当前元素没有兄弟元素还…

修改CentOS yum源

解决在CentOS yum源下载慢的办法最近在虚拟机下面安装了个CentOS 5.5,使用yum更新时发现下载速度异常慢。可以修改yum的配置文件,把其镜像指向国内的服务器即可。 方案一: # cd /etc/yum.repos.d/ # mv CentOS-Base.repo CentOS-Base.repo.b…

带monkey的测流量!

为什么80%的码农都做不了架构师?>>> //public static void flow(){ //String command1 "adb shell monkey -p com.netease.newsreader.activity -s 500 -v 2000"; //String command2 "adb shell ps"; //String str"com.nete…

实现AI技术自立自强,国产深度学习框架面临三大难题

作为推动AI应用大规模落地的关键力量,深度学习框架的重要性日益凸显。它不仅关系国计民生的行业和领域广泛的应用,同样也对信息系统的科技安全有着决定性的意义。 “深度学习框架在人工智能技术体系中,处于贯通上下的腰部位置,它下…

关于Android H5混合开发遇到的问题

2019独角兽企业重金招聘Python工程师标准>>> 添加WebChromeClient,复写onJsAlert、onJsConfirm、onJsPrompt方法后,弹框异常退出问题 项目经理说,Android没有处理弹框,点击按钮没有反应,iOS就可以。于是就复…

手动配置lnmp环境

做php开发的,想要进一步提升自己,手动搭建开发环境,我想是必须经历的一个坎。虽然说有很多第三方集成环境可供使用,但我想说的是在你没有自己搭建过一次环境的时候,你没有太多的资本去“偷懒”。虽然我自己也是个菜鸟&…

负载均衡,会话保持,session同步

一,什么负载均衡一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西。但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量。在这种…

终于“打造”出了一个可以随时随地编程的工具

作者 | 老表来源丨简说Python分享概要 系统:阿里云ECS共享型n4服务器 1核2g 存储50g(双十一便宜买的,180元/3年)环境:自带python3.6.8 方便演示,直接使用它开始动手动脑 首先我们需要连接上服务器&#xff…

JVM堆 栈 方法区详解

一、栈 每当启用一个线程时,JVM就为他分配一个JAVA栈,栈是以帧为单位保存当前线程的运行状态 栈是由栈帧组成,每当线程调用一个java方法时,JVM就会在该线程对应的栈中压入一个帧 只有在调用一个方法时,才为当前栈分配一…

ECSHOP学习笔记

帮助 http://help.ecshop.com/index.phpECSHOP各文件夹功能说明 1、根目录:前台程序文件2、admin:后台程序文件夹 --根目录:后台程序文件 *.php文件 --help\zh_cn:各功能的帮助文件 *.xml文件 --images:后台页面…

Redis主从复制配置

环境描述Redis Master:192.168.1.100 6379(Ubuntu系统)Redis Slave1:192.168.1.101 6380(Ubuntu系统)Redis Slave2:192.168.1.102 6381(Ubuntu系统) 安装redis分别在192.168.1.100、192.168.1.101、192.168.1.102三台机器上安装redis&#xf…

利用 Python 打造一个语音合成系统

作者 | thedaydreamer来源丨CSDN博客背景一直对语音合成系统比较感兴趣,总想能给自己合成一点内容,比如说合成小说,把我下载的电子书播报给我听等等。语音合成系统其实就是一个基于语音合成的工具,但是这个东西由于很多厂家都提供…

干货:排名前 16 的 Java 工具类!

2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名&#xf…

使用ecshop电子商务系统的100个小问题

总结100条关于操作ecshop电子商务系统的小问题。1:如何修改网站"欢迎光临本店"回答:languages\zh_cn\common.php文件中, $_LANG[welcome] 欢迎光临本店;将他修改成你需要的字样。2:如何修改首页"热门搜索关键字"回答:后台->系统设置->网…

MyCAT常用分片规则之分片枚举

MyCAT支持多种分片规则,下面测试的这种是分片枚举。适用场景,列值的个数是固定的,譬如省份,月份等。 在这里,需定义三个值,规则均是在rule.xml中定义。 1. tableRule 2. function 3. mapFile 首先&#xff…

手把手带你打造一款 签名设计 的GUI图形界面!

作者 | 黄伟呢来源丨数据分析与统计学之美1.概述 整体布局呢我们已经搭建起来,唯一没有实现的一个步骤就是,用户每输入一个名字,就会将个性签名一并显示在这个窗口界面中,今天我就带着大家一起完成这个需求。今天的文章可以看成是…

跨域资源共享 CORS

简介 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 CORS需要浏览器和服务器同时支持。…

SMARTY核心

http://www.smarty.net/http://smarty.php.net/manual/en/1.配置define("ROOTPATH",dirname(__FILE__)."/../");require_once("smarty/Smarty.class.php");/*** Smarty Template Class Initializtion*/if( constant( "ENABLED_TPL" ) …

5G+XR:让视频增强技术在工业领域大有所为

据工业和信息化部统计显示,目前中国累计建成并开通5G基站142.5万个,基站总数今年有望突破200万个。自5G正式商用以来,凭借其高带宽、广连接、低延时等优势,5G应用的实践逐渐从最初的单一化业务触及至更广泛的行业应用场景中。其中…

IE的安全性设定增加“我的电脑”的安全性设定

HKEY_CURRE-NT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones\0,在右边窗口中找到DWORD值“Flags”,默认键值为十六进制的21(十进制33),双击“Flags”,在弹出的对话框中将它的键值改为“1”即可&#x…

F# 4.5提供Spans、Match!等特性

F# 4.5预览版现已发布,其中提供了一系列新特性,包括对.NET Core 2.1的新原生类型Span\u0026lt;T\u0026gt;的支持、新关键字Match!等。\\类型Span意在实现底层代码指针操作的安全性和可预测性,这可使得很多情况下不必再分配内存,进…

ecshop transport.js/run() error:undefined

在使用ECshop的AJAX(即:transport.js) IE有时候会出现:ReferenceError: process_request is not defined,FF则出现:transport.js/run() error:undefined,其实这完全和transport.js无关。那么问题出在哪里呢&#xff1f…