999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Transformer模型的寫詩機器人

2018-02-21 02:30:54張正旺
科技視界 2018年33期
關鍵詞:深度模型

張正旺

【摘 要】古詩是中華民族的文化瑰寶。基于Transformer模型,利用開源的深度學習庫Tensor2Tensor,僅需編寫幾十行代碼即可創建出一個寫詩機器人。結果表明,該寫詩機器人能夠寫出格式規范,頗具意境的七言古詩。

【關鍵詞】Transformer模型;深度學習;Tensor2Tensor;寫詩機器人

中圖分類號:TP183 文獻標識碼: A 文章編號: 2095-2457(2018)33-0004-003

DOI:10.19694/j.cnki.issn2095-2457.2018.33.002

【Abstract】Ancient poetry is a cultural treasure of the Chinese nation. Based on the Transformer model and using the open source deep learning library Tensor2Tensor, a poetry writing robot can be created with only dozens of lines of code. The result shows that the poem writing robot can write seven-character ancient poetry with standard format and artistic conception.

【Key words】Transformer model; Deep learning; Tensor2Tensor; Writing robot

0 引言

古詩是中華民族的文化瑰寶,其結構精練,韻律優美,意境高雅,具有穿越歷史時空的創造力、影響力和吸引力,眾多古詩流傳至今并仍讓我們深深為之著迷。人工智能(Artificial Intelligence),簡稱AI,其研究始于1956年的達特茅斯會議,與歷史悠久的古詩相比,人工智能是一項非常年輕的技術。隨著大數據的積累和計算機軟硬件性能的提升,人工智能在各領域展現出極為廣闊的發展和應用空間。深度學習是機器學習的一個分支,是現階段實現人工智能的一種主要技術手段。深度學習的應用場景主要有:圖像識別與處理、目標檢測、語音識別、自動駕駛、自然語言處理等。基于深度學習,利用自然語言處理相關技術,可以將計算機訓練成一個寫詩機器機器人,讓計算機自動生成格式規范的古詩。

1 研究現狀

近年來,隨著深度學習的快速發展,利用基于深度學習的自然語言處理技術自動生成古詩的研究得到了學術界的廣泛關注。桂林電子科技大學的黃文明等[1]采用一種基于注意力機制的序列到序列模型得到作詩大綱,然后利用具有雙編碼器和注意力機制的序列到序列模型順序地生成詩的每一行。北京郵電大學的李爭[2]基于遞歸神經網絡的古詩自動生成模型能夠在給定關鍵詞的情況下自動生成與其語義相關的古詩內容。中國科學技術大學的蔣亮[3]設計了一種基于記憶的深度神經網絡模型自動基于圖片生成中國古詩,該模型可以很有效地挖掘圖片中的視覺信息及語義信息。清華大學的Yi Xiaoyuan等[4]將古詩句的生成看作一個序列到序列的學習問題,基于遞歸神經網絡(Recurrent Neural Network,RNN)的Encoder-Decoder模型,構建了一個以關鍵詞為輸入四行詩自動生成系統,該系統能學習詩中單行的語義、行與行之間的語義相關性及結構、平仄模式的使用。愛丁堡大學的Zhang Xingxing等[5]提出了一種基于遞歸神經網絡(RNN)的詩歌生成模型,該模型非常善于捕捉和學習詩歌的內容和形式。

這些研究多數基于傳統的RNN模型,均可自動生成格式規范的古詩,但他們都需要研究者自己編寫大量代碼來完成系統的開發。GOOGLE大腦的研究人員[6]于2017年提出了一個摒棄了RNN結構,完全基于注意力機制的Transformer模型,隨后他們開源了一個基于Tensorflow框架的深度學習庫Tensor2Tensor,該庫提供了用于自然語言處理的Transformer模型。利用這個深度學習庫,基于Transformer模型,僅需編寫少量代碼,即可簡單快捷地訓練出一個會寫詩的人工智能機器人。

2 Transformer模型簡介

古詩自動生成是一個序列到序列問題,目前處理這類問題較為有效的框架為Encoder-Decoder模型,該模型的結構如圖1所示。模型中的Encoder部分采用GRU(Gated Recurrent Unit)、LSTM(Long Short-Term Memory)等遞歸神經網絡,卷積神經網絡(Convolutional Neural Network, CNN),以及RNN或CNN與注意力機制(Attention)相結合等機制學習源序列,得到一個固定長度的向量表達式;模型中的Decoder部分以該向量表達式為輸入,采用類似與Encoder的機制學習,得到目標序列。如圖1中的“羌笛何需怨楊柳”經過Encoder后轉變為類似于(0.5,0.2,0.1,-0.6,-0.4,1.0,1.2,0.8)的向量,Decoder以這個向量作為輸入,最終可習得下一句詩“春風不渡玉門關”。

Transformer是一種處理序列到序列問題的新模型,其仍然沿用了經典的Encoder-Decoder結構,但不再使用RNN或CNN進行序列建模,而是完全使用自我注意力(self-attention)制。GOOGLE研究的結果表明,與RNN或CNN等結構相比,Transformer模型可以在減少計算量和提高并行效率的同時獲得更好的學習效果,其結構如圖2所示[6]。

Transformer模型的Encoder部分由Nx個(Nx=6)相同的層堆疊而成,每一層有兩個子層,第一個子層是多頭自我注意力層(Multi-head Attention),第二個子層是密集型全連接前饋網絡層(Feed Forward Network),每個子層中均使用一次殘差連接。Decoder部分的結構與Encoder相似,也是由6個完全相同的層堆疊組成,每一層除了包括Multi-Head Attention子層和Feed Forward Network子層外,還有一個遮擋式多頭自我注意力層(Masked Multi-Head Attention),每個子層中也使用一次殘差連接。

3 利用Transformer模型創建寫詩機器人

Tensor2Tensor深度學習庫封裝了大量常見數據集和一些典型深度學習問題,并提供了相應模型用于解決各類問題,目前可直接解決的問題有:圖像分類,語言模型、情感分析、語音識別、文本摘要,機器翻譯等,利用庫中所提供的模型還可以處理自行創建的各類新問題。寫詩機器人需要用到Tensor2Tensor提供的Transformer模型。

3.1 數據準備

七言古詩簡稱七古,是古詩中形式最活潑、體裁最多樣、句法和韻腳處理最自由,抒情敘事最富有表現力的一種形式,詩體全篇每句七字或以七字句為主[7]。真正意義的七古成熟于唐朝,盛行于唐宋代。為方便訓練,訓練采用的數據集為唐宋兩代的七言絕句。數據來源于Github上由Werner[8]收集的中國古詩詞數據庫,該數據庫共收錄了從先秦到現代的共計85萬余首古詩詞。利用Python語句從與唐宋詩詞有關的五個CSV文件中提取出共79292首七言絕句作為訓練數據集。

3.2 定義問題與數據處理

在Tensor2Tensor中利用Transformer模型處理古詩自動生成問題,需要先編寫一個定義新問題的名為chinese_poetry.py的Python文件,代碼如下:

# coding=utf-8

from tensor2tensor.utils import registry

from tensor2tensor.data_generators import problem,text_problems

import re

@registry.register_problem

class ChinesePoetry(text_problems.Text2TextProblem):

@property

def approx_vocab_size(self):

return 2**15

@property

def is_generate_per_split(self):

return False

@property

def dataset_splits(self):

return[{"split": problem.DatasetSplit.TRAIN, "shards": 9,},

{"split": problem.DatasetSplit.EVAL, "shards": 1, }]

def generate_samples(self, data_dir, tmp_dir, dataset_split):

with open('./ml/data/tang7.txt') as opf:

for line in opf:

line = re.sub('。', ',', line, count=1)

line = re.sub('?', ',', line, count=1)

newline = line.split(',')

for i in range(3):

prev_line = newline[i]

curr_line = newline[i+1]

yield{"inputs": prev_line, "targets": curr_line}

將chinese_poetry.py保存在chinese_poetry目錄下,并在該目錄下再創建一個名為__init__.py的Python文件,該文件只包含一句代碼:from . import chinese_poetry。

古詩自動生成問題類似于機器翻譯,是一個監督學習問題,計算機在學習大量的詩句對后,能夠根據一句詩自動生成下一句。每首七言絕句可生成三個數據樣本:(1)以詩的第一行作為輸入序列,第二行作為目標序列;(2)以詩的第二行作為輸入序列,第三行作為目標序列;(3)以詩的第三行作為輸入序列,第四行作為目標序列。安裝好Tensor2Tensor深度學習庫后,利用下列Tensor2Tensor命令根據原始數據(79292首七言絕句)生成237876對TFRecord格式的數據樣本:

t2t-datagen --t2t_usr_dir=chinese_poetry \

--problem=chinese_poetry \

--data_dir=chinese_poetry/data

3.3 訓練

訓練所使用機器配置如下:32G內存,8G顯存的GTX 1070顯卡。訓練所使用的命令如下:

t2t-trainer --t2t_usr_dir=chinese_poetry --problem=chinese_poetry \

--data_dir=chinese_poetry/data --output_dir=chinese_

poetry/train \

--model=transformer --hparams_set=transformer_base_

single_gpu \

--schedule=train --train_steps=500000

上述指令表示訓練數據所采用的模型為Transformer模型,所采用的超參數集為 transformer_base_single_gpu,訓練步數50萬步。在訓練了兩天又七個多小時后,一共訓練了361800步,結果已基本收斂,因此停止繼續訓練。

3.4 測試

訓練好的模型就是一臺寫詩機器人,只需要給訓練好的模型提供一行詩句,模型即可自動生成下一句。Tensor2Tensor提供了t2t-decoder這個命令來完成此類動作。完整指令如下:

t2t-decoder --t2t_usr_dir=chinese_poetry --problem=chinese_poetry \

--data_dir=Chinese_poetry/data --output_dir=Chin-

ese_poetry/train \

--model=transformer --hparams_set=transformer_

base_single_gpu \

--decode_hparams="beam_size=4,alpha=0.6" \

--decode_from_file=Chinese_poetry/poetry.txt

以杜甫《聞官軍收河南河北》(這首詩不在訓練集中)這首七律的首句“劍外忽傳收薊北”作為詩的第一句,讓訓練出來的寫詩機器人相繼生成后續詩句,結果如圖3所示。

輸入“劍外忽傳收薊北”后,計算機生成的下一句為“又煩前送相公歸”;輸入變為“又煩前送相公歸”,計算機生成“人間父子無窮勝”;以“人間父子無窮勝”為輸入序列,輸出結果為“筆下明明開辟初”。從生成結果來看,生成的古詩非常規范,亦頗有意境,描述了一幅戰后親人即將團聚的景象。

4 討論與結語

通過與訓練數據對比可以發現,上面生成的最后一行詩“筆下明明開辟初”完完全全來自于訓練數據,其原因可能是因為數據量不夠,訓練時出現過擬合現象。為了防止訓練數據里詩句被寫詩機器人原樣照抄,減少過擬合,除了增大訓練數據量外,還可調整模型中的一些正則化超參的值,如Dropout值等,后期也應該增加一些防剽竊處理措施。此外,此寫詩機器人僅僅依據詩的上一句來生成下一句,訓練后容易導致寫出來的詩主題不明確,內容不清晰。因此,對于七言絕句而言,可以通過如下兩種方式增加訓練樣本:(1)以詩的第一行加第二行作為輸入序列,第三行作為目標序列;(2)以詩的一二三行作為輸入序列,第四行作為目標序列。

在技術進步的引導下,在國內外眾多大公司的鼎力支持下,深度學習系統的開發逐漸趨于平民化,即不需要具備很強的人工智能專業背景,也可利用現成的框架開發出具有實用價值的深度學習系統,深度學習模型的使用門檻越來越低,深度學習技術的使用變得越來越簡單。如前所示,寥寥幾十行代碼,即可借助Tensor2Tensor深度學習庫開發出一個人工智能寫詩機器人,但要想獲得比較好的學習結果,讓系統能真正寫出比較完美的古詩,還有大量的工作可做。

【參考文獻】

[1]黃文明, 衛萬成與鄧珍榮, 基于序列到序列神經網絡模型的古詩自動生成方法. 計算機應用研究: 第1-7頁.

[2]李爭, 基于神經網絡的古詩詞自動生成研究, 2018, 北京郵電大學. 第 1-66頁.

[3]蔣亮, 深度神經網絡在基于圖片生成中國古詩問題中的研究與應用, 2018, 中國科學技術大學. 第1-67頁.

[4]Yi Xiaoyuan, Li Ruoyu, Sun Maosong. Generating Chinese classical poems with RNN encoder-decoder. (2016-04-06). https://arxiv.org/abs/1604.01537.

[5]Zhang Xingxing, Mirella L. Chinese poetry generation with recurrent neural networks. Proc of Conference on Empirical Methods in Natural Language Processing. October 25-29, 2014, Doha, Qatar.

[6]Ashish Vaswani, Noam Shazeer, Niki Parmar, et.al. Attention Is All You Need. 31st Conference on Neural Information Processing Systems (NIPS 2017), Long Beach, CA, USA.

[7]百度百科. https://baike.baidu.com/item/七言古詩.

[8]https://github.com/werner-wiki/Poetry.

猜你喜歡
深度模型
一半模型
深度理解一元一次方程
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
深度觀察
深度觀察
深度觀察
深度觀察
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 亚洲性一区| 日a本亚洲中文在线观看| 国产精品免费p区| 日韩亚洲综合在线| 午夜精品久久久久久久2023| 四虎影院国产| 欧美第一页在线| 国产精品久久久久无码网站| 97国产成人无码精品久久久| 国产本道久久一区二区三区| 精品一区二区三区水蜜桃| 无码中字出轨中文人妻中文中| 久久无码av一区二区三区| 91蝌蚪视频在线观看| 色国产视频| 亚洲欧美成人影院| 无码啪啪精品天堂浪潮av| 亚洲成肉网| 一区二区三区四区日韩| 91福利免费视频| 精品国产成人av免费| 亚洲欧美日韩另类在线一| 第九色区aⅴ天堂久久香| 亚洲精品成人片在线观看| 国产精品自拍露脸视频| 无码中文字幕加勒比高清| 久久久久国产一级毛片高清板| 亚洲第一在线播放| 六月婷婷激情综合| 亚洲啪啪网| 精品三级网站| 亚洲无码精品在线播放| 五月激情综合网| 亚洲毛片一级带毛片基地| 日本国产精品一区久久久| 伊人福利视频| 国产乱子伦视频三区| 国产在线视频自拍| 欧美精品亚洲精品日韩专区| 一本大道无码高清| 久久天天躁狠狠躁夜夜2020一| 国产网友愉拍精品| 18黑白丝水手服自慰喷水网站| 国产精品99久久久久久董美香| 免费一级无码在线网站 | AV熟女乱| 97在线国产视频| 亚洲国产天堂久久综合| 国产福利影院在线观看| 日本在线欧美在线| 国产系列在线| 色综合久久88| 天堂va亚洲va欧美va国产 | 国产精品女熟高潮视频| 欧美性爱精品一区二区三区| 日韩在线播放中文字幕| 国产91九色在线播放| 欧美高清三区| 亚洲最猛黑人xxxx黑人猛交 | 国产精品无码一二三视频| 东京热一区二区三区无码视频| 日韩美毛片| 欧美成人精品在线| 欧美在线一二区| 亚洲天堂免费在线视频| 色综合天天操| 尤物在线观看乱码| 蜜臀av性久久久久蜜臀aⅴ麻豆| 一级毛片免费观看不卡视频| 国产成人1024精品| 999精品在线视频| 日韩高清成人| 久久99热这里只有精品免费看| 日本久久网站| 性视频一区| 日韩无码黄色| 久久国产精品嫖妓| 19国产精品麻豆免费观看| av一区二区人妻无码| 人妻精品久久久无码区色视| 国产精品无码一二三视频| 久久久久免费精品国产|