赵树军
(云南民族大学 澜湄国际职业学院,云南 昆明 650500)
关于人工智能艺术,主要是指诗歌、绘画、音乐等,这里就以诗歌为代表对人工智能艺术生成机理进行探讨。人工智能诗歌创作始于20世纪60年代,其发展大致可以分为两个阶段,即传统的人工智能艺术创作阶段和基于深度学习技术的诗歌创作阶段。具体分析如下:
最初出现的是机器诗歌,或称之为诗歌沙拉(Word Salada),体现为词语的任意堆砌,而词语间的意义关联却被忽略。之后,就是模板诗歌创作,如,RACTER和PROSE[1],这与大学英语四六级考试中的完形填空类似,即给出一定的语言背景,在留有空白处来填充词语,这样可以保证语法的连贯和语义的一致,但容易导致雷同,缺乏创新和变化。再就是,模式诗歌创作,与模板创作一样,要事先设定模式,但其灵活性要好于模板。如,Kurzweil开发的Cybernetic Poet系统[2]、Rubaud等人领导的 ALAMO 小组开发的 Rimbaudelaires诗歌生成器[3],前者通过对大量诗作中的词汇、词汇结构、排列顺序、韵律等进行统计分析和建模来生成诗歌,而后者则主要通过对不同位置的词性、音律、平仄等作出限定来生成诗歌。还有,就是基于实例推理(case-based reasoning,简称 CBR)的诗歌创作,主要包括搜索(retrieve)、重用(reuse)、修正(revise)、保留(retain)等步骤,代表性的诗歌生成系统是ASPERA系统[4](P181-188)和COLIBRI系统[5](P157-159),其在知识获取、求解效率、求解质量、知识积累等方面,为生成优质诗歌创造了条件,但在自动优化修改算法设计上存在不足。
再之后,就是基于遗传算法的诗歌生成。遗传算法源自于达尔文的进化论中的核心观点,即“物竞天择,适者生存”,它通过对遗传、变异、选择等生物进化过程的模拟,来实现对问题最优解的搜索。遗传算法关注的并非单独的某一个体,而是所有种群的一些个体集合,以随机的方式来对一个被编码的参数空间实现有效搜索,其关键的操作包括选择、交叉和变异,具体地说,选择就是把优化的个体或解直接遗传到下一代或提供配对交叉产生新的个体再遗传到下一代,而交叉则是把两个附带个体的部分结构加以替换重组进而生成新个体,这样可以大幅提升搜索力,变异是对群体中的个体串的某些基因座上的基因值作出变动,以加速整个搜索向最优解收敛,也可以避免未成熟收敛,这就像国家出台政策要杜绝“未婚早育”一样。其基本程序包括参数编码、适应度函数的设定、初始群体的选取、遗传操作、控制参数的设定等。遗传算法属于全局性最优解搜索,能充分体现优胜劣汰的生存机制,并具有自组织、自适应和自学习的能力,而其作为算法本身也具有动态自适应能力,即在进化中可以自动调整算法来实现对参数和编码精度的控制,相较于前面提到的CBR算法模型,具有了很大的进步。它在许多领域得到广泛应用,如,Levy开发的原型系统POEVOLVE[6],可以生成Limerick(一种源自欧洲的幽默短诗),再如,Hisar Maruli Manurung的MCGONAGALL系统[7],把诗歌生成问题转换为状态空间搜索。同理,周昌乐等人在此基础上,利用遗传算法技术将宋词生成问题模拟为空间最优解搜索问题,并成功实现了宋词的自动生成,其设计“基于平仄的编码方式,基于句法和语义加权值的适应度函数、基于精英主义和轮盘赌算法的选择策略,采用部分映射和启发式交叉算子和启发式变异算子,从而构建了一种基于遗传算法的宋词生成计算模型”[8](P427)。
严睿等人把自动文摘技术引入到人工智能诗歌生成模型[9](P2197-2203)中,该模型要求用户先输入某些能体现自己创造意图的关键词,而后在语义群中搜索相关或相似的词语,并依照韵律和格调来排序和筛选,再运用自动文摘技术以保持每一个诗句和每一首诗歌在语义上的连续性,最终输出最优解进而生成一首完整的诗歌。与宋词生成模型存在的缺点相似,即诗歌质量的好坏过多依赖于评估函数,因而该模型难以确保一首花费很多精力生成的诗就一定是好诗。何晶、周明等在对联自动生成模型基础上,利用统计机器翻译技术,并结合基于传统词藻分类的生成模型,加以改进和拓展,进而完成中国古典格律诗的自动生成。具体来说,先由用户给出几个关键词,而后利用传统词藻分类模型生成不同的候选诗句,从中选择得分最高的作为即将生成诗歌的首句,并把它作为源语言句子,利用统计机器翻译技术,生成目标语言句子,也就是这首诗的第二个句子。其他的诗句生成,可以如法炮制,但都要求结合相邻句子和全诗的语境,以保持前后诗句语义的一致性,直到最终完成整首诗歌。其优点在于不需要太多的人力和时间来设定评估函数,利用机器翻译模型就可以自动把握诗歌语料中隐含的统计规律。
传统方法生成诗歌,在很大程度上依赖于专业知识,由文学或计算机领域的专家制定规则并设定评估函数,以确保诗歌的生成符合语义规范、平仄押韵等要求,并保证诗歌生成的质量,但与此同时也产生了一系列问题,如应用场景比较单一、迁移能力差等,唐诗生成系统并不适用于宋词的生成,英语诗歌生成系统并不适用于汉语诗歌的生成,等等。随着深度学习技术在语音识别、图像处理、机器翻译等方面的快速发展,在诗歌自动生成领域也有所突破,学者们先后提出了一系列基于神经网络的诗歌生成方法,如,基于循环神经网络的生成方法(RNNPG)等。
第一,是Zhang等人于2014年提出的基于循环神经网络的生成方法RNNPG(RNN-based Poem Generator)[10](P670-680)。他们较早地将深度学习技术运用于中国诗歌的生成,先根据用户给定的关键词,在相应的语料库中进行扩展并按格律要求生成候选诗句,再运用语言模型评估出最优诗句作为诗歌的首句,由首句生成第二句,再结合前两句生成第三句,结合前三句生成第四句,以此类推,生成整首诗歌。RNNPG模型由CSM(Convoluional Sentene Model)、RCM(Recutent Context Model)和RGM(RECURRENT GENERATION MODEL)三部分组成,其中,CSM作为基于卷积神经网(Convolutional Neural Networks,CNN)的模块,主要用于一句话的向量表示,RCM作为基于循环神经网络(Recurrent Neural Network,RNN)的模块,依据历史信息生成句子的向量,并输出下一个要生成句子的语义向量。RGM也是基于循环神经网络的模块,其依据RCM输出的语义向量和先前字符编码,生成下一个字符的相关概率分布,在解码时基于RGM模型输出概率和语言模型概率进行加权处理,以生成下一个诗句,如此循环下去,进而完成整首诗歌。RNNPG建基在深度学习技术之上,可以从训练数据集中完成特征的自动提取,而无需过多的人工干预,与先前的方法相比有了明显的进步,但由于仅首句与关键词相关性大,仍会产生主题偏离、漂移现象。
第二,是基于神经机器翻译的生成方法。QIXIN Wang等人于2016年将基于注意力机制的神经网络翻译模型(Attention based Neural Machine Translation Network,ANMT)[11]用于宋词生成,该模型运用了从输入序列到输出序列(seq2seq)模式,包含一个编码器和一个解码器。通过编码器来完成对输入序列的编码,并将其映射为高维的语义向量,再通过解码器解码生成目标序列。在解码器生成每个字符的时候,归因于注意力机制的作用,模型对当前生成字符相关的源序列信息特别加以关注,以至于模型能够承载更多历史信息,进而使句子的语意联系更为紧密。另外,双向长短时记忆网络(Bi-directional Long Short Term Memory,BiLSTM)和长短时记忆网络(LongShort Term Memory,LSTM)被分别运用于编码器和解码器中,而基于LSTM之上的初始化向量解码器可以用来区分词牌,整个LSTM模型能够减少梯度消失问题,并保持对长篇幅诗歌的学习和生成。由于ANMT模型在编码-解码框架下融入了注意力机制,再配合以LSTM,使得诗歌生成效果大为改善。但是,与RNNPG情形相似,由于用户只负责第一句话的提出,对后面句子的生成影响甚微,所以仍有可能发生主题漂移。
第三,基于规划的生成方法。Zhe Wang等人提出一种基于规划的诗歌生成方法PPG(PLANNING-BASED POEM GENERATOR)[12]。该方法同样运用了基于注意力机制的编码-解码框架,其创新之处在于模仿人类创作模式,即在正式动笔之前,先根据主题拟订一个提纲,而后根据提纲来完成写作。具体来说,就是根据用户意图的输入,完成对主题词的提取、扩展,进而生成一个主题词序列,并对主题词作出限定,即每个主题词只和一个句子相对应,每个主题词都构成相对应句子的核心。每个主题词结合历史已生成诗句,来生成下一个诗句。如此循环下去,直到生成整首诗歌。基于规划的诗歌生成方法分为规划、生成两个阶段,首先是主题规划阶段。如,机器写诗系统输入的诗歌题目为“春天的桃花开了”,通过运用TEXTRANK等算法对主题词进行抽取,并依据词语的重要程度进行排序,结果为“春天”“桃花”,再利用语言模型或其他统计方法并根据已有词语对后续词语序列进行预测,进而完成主题词的扩展,其结果为“燕”和“柳”,于是就形成了“春天”“桃花”“燕”和“柳”组成的主题词序列。主题词和句子构成一一对应的关系,即“春天”对应于第一句待生成的诗,“桃花”对应于第二句待生成的诗,“燕”对应于第三句待生成的诗,“柳”对应于第四句待生成的诗。
其次是生成诗歌阶段。与检索得到首句的做法不同,它是依据第一个主题词“春天”来完成首句的生成,在后面依次生成诗句的过程中,要结合所有已生成的历史上文诗句和相对应待生成诗句的主题词,来生成下一个诗句。具体而言,就是要用第一句诗“春天丽日照晴川”加上待生成诗句的主题词“桃花”生成第二句“十里桃花映满山”,用第一、二句诗“春天丽日照晴川”“十里桃花映满山”,再加上待生成诗句的主题词“燕”生成第三句“燕子呢喃寻旧梦”,用第一、二、三句诗“春天丽日照晴川”“十里桃花映满山”“燕子呢喃寻旧梦”,再加上待生成诗句的主题词“柳”生成第四句“清风拂面柳如烟”。这样就形成了一个由上文诗句、主题词、待生成诗句组成的三元模型结构,而主题词就是预置在待生成诗句中并通过算法抽取而来的,也就是说,它就是待生成诗句的一个组成部分,也就是即将生成诗句的一个组成部分,也即它将存在于生成诗句中。如,“十里桃花映满山”作为生成诗句就包含有“桃花”这个主题词,“燕子呢喃寻旧梦”包含有“燕”这个主题词,等。这就确保了每个生成诗句和用户意图存在有一定的关联性,防止了主题漂移问题的发生。具体生成过程,如下图所示:
上述实例是基于规划方法的四句诗歌生成模式,以此类推,可以有五句诗歌生成模式、六句诗歌生成模式……n句诗歌生成模式,四句诗有四个主题词、四个句子,五句诗歌,含有五个主题词、五个句子,六句诗歌有六个主题词、六个句子……n句诗歌就含有n个主题词、n句诗。我们来分析n句诗歌的生成情形。n句诗歌生成也分为规划、生成两个阶段。同理,在主题规划阶段,运用TEXTRANK等算法并依据词语的重要度进行抽取、排序,得到一个主题词序列,同时,也限定一个主题词只能对应于一个句子,如果用n1、n2、n3……nn表示每个主题词,用N1、N2、N3……Nn表示每个句子,那么,在所有的主题词序列n1、n2、n3……nn和所有的句子n1、n2、n3……nn之间就存在一个一一对应的关系,即,n1是第一个句子n1的主题词,n2是第二个句子N2的主题词,n3是第三个句子N3的主题词……nn就是第n个句子nn的主题词。同样,在诗歌生成阶段,可以依据第一个主题词n1直接生成首句诗N1,后面的诗句依次由历史上文和待生成诗句的主题词结合生成,即,第二个句子N2由第二个主题词n2和第一个句子N1结合生成,第三个句子N3由第三个主题词n3和第一个句子N1和第二个句子N2结合生成,以此类推,第N个句子Nn就是由第n个主题词nn和N1、N2、N3……Nn-1句子结合生成。这样就形成了由上文诗句、主题词、待生成诗句组成的三元模型结构,同样,每个主题词都预置于与之相对应的待生成诗句中,在即将生产的每个诗句中也必然包含了相应的主题词在内,即,N1句子中包含了主题词n1,N2包含了主题词n2,N3包含了主题词n3……Nn句子中包含了主题词nn,这样就保持了每个生成诗句和用户意图的相关性,从而很大程度上避免了主题偏离现象的发生。
无论是四句式的诗歌生成还是其他句式的诗歌生成,都采用了两个编码器,一个是对主题词进行编码,另一个是对历史上文进行编码,这样就可以得到两个隐层向量序列,然后将二者进行拼接,再运用解码器进行解码,具体过程如下图所示。每个汉字代表它的embedding向量。首先对主题词“桃花”作字级别双向GRU运算,分别取正反两个方向的最后一个向量,然后进行拼接,生成一个新向量。如,上面的例子中,主题词“桃花”的向量为h0,再对诗句“春天丽日照晴川”作字级别双向GRU运算,生成一个向量序列[h1:h8]。之后,对主题词向量h0和诗句“春天丽日照晴川”向量[h1:h8]进行拼接,就生成一个新的向量序列[h0:h8]。再运用基于注意力机制的神经网络翻译模型(ANMT)的解码器对向量序列[h0:h8]进行解码,生成诗句“十里桃花映满山”。
编码器在编码过程中,主题词向量和上文诗句的向量序列在进行拼接时,主题词向量一般会固定放在前面,如上述例子中的“桃花”和“春天丽日照晴川”在进行向量拼接时,主题词“桃花”向量排在了“春天丽日照晴川”向量序列之前。在解码器解码时,运用注意力机制来实现对主题词关注时机和程度的自动控制,其结果就是能影响到主题词在生成诗句中出现的位置次序。如,一首七言诗中,如果分别用一二三四五六七来分别表示一句诗中所包含的七个汉字的位置次序,那么,主题词是一个单独汉字构成的词语情形下,它可能出现在一、二、三、四、五、六和七中的某个位置,或者主题词是由两个汉字组成的词语情形下,它可能出现在一二、二三、三四、四五、五六和六七中某个位置,但无论在什么位置次序出现,该主题词都被包含在该生成诗句中。如,上述例子中,主题词“春天”位于诗句“春天丽日照晴川”的一二位置,即它也被包含在该生成诗句中,而主题词“柳”位于诗句“轻风拂面柳如烟”第五的位置,即它也被包含在该生成诗句中。相比而言,先前的几个模型,用户的写作意图,主要反映在第一句诗中,而越往后,用户的写作意图越稀疏、淡薄,这就容易导致主题漂移现象。而基于主题规划的诗歌生成模型,通过运用算法对主题词的提取、扩展而形成的主题词序列会依次被安置于即将生成诗歌的相应诗句中,并且有着不同的排列次序,这也就是从根本上杜绝了主题漂移的发生。另外,就是在主题词的规划阶段,主题词的获取不仅来自于语料库,还可以通过引入外部知识来扩充,如挖掘网页、搜索日志等,以扩大语料库的覆盖面。
第四,Xu、Jiang等人提出一种基于记忆的图片生成中国诗歌的深度神经网络模型(Memory-based Image to Poem Generator,MIPG)[13]。MIPG模型的建构受到PPG的启发,PPG模型是根据关键词来生成诗歌,而MIPG则是根据图片来生成关键词,再结合其他程序来生成诗歌。从本质上来说,MIPG也属于编码-解码模型,它由两部分组成,一是基于图片的编码器I-Enc(Image-based Encoder),另一个是基于记忆的解码器M-Dec(a Memory-based Decoder)。在编码过程中,首先从图片中抽取一系列关键词,然后基于卷积神经网络(CNN)完成对图片的视觉特征向量的提取,再加上一个双向门控循环单元(Bi-directional gated recurrent unit,BiGRU),来实现对历史已生成诗句的相关语义特征的提取。而后,将关键词、视觉特征向量、历史诗句的相关语义特征输入解码器,以生成诗歌。在解码过程中,由于融入了主题记忆网络,在动态中实现了对生成诗句的相关语义特征的有效影响,使其和该句的主题、语境氛围相适应,再通过有利于主题增强的Sofmax设置,预知该句语义特征的不同的主题偏离率并择优选用,以增加生成诗歌和图片主题的一致性。
第五,Lantao Yu等人提出基于对抗式网络的诗歌生成模型SEQGAN(SEQUENCE GENERATIVE ADVERSARIAL NETS)[14](P2852-2858),该模型包括两个部分,一个是诗歌生成器,另一个是诗歌判别器,它们分别基于循环神经网络(RNN)和卷积神经网络(CNN)。该模型的主要贡献在于,一方面,它依据蒙特卡洛搜索补全了所有可能的序列,从而解决了原先判别器无法判别非完整序列的问题,另一方面,通过运用强化学习中的梯度策略,把诗歌判别结果反馈给诗歌生成器,通过奖励因子的设定,来激发诗歌生成器生成更方便让诗歌判别器判别为与人类真实作品相近的作品来,也就是,通过强化学习使得基于循环神经网络的诗歌生成更加优化。
从以上的分析,可以看出,人工智能艺术创作越来越成熟,从最初的语词拼凑,到后来的句法、词义、语境等的协调一致,其创作水平越来越接近于甚或超越于人类普通的创造者。尽管如此,人工智能在语言隐喻的人性深度、情感抒写的艺术高度、人物刻画的细腻程度、读者接受的范围广度等方面和人类艺术家的情形仍有较大差距,要赶上和超越人类优秀艺术家的创作水平还需时日。无论是传统的人工智能诗歌生成方法,如早期的诗歌沙拉、Kurzweil开发的Cybernetic Poet系统、Rubaud等人组织开发的Rimbaudelaires诗歌生成器、基于实例推理(CBR)的诗歌生成方法、基于遗传算法的宋词生成方法、运用自动文摘技术的诗歌生成方法等,还是后来的基于深度学习的宋词生成方法,如基于循环神经网络的生成方法(RNNPG)、基于注意力机制的神经机器翻译生成模型(ANMT)、基于规划的诗歌生成方法(PPG)、基于记忆网络的诗歌生成方法(MIPG)、基于对抗式网络的诗歌生成方法(SEQGAN)等,都存在一些共同的特质,如观念性、去经验化、去社会化、去生活化、去意识化、去创造性、非媒介性等,而对这些特点的进一步分析和研究,将为探寻人工智能艺术本质做好铺垫。