专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
爱可可-爱生活  ·  //@爱可可-爱生活:欢迎参与~-20241 ... ·  昨天  
人工智能那点事  ·  担心的事发生了!可可西里“网红狼”疑被轧死, ... ·  2 天前  
新智元  ·  MIT、OpenAI等震撼力作:AI首次自主 ... ·  2 天前  
爱可可-爱生活  ·  《爱可可微博热门分享(12.22)》 ... ·  4 天前  
51好读  ›  专栏  ›  机器学习研究会

【学习】基于TensorFlow让机器生成赵雷曲风的歌词

机器学习研究会  · 公众号  · AI  · 2017-02-14 19:06

正文



点击上方“机器学习研究会”可以订阅哦
摘要
 

转自:量化投资与机器学习

1、原理回顾

机器作词是序列建模(以下简称seq2seq)的典型应用,其基本思想就是给定序列A,机器负责产生序列B,并且再将序列B作为输入,机器负责生成序列C...如此循环下去即可生成无限长度的序列。seq2seq模型图如下所示,左边是编码器,右边是解码器。


假设问题是从序列A到序列B之间的映射,那么seq2seq模型的工作流程如下:

  • 序列A中的每一个单词通过word_embedding操作以后,作为input进入编码器,编码器可以是一个多层RNN结构,编码器输出一个向量;

  • 训练的时候,解码器的输入跟编码器的输入是一样的,然后解码器的输出与序列B之间的交叉熵作为模型的目标函数;

  • 生成的时候,首先给定一个种子序列作为编码器的输入,并且解码器的上一时刻的输出作为下一时刻的输入,如此循环往复,直到生成给定数量的序列。

本文建立的模型就是基于以上原理。


2、模型代码设计

要完成机器生成歌词的工作看上去是一个生成模型,而生成模型一般都是无监督问题,但是我们需要将它转化成有监督问题,原因是使用有监督学习可以发现数据内在的关联性,比如上下文的衔接,然后用预测学习来代替无监督学习。


就有监督学习而言,通常我们需要准备好具有映射关系的数据集:X和Y。这里我们事先只有周杰伦的歌词文本,它是一个整体,如何确定X和Y?虽然它是一个整体,但是这个整体是序列组成的,序列与序列之间会有一定的时序关系。比如对于

让我掉下眼泪的 不止昨夜的酒

我们是不是可以把“让我掉下眼泪的 ”看作X,把“ 不止昨夜的酒”看作Y,如果我们将X输入进网络,而网络输出的是Y,那就说明我们构建的网络已经具备写歌词的能力了。这就是我们划分数据集为X和Y的原理。一般情况下,数据需要划分为训练集和测试集,由于时间的缘故,这里没有划分测试集了。


当我们把数据预处理做好了,接下来就是构建模型了,构建模型主要是围绕seq2seq模型,而在编码器和解码器部分,我们可以自由构造,如可以选择不同的rnn_cell,或者选择不同的层数、神经元个数,具体情况因数据量大小而定。构建有监督学习模型的最重要部分就是目标函数,并且要确保目标函数对于所有要训练的参数是可微的,这样我们就可以构建端对端的基于后向误差更新的深度学习系统。


当有监督学习训练的模型的误差已经满足我们的要求了,就可以把参数保存下来,以便利用这个模型去生成歌词。生成模型的构建其实就是一个抽样的过程,给定种子序列,选好特定的抽样方法,即可生成无限多个汉字组成的序列。


为了了解训练过程中的误差更新趋势,我们还需要建立日志记录以及日志可视化的部分,这样以便于我们做后期的模型性能分析,本文中会粗略提及。


原文链接:

https://mp.weixin.qq.com/s?__biz=MzAxNTc0Mjg0Mg==&mid=2653284689&idx=1&sn=ba9ccd0f98d5f9fc55bb64c280fbcf50&chksm=802e2b44b759a252f928f8a07b8ee74a601e8fe7ca8673eb26a7c52350ba311df74a99e30249&mpshare=1&scene=2&srcid=0213Hd7rTXCgYbzid3WiOXRd&pass_ticket=8iwMy7fNNtBQvfgjRO3alBXL5v9EX2CSW%2Fqr0Xkdzok%3D#rd

“完整内容”请点击【阅读原文】
↓↓↓