一文了解自然語言生成演變史!

自然語言生成(Natural Language Generation,NLG)是自然語言處理的一部分,從知識庫或邏輯形式等等機器表述系統去生成自然語言。實際上,自然語言生成出現已久,至今已有 71 年了。早在 1948 年,Shannon 就把離散馬爾科夫過程的概率模型應用於描述語言的自動機。但商業自然語言生成技術知道最近才變得普及。但是,你瞭解自然語言生成的演變史嗎?

自從科幻電影誕生以來,社會上就對人工智能十分著迷。每當我們聽到“人工智能”這個詞的時候,浮現在我們腦海的,往往是科幻電影中那樣的未來機器人,比如《Terminator》(《終結者》)、《The Matrix》(《黑客帝國》)和《I, Robot》(《我,機器人》) 等。

一文了解自然語言生成演變史!


儘管我們離能夠獨立思考的機器人尚有幾年的時間,但在過去的幾年裡,機器學習和自然語言理解領域已經取得了重大進展。個人助理(Siri/Alexa)、聊天機器人和問答機器人等應用程序正在真正徹底改變我們與機器的交互方式,並開始滲透我們的日常生活。

自然語言理解(Natural Language Understanding,NLU)和自然語言生成(Natural Language Generation,NLG)是人工智能發展最快的應用之一,因為人們越來越需要從語言中理解並推導出意義,而語言的特點是,有許多歧義和多樣的結構。據 Gartner 稱,“到 2019 年,自然語言生成將成為 90% 的現代商業智能和分析平臺的標準功能”。在本文中,我們將討論自然語言生成成立之初的簡史,以及它在未來幾年的發展方向。

什麼是自然語言生成?

語言生成的目標是通過預測句子中的下一個單詞來傳達信息。使用語言模型可以解決(在數百萬種可能性中)哪個單詞可能被預測的問題,語言模型是對單詞序列的概率分佈。語言模型可以在字符級別、n 元語法級別、句子級別甚至段落級別構建。例如,為了預測

I need to learn how to __ 之後的下一個單詞,該模型為下一個可能的單詞集分配了一個概率,可以是 writedrive 等等。神經網絡(如遞歸神經網絡和長短期記憶網絡)的最新進展是的長句的處理成為可能,顯著提高了語言模型的正確率。

馬爾科夫鏈

馬爾科夫鏈是最早用於語言生成的算法之一。它們僅通過使用當前單詞來預測句子中的下一個單詞。例如,如果模型僅適用以下句子進行訓練:I drink coffee in the morningI eat sanwiches with tea,那麼,它預測 coffee 會跟隨 drink的可能性是 100%,而 I 跟隨 drink 的可能性是 50%,跟隨 eat 的可能性也是 50%。馬爾科夫鏈考慮到每一個唯一單詞之間的關係來計算下一個單詞的概率。在早期版本的智能手機輸入法中,馬爾科夫鏈用於為句子中的下一個單詞生成建議。

一文了解自然語言生成演變史!


然而,由於馬爾科夫模型只關注當前單詞,因此會失去句子中前面單詞的所有上下文和結構,從而有可能會導致錯誤的預測,如此一來,就限制了它們在許多生成場景中的適用性。

遞歸神經網絡(RNN)

神經網絡是受人類大腦運作的啟發而建立的模型,通過對輸入和輸出之間的非線性關係建模,為計算提供了另一種方法,它們在語言建模中的應用被稱為神經語言建模。

遞歸神經網絡是一種能夠利用輸入的順序性質的神經網絡。它通過前饋網絡傳遞序列的每一項,並將模型的輸出作為序列中下一項的輸入,從而能夠允許存儲來自前面步驟的信息。遞歸神經網絡所有用的“記憶”能力使得它們非常適合語言生成,因為他們可以隨著時間的推移記住對話的上下文。遞歸神經網絡和馬爾科夫鏈不同之處在於,它們也會觀察之前看到的單詞(而馬爾科夫鏈只觀察前面的單詞)來進行預測。

一文了解自然語言生成演變史!


用於語言生成的遞歸神經網絡

在遞歸神經網絡的每次迭代中,模型都會將之前遇到的單詞存儲在內存中,並計算下一個單詞的概率。例如,如果模型生成了文本 We need to rent a __,那麼它現在就必須計算出這句子中的下一個單詞。對於詞典的每個單詞,模型根據它所看到的前一個單詞來分配概率。在我們的這個示例中,housecar這兩個詞的概率要比riverdinner這樣的單詞高得多。然後選擇概率最高的單詞並將其存儲在內存中,然後模型繼續進行下一次迭代。

一文了解自然語言生成演變史!


遞歸神經網絡存在一個主要的限制:梯度消失問題。隨著序列的長度增加,遞歸神經網絡不能存儲在句子後面很遠的地方遇到的單詞,且只能根據最近的單詞進行預測。這就限制了遞歸神經網絡在生成聽起來連貫的長句的應用。

長短期記憶網絡(LSTM)

一文了解自然語言生成演變史!


基於長短期記憶網絡的神經網絡是遞歸神經網絡的一個變種,它比普通的遞歸神經網絡能夠更正確地處理輸入序列中的長期依賴(long-range dependencies)問題。它們被用於各種各樣的問題中。長短期記憶網絡具有類似遞歸神經網絡的鏈狀結構;然而,它們是由四層神經網絡組成,而不是遞歸神經網絡那樣的單層網絡。長短期記憶網絡由單元、輸入門、輸出門和遺忘門四部分組成。這樣遞歸神經網絡可以通過調節單元內外的信息流,在任意時間間隔內記住或忘記單詞。

用於語言生成的長短期記憶網絡

一文了解自然語言生成演變史!


將下面這句話作為模型的輸入:I am from Spain. I am fluent in __. 為了正確地預測下一個單詞為Spanish,該模型將重點放在前一句中的Spain 一詞上,並利用單元記憶來“記住”它。該信息在處理序列時由單元存儲,然後用於預測下一個單詞。當遇到句號時,遺忘門會意識到句子的上下文可能有所變化,當前單元狀態信息就可以被忽略。這樣網絡就可以選擇性地只跟蹤相關信息,同時最小化梯度消失問題,模型就能夠在更長的時間內記住信息。

長短期記憶網絡及其變體似乎就是消除梯度來產生連貫句子問題的答案。但是,由於從以前的單元到當前單元仍然有一條複雜的順序路徑,因此可以保存多少信息還是有限制的。如此一來,長短期記憶網絡能夠記住的序列長度就限制在幾百個單詞以內。另外一個缺陷就是,由於計算要求很高,因此長短期網絡很難訓練。由於順序性,它們很難並行化,這就限制了它們利用現代計算設備(如 GPU、TPU 之類)的能力。

Transformer

Transformer 最初是在 Google 論文《Attention Is All You Need》引入的,它提出了“自注意力機制”(self-attention mechanism)的新方法。Transformer 目前被廣泛應用於各種自然語言處理任務,如語言建模、機器翻譯和文本生成。Transformer 由一組編碼器和一組解碼器組成,前者處理任意長度的輸入,後者輸出生成的句子。

一文了解自然語言生成演變史!


在上面的例子中,編碼器處理輸入句子併為其生成表示。解碼器使用這種表示逐詞創建輸出句子。每個單詞的出事表示 / 嵌入由未填充的圓圈表示。然後,模型使用自注意聚合來自所有其他單詞的信息,以生成每個單詞的新表示,由填充的圓圈表示,並由整個上下文通知。然後對所有單詞並行重複該步驟多次,接連生成新的表示。類似地,解碼器每次從左到右生成一個單詞。它不僅關注先前創建的其他單詞,還關注編碼器開發的最終表示。

與長短期記憶網絡不同的是,Transformer 只執行少量的、恆定數量的步驟,同時應用自注意力機制。這種機制直接模擬句子中所有單詞之間的關係,而不考慮它們各自的位置。當模型處理輸入序列中的每個單詞時,自注意力機制允許模型查看輸入序列的其他相關部分,以便更好地對單詞進行編碼。它使用多個注意力頭(attention head),擴展了模型關注不同位置的能力,而無需考慮它們在序列中的距離。

近年來,對普通 Transformer 架構進行了一些改進,顯著提高了它們的速度和正確度。2018 年,Google 發佈了一篇關於 Transformer(BERT)雙向編碼器表示的論文,該論文為各種自然語言處理生成了最先進的結果。同樣,2019 年,OpenAI 發佈了一個基於 Transformer 的語言模型,它有大約 15 億個參數,只需寥寥可數的幾行輸入文本即可生成長篇連貫的文章。

一文了解自然語言生成演變史!


用於語言生成的 Transformer

最近,Transformer 也用於進行語言生成。其中最著名的例子之一是 OpenAI 的 GPT-2 語言模型。該模型學習預測句子中的下一個單詞,是通過將注意力集中在於預測下一個單詞相關的單詞上進行學習的。

一文了解自然語言生成演變史!


Transformer 生成文本是基於類似於機器翻譯的結構。如果我們舉一個例句: Her gown with the dots that are pink, white and __.模型將會預測下一個單詞是blue,因為它通過自注意力機制將列表中的前一個單詞分析為顏色(white 和 pink),並理解預測的單詞也應該是一種顏色。自注意力允許模型有選擇地關注每個單詞的句子的不同部分,而不是僅僅記住遞歸塊(recurrent block)(在遞歸神經網絡和長短期記憶網絡中)的一些特徵,這些特徵大部分不會用於幾個塊中。這有助於模型能夠回憶起前面句子的更多特徵,並得到更準確和連貫的預測。與以前的模型不同,Transformer 可以在上下文中使用所有單詞的標識,而無需將所有信息壓縮為固定長度的表示。這種架構允許 Transformer 在更長的句子中保留信息,而不會顯著增加計算需求。它們在不需要進行特定域修改的情況下,跨域的性能要比以前的模型表現得更好。

語言生成的未來

在本文中,我們看到了語言生成的演變過程,從使用簡單的馬爾科夫鏈生成句子,到使用自注意力機制的模型生成更長的連貫文本。然而,我們仍然處於生成語言建模的早期,而 Transformer 只是朝著真正自主文本生成方向邁出的一步。除此之外,生成模型也正在開發其他類型的內容,如圖像、視頻和音頻等。這開啟了將這些模型與生成文本模型集成的可能性,從而開發出具有音頻 / 視頻界面的高級個人助理。

然而,作為一個社會,我們需要謹慎地應用生成模型,因為它們為在網上生成虛假新聞、虛假評論和冒充他人開闢了多種可能性。OpenAI 決定不發佈 GPT-2 模型,因為擔心被濫用。這反映了這麼一個事實:我們現在已進入一個語言模型強大到足以引起關注的時代。

生成模型有望改變我們的生活;然而,它們也是一把雙刃劍。我們必須對這些模型進行適度的審查,無論是通過研究機構還是政府監管。在未來幾年裡,這一領域肯定還會取得更多進展。不管結果如何,展望未來,應該終會有激動人心的一刻!

原文鏈接:

https://medium.com/sfu-big-data/evolution-of-natural-language-generation-c5d7295d6517


分享到:


相關文章: