http://www.renwuyi.com/index.php?action=artinfo&id=19036&cat_id=2#top
文本生成是比较学术的说法,通常在媒体上见到的“机器人写作”、“人工智能写作”、“自动对话生成”、“机器人写古诗”等,都属于文本生成的范畴。
2016年里,关于文本生成有许多的新闻事件,引起了学术界以外对这一话题的广泛关注。
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”得到的输出向量是第四维最大&#x