學完 DeepLearning 系列課程後就想作一個小應用試試。一開始基於 RNN 訓練了個古詩機器人,這個作的人不少,因而換了宋詞。宋詞是基於詞牌生成,相對數據量比較少,基於 RNN 訓練效果很通常。後來瞭解到了 Transformer 算法感受發現了生機,訓練了一下感受效果然是不錯。算法
使用效果測試的話能夠直接掃碼訪問這個小程序玩玩, 或者小程序搜索 【小詩一首】:小程序
這是生成的例子:學習
Transformer 是 Google 於 2017 年在 Attention Is All You Need 論文中提出,基於 Attention 機制,在機器翻譯及其餘語言理解任務有着以往沒法比擬的效果,後 2018 年又提出 Universal Transformer, 在多項有難度的語言理解任務上泛化效果明顯更好。Transformer 解決 RNN 存在的長序列信息丟失的問題,像宋詞這種講究格式講究押韻的語句,在 RNN 中就很難訓練到好的效果,可是 Transformer 就能夠很好的提取訓練宋詞中的格式以及押韻特徵。測試
想深刻學習 Transformer 以及算法能夠看 Tensorflow 官方的教程. 等下篇文章我也詳細介紹如何基於 Transformer 訓練一個宋詞機器人,包括如何預處理訓練數據,如何使用模型生成序列文本。spa