写点什么

7 个月后,GPT-2 的“假新闻威胁论”被证明是虚惊一场

  • 2019-09-11
  • 本文字数:2909 字

    阅读完需:约 10 分钟

7个月后,GPT-2的“假新闻威胁论”被证明是虚惊一场

今年年初,OpenAI 推出了当时号称“最强 NLP 模型”的 GPT-2,该模型可以生成连贯的文本段落,刷新了 7 大数据集基准,并且能在未经预训练的情况下,完成阅读理解、问答、机器翻译等多项不同的语言建模任务。

然而,由于 OpenAI 没有将之开源的计划,很快被技术社区声讨,因为这违背了 OpenAI 作为一个开放的、非盈利技术组织的初衷。而 OpenAI 方面给出的理由是:“该模型或许会被一些人滥用,制造假新闻等不实消息,从而引发更加恶劣的影响。”


随着讨伐声越来越高,OpenAI 不得不松口,决定分批次放出该模型的开源代码,这才平息了这场风波。有网友在认真研究并使用了 GPT-2 之后发现:OpenAI 紧张过度了,因为这个模型并没有想象中那么危险


在我看来,现在的情况已经相对明确:GPT-2 并不像 OpenAI 想象的那么危险。


其 774 M 版本已经出现了一段时间,虽然其中的参数只有完整版的一半,但我认为两者之间的差别还不至于被称为质变。毕竟,OpenAI 的分阶段发布计划已经给我们带来了两次增量提升——从 124 M 到 355 M,再到如今的 774 M。每次加倍后的差异都只能用“微妙”来形容,而且体现出的优点与缺陷也基本没有变化。


今年以来,我花了不少时间鼓捣这些模型,对模型进行微调也成了一种新的爱好。具体来讲我尝试:


  • 针对各种不同的文本进行微调。

  • 针对多种不同文本的混合体进行微调(没啥大意思,模型会自主决定从任何给定的样本当中提取哪种文本书写风格,然后一直坚持下去)。

  • 尝试利用不同的优化器与学习速率进行微调。

  • 尝试使用自定义编码(常用标签->单一非英文字符),以便在对网页进行微调时将更多文本纳入容器当中。

  • 通过重复将输出结果作为上下文输入(即提示)尝试生成更长的文本。

  • 将所有采样参数(包括温度、top-k/top-p/皆不)与以上任意采样参数进行比较。

  • 读取大量采样输出,同时监控微调工作,从而为 @uploadedyudkowsky 等提供素材。


到目前为止,我觉得自己已经对 GPT-2 采样文本的整体质量与特性有了比较明确的感受。总体来讲,这套模型擅长各种有趣的生成方向,但其中最不擅长的,反而是人们原本担心的生成虚假信息或者其它不良内容


它最擅长的是小型文本生成——其成果确实令人感到不安,特别是在语言风格方面,完全符合我对于逐字、逐句、逐段内容设定的“良好写作”要求。但是,它在较大规模的行文结构上表现较差,比如很难长期保持统一的主题或者(特别是)利用多个句子中的子句进行结构化论证。


直观来看:GPT-2 只能从文本当中学习,因此在需要引入其它外部世界模式的领域(因为我们在书写文字时,总会或多或少地引入自己对于真实世界的理解),它与人类的差距最大。但在风格倾向纯粹体现在语言之内,特别是书面语言之内时,GPT-2 的表现则与人较为相似。


再来讲讲不那么直观的结论。GPT-2 生成的样本中往往缺少某些看似非常简单且可预测的真实文本特性。举例来说,当生成类似小说的文本时,它往往无法跟踪特定场景中包含哪些角色(例如,角色 A 曾在当前场景中说话,但当角色 B 提到角色 A 时,却表现得好像后者并不在场景之内)。在非小说类文本当中,GPT-2 则倾向于通过重复一组关键短语来维持“主题”,但由于未能注意到连续性因素,其往往会对该主题做出截然不同甚至相互矛盾的断言。


我认为其中一部分问题源自 GPT-2 在初期训练过程中采取的具体方法——换言之,预测真实文本与生成伪造文本并不完全是同一回事。其训练目标只关注对训练文本做出稳定的用词分布判断,但却并不重视以稳定的良好方式判断自己预测出的用词分布结果。(请注意,其预测出的用词分布与真实文本也并不相同。)


事实上,将预测分布中的样本馈送回 GPT-2 进行进一步预测,即会产生令人印象深刻的“生成文本”——这更像是个有趣的事故,而非真正的优化目标。如果要进一步提升它的伪造能力,可能需要更明智地选择抽样方法,而完全随机的抽样仍有可能带来垃圾一般不知所云的输出内容。


即使采用 top=p 等良好的采样方法,GPT-2 的采样稳定性同样偏弱;当我们试图通过重复“自我提示”来生成比上下文窗口更长的文本时,我注意到一种现象:文本质量通常会在某一点之后立即呈现出断崖式下降。这些结果完全有违语言习惯,而且在记录中充斥着大量异常的段落。我的假设是,这就像是识别熊猫/长臂猿这类对抗性实例:样本具有 GPT-2 能够识别的高密度特征,而这些特征最终会在一系列线性子空间中朝着相同的方向推进(例如在 tramsformer 当中采用非饱和激活,即 gelu),并导致模型偏离训练歧管。


为了再次收敛,模型确实能够在某些特定的短语、句子甚至段落当中偶尔带来不错的生成结果,但其样本在仍然很难在短篇或者较长篇幅的范围内保证全局一致性,且几乎不可能将其中的表述与现实世界对应起来。(这种状况再配合较为出色的写作能力,就构成了一种奇妙的「内涵笑话」风格:它好像是在讲一些非常隐晦但又有趣的小故事……只有特别聪明的人才能完全看懂。)


我的第一反应是,这套模型应该无法被用于生成伪造信息。让它“讨论某事”或者“编造某事”其实非常困难,相比之下让它采用某些特定风格或者类型的写法倒是比较容易。


实际情况比这还要微妙。这套模型非常擅长编写看起来类似于新闻报道的故事,大概是因为它在训练过程中接触过大量素材吧;在 OpenAI 发布的大量无条件样本中,类似的新闻文本占主导比例。因此,假设我们能够找到一种有效的方法将虚假事件馈送至原始模型当中,它也许真的能够利用特定主题捏造出令人信服的假新闻。


这正是“GROVER”创造者的目标,他们整理出了这样一套包含大量自定义素材的训练语料库。简单来霁,他们训练出一款 transformer,能够通过结构化方式理解新闻标题与故事内容之间的关系。在此之后,他们对正文进行采样,并循环回来以生成足以替换初始标题的新标题。


基本上,他们的成果允许我们从 Breitbart 或者 Infowars 等网站上提取标题,并以同样的风格编写出类似于《纽约时报》报道的“真实新闻”,最后再循环回来用“真实新闻”风格重写标题。据我估计,MTurkers 随后会对结果文本进行评估,从而确保其比原始文本更有说服力。


这确实是种可怕的现象,而且模型确实有能力操纵新闻主题。在简单的文本范畴之内,这样的操纵确实很难被人们发觉。另一方面……现在是 2019 年,特朗普担任美国总统,在这样一个疯狂的时代,Breitbart 风格的假新闻跟所谓的真新闻还有什么区别吗?有些人甚至认为接种疫苗对健康有害,这样的背景下,文风能不能跟《纽约时报》对得上真的重要吗?


这种技术确实能够给恶意行为者带来帮助,但这种帮助似乎没多大必要。很多人甚至习惯于单纯根据社交媒体上的文章标题进行转发,而根本就懒得点开看一眼;相比之下,真正有严谨精神的人们则更关注内容的真实来源,他们也不可能简单被文风这种因素骗倒。


最后,我们还得承认一点,恶意人士并不是科研工作者,他们根本就不可能下大力气研究模型训练。GROVER 是一套由学者创建,供其他学者进行威胁建模实践的方案。因此,在 GPT-2 真正转化一键式生成工具之前,真正的伪造者恐怕根本就没兴趣加以探究。至少,我是从来没有听说过那么有科研精神的骗子(而且相信我,我试过很多次,就算是在最擅长的领域 GPT-2 的效果也绝没那么夸张)。


2019-09-11 08:003138

评论 1 条评论

发布
用户头像
首先非常感谢您的分享,但是这种还是应该给出实际的例子比较直观(我之前也试过四百多那个模型,一言难尽)
2019-09-11 09:25
回复
没有更多了
发现更多内容

中国首批区块链订单融资缘何落地雄安?

CECBC

元宇宙是人类文明不可避免的一次内卷

CECBC

架构营模块五作业

GTiger

Spring AOP内功修炼

4ye

Java spring 程序员 后端 签约计划第二季

如何用JavaScript实现2+2=5?

汪子熙

JavaScript 大前端 语音识别 语音合成 11月日更

微信程序开发系列教程(一)开发环境搭建

汪子熙

JavaScript node.js 微信 11月日更 微信开发

29 K8S之ReplicaSet控制器

穿过生命散发芬芳

k8s 11月日更

【死磕Java并发】-----J.U.C之深入分析CAS

chenssy

11月日更 死磕 Java 死磕 Java 并发

从1天到10分钟的超越,华为云DRS在背后做了这些

华为云开发者联盟

数据库 数据 报表 华为云DRS 在线交易

GitHub上星标39.9k+的开源类库,忍不住分享下

沉默王二

Java

Python量化数据仓库搭建系列3:数据落库代码封装

恒生LIGHT云社区

量化投资 量化交易 量化

架构训练营 - 模块五

Geek_9de3de

架构实战营

使用HTML+CSS制作逼真的红色开关

海拥(haiyong.site)

CSS html 大前端 Demo 签约计划第二季

面试官:final、finally、finalize 有什么区别?

王磊

java面试

激发数字新活力 打造发展新优势

CECBC

spring-boot-devtools 快速重启的秘密

4ye

Java spring 程序员 后端 签约计划第二季

[Pulsar] 消息的消费

Zike Yang

Apache Pulsar 11月日更

在线文本并集计算工具

入门小站

工具

面试官:int和Integer有什么区别?为什么要有包装类?

王磊

Rust 元宇宙 7—— 异步和消息

Miracle

rust 异步 元宇宙

AOP 插件就这?上手不用两分钟!!

4ye

Java spring 程序员 后端 签约计划第二季

面试官:说一下final关键字和final的4种用法?

王磊

架构训练营 - 模块六

Geek_9de3de

架构实战营

12.04 Serverless Meetup 深圳站 | Call 你来参加

阿里巴巴云原生

阿里云 Serverless 云原生 活动

使用JDK自带的VisualVM进行Java程序的性能分析

汪子熙

Java jdk 性能 性能调试 11月日更

一文读懂敏捷开发的发布策略

华为云开发者联盟

DevOps 运维 敏捷 开发 发布策略

DDD领域驱动设计落地实践系列:战略设计和战术设计

慕枫技术笔记

Java 后端 签约计划第二季

Python Qt GUI设计:QClipboard剪贴数据类(基础篇—19)

不脱发的程序猿

Python PyQt GUI设计 QClipboard 剪贴板

「Oracle」Oracle数据库基本概念

恒生LIGHT云社区

数据库 oracle

使用ES6编写一个超简单的搜索算法

DisonTangor

JavaScript 大前端

OpenELB 进入 CNCF Sandbox,让私有化环境对外暴露服务更简单

青云技术社区

云计算 云原生

7个月后,GPT-2的“假新闻威胁论”被证明是虚惊一场_AICon_nostalgebraist_InfoQ精选文章