一文縱覽自然語言生成的發展

摘要: 從馬爾科夫鏈到Transformer,本文帶您縱覽自然語言生成的發展。

人們對人工智能的興趣隨着科幻電影的誕生和發展變得愈發濃厚。每當我們聽到“人工智能”這個詞,便會聯想到《終結者》、《黑客帝國》、《我,機器人》等電影。

機器人具有獨立思考的能力在目前看來還比較遙遠,但機器學習和自然語言理解領域已經在過去幾年取得了重大進展。個人助理(Siri/Alexa)、聊天機器人及問答機器人等應用程序正悄無聲息地改變着人們的生活方式。

人們需要理解大量有歧義且結構多變的語言並從中獲取意義,這促使自然語言理解(Natural Language Understanding,NLU)和自然語言生成(Natural Language Generation, NLG)成爲人工智能中發展最快的應用。Gartner預測,“到2019年,自然語言生成將是90%的現代BI和分析平臺的標準特徵”。本文將回顧NLG的歷史,並展望其未來。

什麼是NLG?

NLG通過預測句子中的下一個單詞傳達信息。使用語言模型能夠預測下一個可能出現的單詞,也就是找到單詞在序列中的概率分佈。舉個例子,預測“I need to learn how to __”的下一個單詞,語言模型會計算下一個單詞,如“write”,“drive”可能出現的概率。RNNs及LSTMs等高級神經網絡能夠處理較長的句子,提高了語言模型預測的準確性。

馬爾可夫鏈(Markov Chains)

馬爾可夫鏈是最早用於語言生成的算法。它通過當前單詞預測句子中的下一個單詞。舉個例子,模型通過下面兩個句子進行訓練,“I drink coffee in the morning”和“I eat sandwiches with tea”。“drink”後面出現“coffee”的概率是100%,“I”後面出現“eat”和“drink”的概率分別爲50%。馬爾可夫鏈在計算下一個單詞出現概率的時候,會把每個單詞之間的關係考慮進去。該模型最早用於爲智能手機輸入句子提供下一個單詞生成建議。

但由於僅注意當前單詞,馬爾可夫模型無法探測當前單詞與句子中其它單詞的關係以及句子的結構,使得預測結果不夠準確,在許多應用場景中受限。

循環神經網絡(Recurrent Neural Network, RNN)

神經網絡啓發於人類大腦的工作原理,通過對輸入和輸出數據之間的非線性關係進行建模,爲計算提供了一種新的方法,用於語言建模即稱爲神經語言建模。

RNN是神經網絡的一種,它能夠捕捉輸入數據的序列特徵。通過前饋網絡處理序列中的每一個item,並將模型的輸出作爲序列的next item,此過程能夠幫助存儲前面每步的信息。這樣的“記憶”使得RNN在語言生成中有着出色的表現,因爲記住過去的信息能夠幫助更好的預測未來。與馬爾可夫鏈不同的是,在進行預測時,RNN不僅關注當前單詞,還關注已經處理過的單詞。

利用RNN進行語言生成

在RNN的每一次迭代中,模型都能在其“記憶”單元中存儲出現過的單詞,以及計算下一個單詞出現的概率。舉個例子,有“We need to rent a __”,此時要預測句子中的下一個單詞。模型能夠記住在詞典中每個單詞隨前面單詞出現的概率。在上述例子中,“house”或者“car”比“river”和“dinner”有着更高的出現概率。“記憶”單元選擇概率更高的單詞,並對其進行排序,然後進行下一次迭代。

但RNN有一個很大的問題——梯度消失。隨着序列長度的增加,RNNs不能存儲那些很久前遇到的單詞,便只能根據最近的單詞進行預測。這使得RNNs無法應用於生成連貫的長句子。

長短期記憶網絡(Long Short-Term Memory, LSTM)

長短期記憶網絡是RNNs的變體,比vanilla RNNs更適合處理長序列。LSTM應用廣泛,其與RNNs的結構類似。不同的是,RNNs只有一個簡單的層結構,而LSTM內部有4個層結構。一個LSTM由4部分組成:cell,輸入門,輸出門以及遺忘門。

利用LSTM進行語言生成

示例,輸入句子爲“I am from Spain. I am fluent in ___”。爲了正確預測出下一個單詞“Spanish”,LSTM會更加關注上一句中的“Spain”並且利用cell對其進行記憶。在處理序列時cell會對獲取的信息進行存儲,這些信息會用於預測下一個單詞。當遇到句號時,遺忘門會意識到句子中的上下文發生了改變,並忽略當前cell中存儲的狀態信息,換句話說,遺忘門的作用是讓循環神經網絡“忘記”之前沒有用到的信息。

LSTM及其變體能夠解決梯度消失問題並生成連貫的句子。但是,LSTM也有其侷限性:計算要求高,難以訓練。

Transformer

Transformer在2017年,由Google團隊在論文《Attention Is All You Need》中首次提出,並涉及到一種名爲“self-attention mechanism”的新方法。Transformers目前廣泛用於解決NLP問題,例如語言建模,機器翻譯以及文本生成等。Transformer模型由一組編碼器和一組解碼器組成,前者負責處理任意長度的輸入,後者負責輸出生成的句子。

在上述示例中,編碼器處理輸入句子,併爲其生成表示。解碼器利用表示生成用於輸出的句子。每個單詞最初的表示或嵌入由空心圓表示。接下來,Transformer模型利用self-attention機制獲取所有其他單詞之間的關係,生成每個單詞的新表示,如圖中的實心圓。對每個單詞重複該步驟,連續生成新的表示,類似地,解碼器從左往右依次生成單詞。

與LSTMs不同的是,Transformer需要的步驟少,應用self-attention機制能夠在不考慮單詞位置的情況下,直接捕捉句子中所有單詞之間的關係。

最近,許多研究學者對vanilla transformer模型進行了改進,提升了速度與精度。在2018年,谷歌提出BERT模型,此模型在各種NLP任務中均取得了最先進的結果。在2019年,OpenAI發佈了一個基於transformer的語言模型,只需要輸入幾行文本就可以生成長篇文章。

利用Transformers進行語言生成

Transformer模型同樣可以用於語言生成,最著名的要數OpenAI提出的GPT-2語言模型。該模型通過將注意力集中在與預測下一個單詞相關的單詞上,更好的學習並預測句子中的下一個單詞。

使用Transformer進行文本生成與機器翻譯所遵循的結構類似。舉個例子,“Her gown with the dots that are pink, white and ____”。通過利用self-attention機制對前面所出現的顏色(白色和粉色)進行分析,理解需要預測的單詞也是一種顏色,此時模型的輸出爲“blue”。Self-attention能夠幫助模型選擇性地關注每一個單詞在句子中擔任的角色,而不僅僅是通過循壞記住些許特徵。

語言生成的未來

本文帶我們縱覽了語言生成的發展,從利用馬爾可夫鏈預測下一個單詞,到使用self-attention生成連貫的文章。但是,我們仍處於生成語言建模的初期,今後還會往自主生成文本的方向邁進。生成模型也將用於圖像、視頻、音頻等內容的開發。



本文作者:【方向】

閱讀原文

本文爲雲棲社區原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章