阅读更多

0顶
0踩

行业应用

转载新闻 好玩的文本生成

2016-12-27 14:22 by 副主编 jihong10102006 评论(0) 有10131人浏览

文本生成是比较学术的说法,通常在媒体上见到的“机器人写作”、“人工智能写作”、“自动对话生成”、“机器人写古诗”等,都属于文本生成的范畴。

二零一六年里,关于文本生成有许多的新闻事件,引起了学术界以外对这一话题的广泛关注。
  •     2016年3月3日,MIT CSAIL【1】报道了,MIT计算机科学与人工智能实验室的一位博士后开发了一款推特机器人,叫DeepDrumpf,它可以模仿当时的美国总统候选人Donald Trump来发文。
  •     2016年3月22日,日本共同社报道,由人工智能创作的小说作品《机器人写小说的那一天》入围了第三届星新一文学奖的初审。这一奖项以被誉为“日本微型小说之父”的科幻作家星新一命名。提交小说的是“任性的人工智能之我是作家”(简称“我是作家”)团队【2】。
  •     2016年5月,美国多家媒体【3】【4】报道,谷歌的人工智能项目在学习了上千本浪漫小说之后写出后现代风格的诗歌。
基于人工智能的文本生成真的已经达到媒体宣传的水平了吗?这些事件背后是怎样的人工智能技术?关于机器人写小说的工作,我们会在另一篇文章《会有那么一天,机器人可以写小说吗?》里进行深入的讨论,他们的工作更多的是基于模板的生成。在这篇文章里,我们主要想通过三篇文章介绍另一大类方法,即基于统计的文本生成。

第一篇  令人吃惊的Char-RNN
关于基于深度学习的文本生成,最入门级的读物包括Andrej Karpathy这篇博客【5】。他使用例子生动讲解了Char-RNN(Character based Recurrent Neural Network)如何用于从文本数据集里学习,然后自动生成像模像样的文本。

图一直观展示了Char-RNN的原理。以要让模型学习写出“hello”为例,Char-RNN的输入输出层都是以字符为单位。输入“h”,应该输出“e”;输入“e”,则应该输出后续的“l”。输入层我们可以用只有一个元素为1的向量来编码不同的字符,例如,h被编码为“1000”、“e”被编码为“0100”,而“l”被编码为“0010”。使用RNN的学习目标是,可以让生成的下一个字符尽量与训练样本里的目标输出一致。在图一的例子中,根据前两个字符产生的状态和第三个输入“l”预测出的下一个字符的向量为<0.1, 0.5, 1.9, -1.1>,最大的一维是第三维,对应的字符则为“0010”,正好是“l”。这就是一个正确的预测。但从第一个“h”得到的输出向量是第四维最大,对应的并不是“e”,这样就产生代价。学习的过程就是不断降低这个代价。学习到的模型,对任何输入字符可以很好地不断预测下一个字符,如此一来就能生成句子或段落。

Andrej Karpathy还共享了代码【6】,感兴趣的同学不妨下载来试试,效果会让你震惊。Andrej Karpathy在底层使用的RNN的具体实现是LSTM(Long-Short Term Memory),想了解LSTM可以阅读【7】,讲得再清楚不过。

研究人员用Char-RNN做了很多有趣的尝试,例如,用莎士比亚的作品来做训练,模型就能生成出类似莎士比亚的句子;利用金庸的小说来做训练,模型就能生成武侠小说式的句子;利用汪峰的歌词做训练,模型也能生成类似歌词的句子来。

在本文一开始提到的【1】,MIT计算机科学与人工智能实验室的博士后Bradley Hayes也正是利用类似的方法开发了一款模仿候任美国总统Donald Trump的推特机器人,叫DeepDrumpf。例如,图二中,这个机器人说,“我就是伊斯兰国不需要的。”

据作者介绍,他受到一篇模拟莎士比亚的论文启发,以Donald Trump的演讲和辩论(时常大约几个小时)的字幕作为训练语料,使用深度神经网络学习去训练Trump的模型。他也声称,因为有一篇文章调侃Trump的发言只有小学四年级的水平,因而想到用Trump的语料可能是最容易控制的。

这是一个有趣的应用,记者评论称这个机器人也并不是总能写出好的句子,但至少部分是通顺的。其实,风格并不是很难学到,只要使用的训练语料来自同一个人,而这个人的写作或者发言具有辨识度高的特点。

第二篇  深度学习生成对话
推荐阅读的第二篇文章是诺亚方舟实验室的尚利峰、吕正东和李航在2015年ACL大会上发表的“Neural Responding Machine for Short-Text Conversation” 【9】。大家也许听说过微软小冰,它因为开创性的主要做闲聊(即以娱乐为目的的聊天)式对话,被哈尔滨工业大学的刘挺教授誉为是第二波人机对话的浪潮的代表【8】。小冰的出现也影响到了学术界。除了原来做知识性的问答,一些研究也开始关注闲聊,让机器人和人类搭话,这方面诺亚方舟实验室发表了一系列有影响力的文章。今天介绍的这篇文章在Arxiv.org上发布短短一年时间,已经有67次的引用。

【9】这篇文章尝试用encoder-decoder(编码-解码)的框架解决短文本对话(Short Text Conversation,缩写为STC)的问题。虽然encoder-decoder框架已经被成功应用在机器翻译的任务中,但是对话与翻译不同,对应一个输入文本(post)往往有多种不同的应答(responses)。文中举了一个例子,一个人说“刚刚我吃了一个吞拿鱼三明治”,不同的应答可以是“天哪,才早晨11点”、“看起来很美味哟”或是“在哪里吃的”。这种一对多的情况在对话中很普遍也很自然。的确,不同的人会对同一句话做出不同的反应,即使是同一个人,如果每次回答都一模一样也是很无趣的。

针对这一特点,作者们提出Neural Responding Machine(简称NRM,见图三)框架来解决短文本对话的问题。他们尝试了全局编码和局部编码,最终发现先分别训练,再用图四的结构来做微调训练,效果最佳。全局编码的优点是能够获得全局信息,同样的词在不同情境下会有不同的意义,全局信息可以部分解决这类情况;缺点是,它供给解码的输入比较固定。局部编码利用局部信息,比较灵活多样,刚好可以缓解全局编码的弱点。


这篇论文的另一大贡献是构建了一个比较大的数据集和标注来评价不同的方法。通过对比,所提出的混合全局和局部的方法比以往基于搜索的方法和机器翻译的方法都要好很多。机器翻译的方法生成的句子往往不通顺,得分最低。能比基于搜索的方法好很多也非常不容易,因为基于搜索的方法得到的已经是人使用过的应答,不会不通顺。大家可以在图五的实例中直接感受一下生成的效果。NRM-glo是全局编码的模型,NRM-loc是局部编码的模型,NRM-hyb是混合了全局和局部的模型,Rtr.-based则是基于搜索的方法。

2015到2016年,这篇论文的作者组织了NTCIR-12 STC任务【10】,公开他们的数据集,并提供公共评测。有16个大学或研究机构参加了中文短文本对话任务的评测。2017年,他们将会继续组织NTCIR-13 STC【11】,现已开放注册【12】。除了上一届的基于搜索的子任务,这一次还设立了生成应答的子任务。我们预计今年的结果会更精彩。

第三篇  被媒体误解的谷歌人工智能写诗
第三篇文章是Samuel Bowman等发表在Arxiv.org上的名为“Generating Sentences from a Continuous Space”的文章【13】。作者分别来自斯坦福大学、马萨诸塞大学阿姆斯特分校以及谷歌大脑部门,工作是在谷歌完成的。

这一工作曾被媒体广泛报道,但我发现很多报道(例如【3】【4】)都对论文的工作有一些误解。一些记者将图六所示的文字误认为是机器人写出来的后现代风格的诗歌,其实不然。这只是作者在展示他们的方法可以让句子级别的编码解码更连续。具体而言,在他们学习到的空间中,每个点可以对应一个句子,任意选定两个点,例如在图六中,一对点对应的句子分别是“i want to talk to you.”和“she didn’t want to be with him”,两点之间的连线上可以找出间隔均匀的几个点,将它们也解码成句子,会发现,这些句子好像是从第一句逐渐变化成了最后一句。

得到这样的结果实属不易。在文章的一开始,作者就给出了一个例子,来说明传统的自动解码并不能很好地编码完整的句子。如图七所示,从句子“i went to the store to buy some groceries”到句子“horses are my favorite animals”,中间取的点经过解码得到的句子呈现在它们之间。可以发现,这些句子未必是符合语法的英文句子。与之相比,图六呈现的句子质量要好很多,不仅语法正确,主题和句法也一致。

这篇文章的想法非常有意思,他们想使用VAE(varationalautoencoder的简称)学习到一个更连续的句子空间。如图八所示,作者使用了单层的LSTM 模型作为encoder(编码器)和decoder(解码器),并使用高斯先验作为regularizer(正规化项),形成一个序列的自动编码器。比起一般的编码解码框架得到的句子编码往往只会记住一些孤立的点,VAE框架学到的可以想象成是一个椭圆形区域,这样可以更好地充满整个空间。我的理解是,VAE框架将贝叶斯理论与深度神经网络相结合,在优化生成下一个词的目标的同时,也优化了跟先验有关的一些目标(例如KL cost和crossentropy两项,细节请参考论文),使对一个整句的表达更好。

当然,为了实现这一想法,作者做了很多尝试。首先,对图八所展示的结构做一些变形并没有带来明显的区别。但在优化时,使用退火的技巧来降低KL cost和训练时把适当比例的词变为未知词(即word dropout)这两项技术就非常有效。

作者们通过两个有意思的实验来展示了他们的结果。一个是做填空题,如图九所示,隐藏句子的后20%,让模型来生成后面的部分。从几个例子看,VAE的方法比RNN语言模型(简称RNNLM)更加通顺和有信息量。第二个实验就是在两个句子之间做轮移(Homotopy,也就是线性插值),对比图六和图七,可以看出VAE给出的句子更平滑而且正确,这一点可以间接说明学习到的句子空间更好地被充满。

当然,作者们还给出了一些定量的比较结果。在比较填空结果时,他们使用了adversarial evaluation(对抗评价)。具体的做法是,他们取样50%的完整句子作为正例,再拿50%的由模型填空完成的句子作为负例。然后训练一个分类器,如果一个模型填的越难与正例分开,就说明这种模型的生成效果更好,更具欺骗性。因此,可以认为这一模型在填空任务上更出色。实验的结果也支持VAE比RNNLM更好。

问题与难点
人工智能真的会创作吗?使用深度学习技术写出的文章或者对话,的确是会出现训练集合里未见过的句子。例如,一个原句的前半段可能会跟上另一个原句的后半段;也可能除了词,搭配组合都是训练集里没有的。这看起来有些创作的意味,但是细究起来,往往是原句的部分更为通顺和有意义。目前的技术可以拼凑,偶尔出现一两个好玩的点,但是写得长了,读起来会觉得没头没脑,这是因为没有统领全篇的精神,跟人类的作家比当然还是相差很远。

机器学习到的还只是文字表面,没有具备人要写文章的内在动因。人写文章表达的是自己的思想和感受,这是机器所没有的。因此,即使是机器写文章,具体想要表达什么,似乎还要由人来控制。但如果控制得太多,看起来又不那么智能,少了些趣味。我认为,要想让机器更自由地写出合乎逻辑的话来,我们还需要类似VAE那篇文章一样更深入的研究,对句子甚至段落的内在逻辑进行学习。

另外,人在写一篇文章的时候,很容易自我衡量语句是否通顺、思想是否表达清楚以及文章的结构是否清晰有趣,机器却很难做到。因此,优化的目标很难与真正的质量相一致。目前的自然语言理解技术对于判断句法语法是否正确可能还有些办法,但要想判断内容和逻辑上是否顺畅,恐怕还需要常识和推理的帮助,这些部分暂时还比较薄弱。但也并非毫无办法,我相信未来对文本生成的研究一定会涉及这些方面。

期待更多的人来研究如此好玩的文本生成。
引用
参考文献
【1】http://www.csail.mit.edu/deepdrumpf
【2】http://kotoba.nuee.nagoya-u.ac.jp/sc/gw/doc/20160321f.pdf
【3】https://www.theguardian.com/technology/2016/may/17/googles-ai-write-poetry-stark-dramatic-vogons
【4】http://www.androidauthority.com/google-ai-poetry-692231/
【5】http://karpathy.github.io/2015/05/21/rnn-effectiveness/
【6】https://github.com/karpathy/char-rnn
【7】http://colah.github.io/posts/2015-08-Understanding-LSTMs/
【8】刘挺,人机对话浪潮:语音助手、聊天机器人、机器伴侣,中国计算机学会通讯,2015年第10期,2015
【9】Lifeng Shang, Zhengdong Lu, Hang Li. Neural Responding Machine for Short Text Conversation. Proceedings of the 53th Annual Meeting of Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing (ACL-IJCNLP'15), 1577-1586, 2015.
【10】http://ntcir12.noahlab.com.hk/stc.htm
【11】http://ntcirstc.noahlab.com.hk/STC2/stc-cn.htm
【12】http://research.nii.ac.jp/ntcir/ntcir-13/howto.html
【13】Samuel R. Bowman, Luke Vilnis, Oriol Vinyals, Andrew M. Dai, Rafal Jozefowicz, Samy Bengio. Generating Sentences from a Continuous Space. arXiv preprint, arXiv:1511.06349, 2015.


文章来自: 微软研究院AI



  • 大小: 166.2 KB
  • 大小: 109.2 KB
  • 大小: 63.6 KB
  • 大小: 61.3 KB
  • 大小: 110.8 KB
  • 大小: 213.2 KB
  • 大小: 165.4 KB
  • 大小: 146.1 KB
  • 大小: 96.4 KB
  • 大小: 72.4 KB
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 文本生成

    参考http://www.mooc.ai/course/427/learn?lessonid=2631&amp;groupId=45#lesson/2631

  • prompt learning受控文本生成作诗

    可控文本生成模型等方案也多种多样,此处按照进行可控的着手点和切入角度,将可控文本生成方案分为:构造 Control Codes、设计 Prompt、加入解码策略(Decoding Strategy),以及 Write-then-Edit 共四类。...

  • 【深度学习】文本生成

     文本生成是比较学术的说法,通常在媒体上见到的“机器人写作”、“人工智能写作”、“自动对话生成”、“机器人写古诗”等,都属于文本生成的范畴。  2016年里,关于文本生成有许多的新闻事件,引起了学术界以外...

  • 预训练时代下的文本生成|模型&技巧

    卷友们好,我是rumor。最近没看到啥好玩的NLP文章,于是开始读综述了。今天推荐一篇人大出品的37页文本生成综述:ASurveyofPretrainedLanguageMode...

  • GAN之根据文本描述生成图像

    GAN[2,3]的出现使得图像生成任务有了长足的进步。一些比较好玩的任务也就应运而生,比如图像修复、图像超清化、人脸合成、素描上色等。今天我们将介绍一种更加复杂的应用,那就是基于文本生成图像。

  • ###好好好####RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色

    1. 基础:文本生成模型的标准框架 2. 问题:GAN为何不能直接用于文本生成 2.1. GAN基础知识 2.2. GAN面对离散型数据时的困境(啥是离散型数据?) 3. 过渡方案:对于GAN的直接改进用于文本生成 3.1. ...

  • 全网最详细中英文ChatGPT-GPT-4示例文档-快速创意生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    ChatGPT训练的创意生成模型可以从大量的文本数据中迅速学习到各种创意,从而帮助公司或个人获取到新的创意,并激发他们的灵感,加速创作过程。它的应用范围非常广泛,可以应用于广告、营销、设计等各种产业。我们...

  • 作为一名程序员,我都收集了哪些好玩的生成器?

    公众号关注“GitHubDaily”设为 “星标”,带你了解技术圈内新鲜事【导语】不久前,一款名为 &#34;狗屁不通&#34; 的文章生成器在 GitHub 开源后大火,具体内容可...

  • visa卡号生成器 在线_作为一名程序员,我都收集了哪些好玩的生成器?

    公众号关注“五分钟学算法”设为 “星标”,带你了解技术圈内新鲜事【导语】不久前,一款名为 "狗屁不通" 的文章生成器在 GitHub 开源后大火,具体内容可查看我们之前的文章分享《我在 GitHub 上发现了一个 "狗屁...

  • 玩转大语言模型:文本生成和模型控制的革新之道 | 开源日报 0901

    Sequelize 是一个易于使用的基于 Promise 的 Node.js ORM 工具,适用于 Postgres、...这是一个非常有趣的 Github 个人主页配置文件,使用了非常多非常好玩的组件,可以用来参考,定制自己的个性化 Github Profile。

  • 强化学习在生成对抗网络文本生成中扮演的角色

    强化学习在生成对抗网络文本生成中扮演的角色(Role of RL in Text Generation by GAN)(下)2017-10-28 胡杨 AI研习社1.基础:文本生成模型的标准框架文本生成(Text Generation)通过 机器学习 + 自然语言处理...

  • 文本生成图像的新SOTA:Google的XMC-GAN

    点击上方“机器学习与生成对抗网络”,关注星标获取有趣、好玩的前沿干货!来源:新智元【导读】从图像到生成文本、从文本生成图像,多模态模型的探索一直未停止。最近Google又出从文本到图像的新...

  • 【转】RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色

    本文转载自: ...1. 基础:文本生成模型的标准框架 2. 问题:GAN为何不能直接用于文本生成 2.1. GAN基础知识 2.2. GAN面对离散型数据时的困境(啥是离散型数据?) 3. 过渡方案:对于GAN的直接改...

  • ###haohaohao###【干货】RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色

    下面用极简的描述介绍一下文本生成技术的大体框架,具体可以参阅各种网络文献(比如:CSDN经典Blog“好玩的文本生成”[1]),论文等。   文本生成按任务来说,比较流行的有:机器翻译、句子生成、对话生成...

  • 探寻人工智能前沿 迎接AIGC时代——CSIG企业行(附一些好玩的创新点)

    由中国图像图形学会和合合信息共同举办的CSIG企业行活动圆满结束,多位来自图像描述与视觉问答、图文公式识别、自然语言处理、生成式视觉等领域的学者分享了各自的研究成果和经验,并与现场观众进行了深入的交流和...

  • Android Studio实现超好玩的拼图游戏

    我们来绘制游戏的layout布局 从上至下的第一个布局是显示时间的TextView,我们将它的id设置为pt_tv_time,layout_width和layout_height都设置为wrap_content,就是适应内容大小,然后text文本内容设为“时间:0”,...

  • pendulum-2.1.2-cp39-cp39-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

  • Nginx配置文件中FastCGI相关参数理解

    Nginx配置文件中FastCGI相关参数理解

  • Pillow-8.4.0-cp310-cp310-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

Global site tag (gtag.js) - Google Analytics