嚴 丹,何 軍+,劉紅巖,杜小勇
1.數據工程與知識工程教育部重點實驗室(中國人民大學 信息學院),北京 100872
2.清華大學 經濟管理學院,北京 100084
在線唱歌平臺提供了一種隨時隨地演唱歌曲、發布演唱的音樂作品以及與他人交流的新型娛樂方式,近年來吸引了大量的用戶。用戶演唱的音樂作品發布到平臺上之后,其他用戶播放音樂作品并提供反饋,如寫下評論或者點贊。發布的作品被其他用戶評論是平臺用戶之間分享和交流的方式之一,也可以激勵用戶發布更多的作品。但是對于一些新用戶的作品或者新發布的作品,由于播放次數很少或者沒有,因此沒有用戶發表評論。對音樂作品自動生成評論可以在一定程度上解決此問題。如何自動生成準確且多樣化的評論是此類研究的關鍵。對于用戶發表的每一個音樂作品,平臺都會給出一個評級信息,體現音樂作品的演唱水平。本文發現對于具有不同表現等級的音樂作品,用戶提供的評論文本存在差異,等級越高的音樂作品,其評論文本的多樣性越高。因此,本文研究考慮音樂作品評級信息的評論文本自動生成的方法。
生成式對抗網絡(generative adversarial net,GAN)[1]是近年來提出的一種深度學習網絡模型,在文本生成領域[2]也有較好的表現。它使用判別器來指導生成器的文本生成過程。但是用GAN自動生成的文本缺乏多樣性,已有研究在解決生成文本缺乏多樣性的問題的同時,忽略了生成文本的質量,即句子的準確性和流暢性。
為了解決這些問題,本文提出了基于生成式對抗網絡的文本自動生成模型——GradeGAN。該模型引入等級判別器,使其與文本判別器共同學習來指導生成器的文本生成,使用文本判別器是指導生成器生成質量更高的文本,使用等級判別器是指導生成器生成更加符合音樂等級的文本。
本文的主要貢獻如下:
(1)提出了一種新的文本自動生成模型Grade-GAN,用于為音樂作品自動生成評論文本,使生成的評論符合音樂等級信息。
(2)在實際在線唱歌平臺數據集中對所提模型進行了性能評估,驗證了所提方法的有效性。
文本生成是自然語言處理的一個重要研究領域。一個標準的Seq2Seq(sequence-to-sequence)[3]網絡語言模型在自然語言生成領域表現良好,但是存在兩個主要缺點:首先,基于循環神經網絡(recurrent neural network,RNN)的模型通過最大似然方法進行訓練,該方法在訓練階段存在暴露偏差[4]。其次,用于訓練的損失函數是單詞級的,但是性能通常是在句子級評估的。為了解決這些問題,提出了利用生成式對抗網絡(GAN)實現文本自動生成的模型。
生成式對抗網絡(GAN)是近年來新興的一類深度生成模型。雖然GAN在計算機視覺應用方面取得了巨大的成功[5],由于離散序列不可微的特性[6],GAN應用于自然語言生成的研究相對很少。一些工作試圖解決這個問題,其中用強化學習的策略來處理不可微問題最為常見[2,7-8],其中SeqGAN[2]是這類問題的代表,但是這類方法不能生成具有不同屬性的文本。
針對生成不同屬性的文本,SentiGAN[9]取得了比較好的結果,它是由多個極性生成器和一個多類文本判別器組成,可以根據不同的情感值生成相應的情感文本,但是該模型在提升多樣性的同時降低了生成文本的準確性。因此本文的研究旨在提出一種生成具有不同屬性的文本的方法,如針對不同評論等級的文本生成的方法,在提升多樣性的同時提升準確度。
給定一組音樂作品集S和評論等級集合G,假設每個作品i∈S的評級為gi∈G,其發布用戶的以往作品評論集為singeri,與i的歌曲相同的其他發布作品的評論集為songi,將這兩個評論集合并作為作品i的相關評論集SCi。本文的研究問題為:當一個新作品i發布時,根據其評級gi和相關評論集SCi生成評論文本Ci={c1,c2,…,ct,…,cT}。ct∈C,C是候選詞的詞匯表。評級反映了音樂作品的演唱水平,分為3個等級,即G={1,2,3}。為了描述的簡潔性,下文的描述中省略上標中的作品編號i。
GradeGAN 模型基于SeqGAN 的架構,引入等級判別器,其基本結構如圖1所示。這個模型包括編碼器、生成器、文本判別器和等級判別器4個主要模塊。
給定一個音樂作品的相關評論集和評級的具體等級,模型輸出為由T個詞構成的文本C={c1,c2,…,ct,…,cT}。其中編碼器主要是提取輸入文本的信息,生成器基于該提取的信息生成評論文本的每個詞,其生成過程利用強化學習的過程實現。具體來說,假設當前已經生成了t-1 個詞:C1:t-1=(c1,c2,…,ct-1),則在t-1 時刻,狀態(state)st-1由這已經生成的t-1個詞表示,生成器生成下一個詞的動作(action)就是在候選詞表中選擇概率最大的詞,動作確定之后,下一時刻的狀態就確定了。為了確定每個狀態下的動作,以選取合適的詞,對于可能的候選詞(即動作),借助文本判別器和等級判別器來度量該動作的反饋(reward),根據策略梯度(policy gradient)學習策略來學習動作的選擇策略。
生成器生成的評論文本用來訓練文本判別器和等級判別器,由二者共同作用得到反饋用于訓練生成器的生成過程,由此交替訓練生成器、文本判別器和等級生成器。下面對各個模塊進行詳細解釋。
長短期記憶網絡(long short-term memory,LSTM)[10]和門控循環單元(gated recurrent unit,GRU)[11]等門控循環神經網絡在文本生成相關任務中相比于簡單的RNN性能表現更好[12-13],本文使用LSTM作為編碼器結構和生成器結構。
LSTM中時間步t單元的計算過程為:

其中,[ht-1,ct]為時間步t時上一個隱藏層向量ht-1和當前輸入ct的向量級聯,⊙表示元素積。
3.2.1 生成器預訓練
在生成器的預訓練階段,文本利用編碼器從音樂作品的相關評論集中提取有效信息作為生成器的輸入。給定音樂作品的相關評論集SC={sc1,sc2,…,sct,…,scL},將SC輸入到編碼層,經過編碼層編碼輸出最后一個隱藏層的狀態hL,將hL作為生成器隱藏層的初始狀態輸入到生成器中。
使用最大似然估計(maximum likelihood estima-tion,MLE)來預訓練編碼器和參數為θ的生成器Gθ,也就是使生成的評論文本與真實評論文本x={x1,x2,…,xt-1,xt,…,xT}的負對數似然函數最小化,即損失函數為:

Fig.1 Framework of GradeGAN圖1 GradeGAN的模型結構

3.2.2 策略梯度學習
在生成器策略梯度學習階段,生成器Gθ在生成文本的過程中,使用文本判別器和等級判別器共同作用來調整生成器的生成過程。文本判別器記作D?,訓練參數為?;等級判別器記作gradeφ,訓練參數為φ。
在時間步t,狀態st-1是當前已經生成的評論序列C1:t-1=(c1,c2,…,ct-1),要選擇下一個詞ct。用Gθ(ct|C1:t-1)表示選擇下一個詞的概率分布。用文本判別器D?判斷生成文本為真時的概率,記作Q;用等級判別器gradeφ判斷生成文本的等級,其中與真實評級相同的等級的概率,記作M。用Q和M共同作為生成器生成過程中每個動作的反饋(reward)。
在策略梯度學習階段,使用蒙特卡洛搜索在每一步都通過搜索得到完整句子,在文本判別器和等級判別器的共同作用下,生成器的優化目標就是令從初始狀態開始的反饋最大化。

其中,RT是評論文本由文本判別器判斷為真的反饋,WT是評論文本由等級判別器判斷為真實評論等級的反饋。表示在狀態s0下選擇下一個詞c1時,由文本判別器得到的反饋。表示在狀態s0下選擇下一個詞c1時,由等級判別器得到的反饋。
因為文本判別器和等級判別器都屬于文本分類任務,且卷積神經網絡(convolutional neural network,CNN)[14]在文本分類任務中性能突出,所以本文選擇CNN作為文本判別器模型和等級判別器模型。
在CNN 分類模型中,假設輸入的詞序列為(a1,a2,…,aT),要對其進行分類,首先需要將離散的詞編碼級聯成向量矩陣:

其中,at∈Rk是k維的詞向量,⊕是建立矩陣ε的垂直級聯運算符,ε∈RT×k。
然后對矩陣ε進行卷積、池化操作,卷積核的大小為ω∈Rl×k,對l個詞大小的窗口進行卷積操作,生成一個新的特征圖:

其中,?是卷積操作,b是偏置向量,ρ是一個非線性函數,本文使用Relu 函數。在實驗中使用了不同大小的卷積核來提取特征。通過卷積操作后,得到新的特征圖為:


其中,Wo、bo是輸出層的權重和偏置。σ依據類別的個數不同,選擇sigmoid或者softmax函數。
3.3.1 判別器預訓練
在生成器預訓練收斂后,利用生成器生成的評論文本來預訓練文本判別器和等級判別器。
在文本判別器D?模型中,輸入的序列是真實評論文本和生成的評論文本,有真假兩個類別。通過CNN 網絡分類,在輸出層就可以得到生成的評論文本為真的概率。在優化文本判別器時,利用最小化交叉熵作為目標函數:

在等級判別器gradeφ模型中,輸入的序列是生成的評論文本,分類的類別個數是音樂評級的等級個數,在本文中,有3 個等級。通過CNN 網絡分類,在輸出層利用softmax得到生成的評論文本在評級的各等級下的概率分布。
在優化等級判別器時,因為各個等級之間有順序關系,采用最小均方差(mean-square error,MSE)作為目標函數:

其中,gi是第i個評論文本對應作品的真實評級,是評論文本被等級判別器最大概率預測的等級。
3.3.2 策略梯度學習
在策略梯度學習階段,當前狀態為st-1,生成下一個詞ct時,文本判別器判斷為真時得到的反饋記為等級判別器判斷其等級為真實等級對應的反饋記為
在時刻t時,為了衡量下一個詞ct的反饋,采用蒙特卡洛搜索方法,基于當前已經生成的詞和下一個詞ct搜索得到N個完整句子,由文本判別器和等級判別器對這些完整句子進行判別。將這N個句子分別輸入到文本判別器和等級判別器中,將其判斷為真實文本的概率N)求平均,將其判斷為真實評級的概率1,2,…,N)求平均。這兩個值分別作為反饋和
生成器生成的評論文本用來訓練文本判別器和等級判別器,由二者共同作用得到反饋用于訓練生成器。因此在文本判別器D?和等級判別器gradeφ參數更新后,就可以用來更新生成器Gθ。生成器Gθ是通過策略梯度學習的方法來訓練,目標函數為Jθ,使目標函數最大化,就可以更新參數θ。Jθ的梯度公式為:

在式(10)的基礎上,可以去掉期望項,構造一個無偏估計再繼續推導:

其中,C1:t-1是生成器生成評論文本過程中的中間值,期望值在生成器生成過程中通過采樣方法近似得到,則生成器Gθ的參數θ更新為:

其中,αh表示學習率。
4.1.1 實驗數據
實驗數據集是來自StarMaker 在線唱歌平臺上2017年12月60 000個作品的評論文本信息和作品的音樂等級。音樂等級是根據作品中歌手的音準系統自動打分,并將分數分為3 個等級,這3 個等級就是本文所指的音樂評級的等級。候選詞表中每個詞的詞向量利用這些評論文本基于word2vec 模型訓練。相關評論文本包括作品中歌手其他作品的評論文本和與作品中所唱歌曲名相同的其他音樂作品的評論文本,這些選取的相關評論文本的音樂作品的音樂等級都與要生成評論的作品相同。在3 個等級中分別選取15 000 個作品作為訓練集,每個音樂作品中選取5條詞數小于25的相關評論文本作為輸入。剩下的作品作為測試集V。
4.1.2 訓練設置
在實驗中,文本判別器的訓練集由類別為0的生成評論文本和類別為1 的來自訓練集的真實評論文本組成,卷積核的大小分別為3、5、10、15,卷積核的數量分別為100、200、100、160。等級判別器是由生成的評論文本和來自訓練集的真實音樂等級組成,卷積核的大小分別為3、5、10、15,卷積核的數量分別為100、200、100、160。使用Dropout[15]和L2正則化來避免過擬合。
為了評估GradeGAN模型生成評論文本的性能,將此模型與以下方法進行比較:
(1)Seq2Seq 模型[3]:使用相關評論作為輸入,生成評論文本。
(2)SeqGAN 模型[2]:在Seq2Seq 模型的基礎上,加入判別結構。
(3)SentiGAN 模型[9]:不同等級作品文本信息輸入到不同的生成器中,文本判別器是一個類別為不同等級數的多類別文本判別器。
4.2.1 生成評論文本的準確度
使用Rouge[16]中評估指標計算生成的評論文本和真實評論文本之間重疊單元的數量,用于評價生成評論文本的準確性。

其中,gramn表示長度為n的n-gram,{Reference}表示真實評論文本,Countmatch(gramn)表示生成文本和真實文本中同時出現gramn的個數。Count(gramn)表示真實文本中gramn的個數。Rouge-N是基于召回率的方法,因此分母是真實文本集合中所有n-gram的個數。
在實驗中,分別用Rouge-1、Rouge-2 和Rouge-L這3個指標來評估生成評論文本的準確性,實驗結果如表1所示。從中可以看出,GradeGAN模型生成評論文本的準確性最高,相比于SeqGAN模型,GradeGAN模型在加入等級判別器后,使得生成文本的準確性提高了很多。

Table 1 Comparison of accuracy of generated comment texts表1 生成評論文本的準確性對比
4.2.2 生成評論文本的流暢度
使用語言建模訓練工具SRILM(SRI language model)[17]來評測生成文本的流暢度。SRILM 使用訓練的語言模型計算生成句子的困惑度(perplexity)。困惑度越低,說明生成文本的流暢度越高。實驗結果如圖2所示,從圖2中可以看出,GradeGAN模型生成評論文本的流暢度明顯高于其他模型。

Fig.2 Comparison of fluency of generated comment texts圖2 生成評論文本的流暢度對比
4.2.3 生成評論文本的多樣性
希望生成的評論文本具有多樣性,且在不同的音樂等級下,生成的評論文本具有差異。計算評論文本多樣性的方法如下:
在測試數據V中,測量生成評論兩兩之間的Rouge 值,再求平均,得到整個生成評論數據集的相似性,1減去這個相似性,就得到生成評論的多樣性。

首先,基于3 個不同的指標Diversity-Rouge-1、Diversity-Rouge-2、Diversity-Rouge-L來評估生成評論文本的整體多樣性,結果如表2所示。從表2中可以看出,GradeGAN 模型的整體多樣性要比Seq2Seq和SeqGAN 模型高,說明模型在加入等級判別器后,生成評論文本的多樣性提高了很多。

Table 2 Comparison of overall diversity of generated comment texts表2 生成評論文本的整體多樣性對比
與SentiGAN 模型相比,本文所提模型多樣性在兩個指標上略低,在一個指標上略高,但準確度高出很多。因為SentiGAN模型主要是通過不同的生成器來生成不同類別的文本,生成器在生成文本的過程中通過最小化生成期望來達到生成文本多樣性的目的,這樣導致生成的文本的準確性降低。而本文認為相比多樣性的提升不應該以犧牲準確性為代價,因此所提模型在準確度和多樣性兩方面進行平衡。
其次,基于Diversity-Rouge-L這個指標來評估在不同音樂等級下生成評論文本的多樣性,結果如表3所示。從表3中可以看出,當音樂等級越高時,GradeGAN模型生成評論文本的多樣性越高,這與真實數據是吻合的。在StarMaker 在線唱歌平臺中,當音樂等級是1時,評論文本大都是It's ok或thank you這類重復文本,當音樂等級是3 時,評論文本則更加多樣,如You have a beautiful voice 或Looking forward to more music works from you等帶有個人情感和想法的這類文本。從表3中可以看出,其他模型無法做到當音樂等級越高時,多樣性越高。

Table 3 Diversity comparison of generated comment texts under different performance grades表3 不同音樂等級下生成評論文本的多樣性對比
本文研究在線唱歌平臺上為音樂作品自動生成評論文本的方法,提出了考慮作品的歌唱表現評級信息的文本生成模型——GradeGAN,利用文本判別器和等級判別器共同指導生成器生成文本。在真實數據集上的實驗表明,GradeGAN模型相比已有的相關模型具有更高的準確性,同時具有良好的多樣性,同時可以針對不同等級的作品生成不同的文本。本文所提方法不僅適用于音樂作品的評論文本生成,也適用于其他應用場景,例如生成電影評論。在電影沒有評論或者評論較少的情況下,利用GradeGAN模型根據電影評分和電影相關文本信息自動生成電影評論文本。