黃石 林政
(中國傳媒大學動畫與數(shù)字藝術學院 北京市 100024)
自然語言文本生成的核心問題是自然語言如何在計算機中進行表示。常見的方式是使用NLTK等分類詞庫進行分析,分類詞庫存儲大量詞匯,并對每個詞分別存儲其上位詞、同義詞等。但這種方法存在數(shù)據(jù)主觀化、無法準確計算詞語相似度等問題。如將詞語轉換為one-hot向量表示,則存在向量長度過長等問題。
2003年,Bengio等人以J.R.Firth的理論為基礎,提出在神經網(wǎng)絡中詞嵌入的思想[1]。2013年,Mikolov等人提出word2vec向量模型、Skip-gram和Continuous Bag of Words方法[2]。2014年,Rong X對word2vec模型提供了理論推導和解釋[3]。隨后,斯坦福大學提出詞向量模型GloVe[4],該模型以“預測”為主,對共現(xiàn)矩陣進行降維從而學習詞向量。2018年,Peters.M.E等人提出詞向量模型ELMo[5],該模型為雙層雙向的LSTM(長短期記憶網(wǎng)絡),可通過上下文計算同一個詞匯在不同語境下的表達。隨著Transformer架構的流行,出現(xiàn)基于此架構的GPT和BERT模型。
本文采用GPT-2模型,通過Top-k采樣及核采樣方法,基于《唐才子傳》的樣本數(shù)據(jù)集,生成若干古代漢語文本,并對LSTM、Sequence to sequence、Sequence to sequence+attention等其它方法進行了比較研究,初步驗證了GPT-2在古代漢語環(huán)境中的表現(xiàn)。
GPT-2語言模型是由OpenAI發(fā)布的GPT模型的改進版本,其核心思想指明語言模型是無監(jiān)督的多任務學習者。相比于GPT模型,GPT-2的模型規(guī)模更大,表現(xiàn)更加優(yōu)異。
自然語言通過上文以預測的方式生成下一個詞匯的解碼過程,通常使用求最大似然、貪婪算法和束搜索等方法,然而生成的文本質量并不理想。實踐證明,Top-k[6]方法更加有效,通過對概率分布進行截斷,選取概率較大的前k個字符,再根據(jù)概率,從中抽取生成字符。
更正式地說,給定一個概率分布P(x|x1:i-1),選取其中的某k個字,使得取得最大值,其中令將初始概率分布進行按式(1)進行重新縮放,后按照新的概率分布P'(x|x1:i-1)進行抽樣,作為下一個生成字。
通過分析人類文本和束搜索生成文本的概率分布發(fā)現(xiàn),人類文本中每個詞的困惑度上下起伏波動,而機器生成文本中的困惑度呈現(xiàn)出不自然的平緩,并且其困惑度相對較高。在此基礎上,Top-p采樣方法對概率分布進行截斷,通過定義閾值p,選取累積概率超過閾值p的前n個字符,從中抽取生成字符。
更正式地說,給定一個概率分布P(x|x1:i-1),按從大到小的順序選取前n個字,使得式(2)成立,其中V(n)?V。
Top-p方法可以在有效截斷分布中不可靠的尾部的同時,允許文本的多樣性,從而在不犧牲流暢性和連貫性的前提下,增強生成文本的多樣性。
本文使用的數(shù)據(jù)集取自《唐才子傳》。該文集收唐、五代詩人傳記278篇,寫作風格一致,適合作為神經網(wǎng)絡的輸入數(shù)據(jù)進行訓練。本文數(shù)據(jù)集共76769個字符。
本文同時采用了LSTM、Sequence to sequence、Sequence to sequence加上注意力機制,與GPT-2模型進行了對比實驗。實驗詳情如下:
LSTM模型采用雙層的構架模型,每層包含512個LSTM單元。
Sequence to sequence模型包含編碼器和解碼器兩部分,編碼器和解碼器均為雙層架構,每層包含1024個LSTM單元。
Sequence to sequence加注意力機制模型的編碼器部分采用雙向LSTM單元,在解碼器部分添加了注意力(Attention)機制。
本文選擇了GPT-2模型的“345M”版本,并使用稀疏softmax交叉熵計算損失,使用Adam計算梯度下降,學習率為0.0002。
模型訓練完成后,使用Top-k采樣(超參數(shù)k為40)和核采樣方法(超參數(shù)p為0.9)生成文本。
表1:Top-k方法的部分生成樣本
表2:問卷調查結果:語句通順度
表3:問卷調查結果:內容一致度
表4:問卷調查結果:整體質量
本文采用調查問卷的評估形式,分別從4個模型的8種分類中隨機挑選16個樣本,與數(shù)據(jù)集的2個樣本,共計18個樣本作為評測對象。問卷分別從語句通順度、內容一致度、整體質量3個方面對文本進行評估,分數(shù)范圍為1-10。
參與問卷調查的100名用戶均為在讀研究生,其中有35名為文學類相關專業(yè)碩士。其中有10份表示不熟悉文言文,最終選取其余90份作為有效問卷并進行分析。分析結果如表2、表3、表4所示。結果證明GPT-2生成的樣本質量較高。
但GPT-2生成文本也存在一些問題。如生成“善善善”,“TONY?SK?”等無意義的字段。其原因在于GPT-2模型的預訓練數(shù)據(jù)以英文為主,且微調訓練集數(shù)據(jù)過?。▋H有233KB),因此預訓練數(shù)據(jù)的影響較大,容易生成英文字段或無意義的重復文字。
實驗證明,在自然語言生成中,GPT-2模型適用于古代漢語文本生成,且生成質量較好。但會小概率生成無意義文本和英文文本。在后續(xù)研究中,希望增大微調的訓練集并增長訓練時間,并進一步分析Transform架構在古代漢語環(huán)境的表現(xiàn)。