作者|ChintanTrivedi译者|刘畅责编|Jane出品|AI科技大本营(id:rgznai100)前言《权力的游戏》结局烂尾?《权力的游戏》第八季崩盘,在一片“烂尾结局”的评价声中落下了帷幕。
采访身边很多剧迷的观后感,一位同事给的评价只有一句话:“书是一本好书”。
近日,国外,Medium平台一位作者也分享了他的感受:“权力的游戏”第8季的故事情节,因为其匆忙而不尽如人意的结局,让数百万名粉丝(包括作者)十分失望。
大部分人都在呼吁重写该剧的最后一季,而其他人为了让自己舒心,则想出他们自己版本的结局。
大家都在等待GRRM完成他的书,希望他能塑造一个更令人难以置信的角色,但这可能需要很多年。
作为一名技术人,任何问题都会忍不住想一下:技术能不能搞一下?如果让AI学习GRRM的写作风格,然后写一个结局如何?AI能写得更好吗?随后,作者便用年初OpenAI提出的GPT-2文本生成模型实践操作了一波。
模型学习的是《冰与火之歌》(ASongofIceandFire)原著,输出三大反派人物(theNightKing,CerseiLannisterandDaenerysTargaryen)的结局。
接下来的内容,我们会先简单一下GPT-2,详细的介绍可以参考我们以前给大家推送的文章;然后介绍一下作者训练模型的方法;最后根据模型生成结果进行总结与反思。
文章没有涉及非常详细的技术细节,而是从方法上帮助大家整体把握,后续无论是增加数据集,还是结合自己需求做调整,思路都可以借鉴,对技术细节没有进行详细说明。
GPT-2(生成预训练的迁移模型)在现有的AI语言模型中,GPT-2是一种达到了SOTA效果的文本生成模型。
他能生成类似人类语言的连贯性语句,并且可以长期关注某个主题。
相比于其他语言模型,GPT-2两个较大改进在于:大量数据:研究人员抓取了800万个网页,制作了一个40GB的文本语料库,用于进行无监督的训练。
它涵盖了各种各样的主题,这就是为什么预先训练的模型非常适合迁移到特定领域,比如这次我们用到的原著GoT。
大量计算:Transformer模型结构中使用了15亿个参数。
不过,出于安全考虑,他们发布了仅包含3.45亿个参数的较小版本。
这次的模型也是使用这个版本。
迁移模型GPT-2使用的是Transformer网络架构,而不是序列建模传统模型RNN、LSTM等网络。
不同之处在于Transformer使用基于注意力机制的解码/编码器,而不是拥有’memory’门和时间步长的循环单元。
编码器利用字节对和位置嵌入处理输入,其中位置嵌入描述的是输入句子中“嵌入的单词”和“在何处嵌入”。
相同的编码器将字节和位置嵌入转换为矢量编码,然后将该矢量编码输入解码器,解码器的任务是将编码转换为目标文本序列。
该输出和来自前一步骤的编码被馈送到下一个编码-解码步骤,并且重复多次,以产生更好的文本序列。
下面的链接文章详细的解释了这个模型架构:https://blog.floydhub.com/the-transformer-in-pytorch/而GPT-2就可以经过训练,预测给定输入句子中的下一个单词。
如果模型可以相当准确地预测下一个单词,那么模型可能具备理解输入单词上下文含义的能力。
如果不理解文本,语言模型只能预测符合语法规则的单词,而生成的文本可能不会符合语义规则。
不同于机器翻译任务中的seq2seq模型,GPT-2仅使用预训练模型Transformer中的解码器来生成后续文本,在文本生成期间并不需要编码器。
训练模型数据:作者从《冰与火之歌》的5本书中摘录,组合文本数据用于训练。
模型:预训练GPT-2模型包含345M参数。
时间:该模型在GoogleColab的K80GPU上训练了大约12个小时。
在训练过程中,作者意外发现,预训练模型很擅长撰写《权利的游戏》里的角色特征,可能与在初始训练期已经接触过这些内容有关。
想让模型撰写的内容更贴近GRRM的风格,需要继续利用GoT数据集。
结果与分析先在原剧结局中,找出一些令大家感到失望的情节,然后再尝试用训练好的GPT-2模型生成结果,详细结果大家可以看下面的视频介绍,后面会对一些文本输出做部分介绍。
以下是视频格式的输出,后面是相同的文本输出。
https://youtu.be/_vSov4sldsQ下面分析一下选取的3个场景失望场景1:重写NightKing虎头蛇尾的结局根据GPT-2,Hodor还活着并赶来救营Bran,这真是一个转折点!或者可能是Hodor的灵魂进入了Bran的身体。
不过之后,也不知道这个模型想说些什么。
。
。
Lightbringer是杀死NightKing的剑。
如果NightKing的冰剑原来是Lightbringer并且最终会杀死他,那会有多酷?!就算编剧忘了,不过GPT-2还记得关于AzorAhai的预言,还围绕Lightbringer做了不少展开。
这里有个地方很有意思,不是因为故事写得精彩,而是因为模型居然知道thedragon实际上是“Other”(也就是书中的WhiteWalker)。
将所有这些细节正确地放在一个段落中,真的太奇妙了。
神奇的是,这个模型已经完全了解有关人物的这些细节!失望场景2:CerseiLannister在没有任何计划或适当的战斗的情况下倒下嗯,好吧,这个生成的剧本完全是垃圾。
但作者还是保留了它,然后再试了一次!这次稍微好一些!虽然模型输出的某些细节错了,特别是关于MadKing,但”Jaime试图在那一刻给予Cersei力量的想法“还挺不错的。
也许在这个时候使用某种野路子会给她的故事情节带来一些正义感。
两个疯狂的女王,激烈战斗,毁坏城市的剩余部分。
这也不失为一个更好的结局,表明为什么IronThrone的战争是不好的。
失望场景3:Daenerys急速转弯的结局总是吃喝的好时光?我听说King’sLanding有一家很好的咖啡店,Dany可以尝试(如果它还没有被烧掉)这段真是挺垃圾的,让我们再试一次。
这段也没有多大意义。
两次下来,似乎模型坚持Dany想要将King’sLanding的人们从暴君手中解放出来。
总结虽然尝试为这些故事情节生成更多的样本,但没有哪个能在故事背景下讲得通。
尽管生成的故事文本不够好,不过也能看出来模型清晰地描述了角色特征和技能。
,并且在模型输出结果中也体现了彼此之间的关联。
此外,作者认为OpenAI提出的GPT-2研究工作,也体现了近来NLP领域取得的一些进展。
同时,我们和作者一样,都很好奇在最大的GPT-2模型上训练会取得怎样的结果?毕竟模型训练数据也不是十分充分,感兴趣的小伙伴们可以把原著所有的文本数据加入到最大的GPT-2模型训练中,看看是有更多惊喜还是惊吓?而无论是编剧的结局,还是AI改写的结局,其实大家心目中的PerfectEnding还是要等GRRM赶快写完他的书。
(*本文为AI科技大本营编译文章,转载请微信联系1092722531)