学完 DeepLearning 系列课程后就想做一个小应用试试。一开始基于 RNN 训练了个古诗机器人,这个做的人很多,于是换了宋词。宋词是基于词牌生成,相对数据量比较少,基于 RNN 训练效果很一般。后来了解到了 Transformer 算法感觉发现了生机,训练了一下感觉效果真是不错。
使用效果测试的话可以直接扫码访问这个小程序玩玩, 或者小程序搜索 【小诗一首】:
这是生成的例子:
Transformer (Attention Is All You Need) 介绍
Transformer 是 Google 于 2017 年在 Attention Is All You Need 论文中提出,基于 Attention 机制,在机器翻译及其他语言理解任务有着以往无法比拟的效果,后 2018 年又提出 Universal Transformer, 在多项有难度的语言理解任务上泛化效果明显更好。Transformer 解决 RNN 存在的长序列信息丢失的问题,像宋词这种讲究格式讲究押韵的语句,在 RNN 中就很难训练到好的效果,但是 Transformer 就可以很好的提取训练宋词中的格式以及押韵特征。
更多
想深入学习 Transformer 以及算法可以看 Tensorflow 官方的教程. 等下篇文章我也详细介绍如何基于 Transformer 训练一个宋词机器人,包括如何预处理训练数据,如何使用模型生成序列文本。