NLP迎來了黃金時代

時鐘撥回到20年前。

那一年,我以機器翻譯方向的博士畢業,到幾家單位應聘。當年,畢業的博士還很少。因此,應聘單位對我似乎還是網開一面,這導致我經歷的應聘過程都十分輕鬆短暫。幾個單位基本只關心兩個問題:第一,“你是博士?“,第二,“你會C++嗎?“ 當得到肯定的答覆之後,對方就給了offer。雖然這麼容易拿到了offer,但其實我並不開心,因爲他們並不關心我的博士研究方向,也不關心我今後做什麼。我自己很不甘心也覺得不太靠譜,畢竟在專業方向上做了這麼多年,丟掉實在可惜,於是我拒絕了這些offer,選擇留在了研究所繼續從事NLP相關的科研工作。

走到今天來看,我確實是幸運的:NLP歷盡低谷,終於迎來了大爆發的“黃金”時代!

NLP(自然語言處理,Natural Language Processing)是利用計算機對人類的語言文字進行處理。由於語言文字是人類交流溝通的最基本方式,因此NLP也是最典型的AI領域之一,被譽爲“人工智能皇冠上的明珠”。幾百年來,多少人爲了摘得這顆“明珠”,付出了艱苦的努力。個人認爲,和AI的發展類似,NLP的發展也同樣經歷瞭如下的三個階段:

第一個階段的NLP主要基於規則。我讀博士的那幾年,現在看上去好像正好處於這個時代後期(這一點純屬不成熟的個人看法。不少人仍然在繼續探索規則方法。規則方法在很多領域仍然具有很強的生命力)。通過人工或者自動半自動地收集規則,機器可以完成一系列NLP任務。以機器翻譯爲例,只要輸入的新句子能夠匹配上事先設定或得到的規則,並且假定這些規則是正確的話,系統可能會輸出一條看似還不錯的結果。但如果上述任一條件不滿足的話,系統可能會輸出讓人不知所云的結果。而自然語言太過複雜,通過有限的規則來刻畫,幾乎是不可能的事情。因此,基於規則的方法可能在某個特定的小領域能夠取得不錯的結果,一旦推廣到更寬泛的領域,效果往往很不理想。

**第二個階段的NLP主要基於統計,更明確地說,基於數據+統計機器學習方法。**進入二十一世紀,計算機硬件能力的快速提升和數據量的增長,使得數據驅動的方法悄然成爲主流。很多基於統計機器學習的NLP方法其實早就在基於規則的年代被人提出,但一直到這個階段才爲人廣爲所知、廣爲人用。最著名的是IBM的統計機器翻譯模型,該模型最早提出於1990年,然而十幾年後才真正大放異彩。正是數據+算力驅動了這一變革過程。在這個階段的NLP當中,人工特徵工程+統計機器學習成了很多NLP任務的標配。不論是搜索引擎還是統計機器翻譯,都基本如此。然而,這些傳統統計機器學習的方法的一個最大問題是特徵工程,即好的特徵需要人類不斷的探索和努力,有時歸結於靈感或者只是運氣,讓人無法捉摸。雖然有些特定任務中的人類特徵總結得還相當不錯,但是一旦換一個任務這些特徵可能就完全無法使用。“找特徵”成了基於統計的NLP任務的最主要工作。

**第三個階段的NLP主要是基於深度學習。本質上說,深度學習也是一種統計機器學習方法,因此這個階段本質上也是數據+統計機器學習。但是,深度學習已經在很多領域表現優異,其名頭已經蓋過傳統的統計機器學習。因此,說這個階段基於深度學習毫不爲過。上一個階段最讓人頭疼的就是特徵問題,本質上就是NLP的對象(字、詞、短語、句子、段落、篇章等)如何表示的問題。而深度學習的最大好處就是能夠自動學到對象的表示,從而避免了人工特徵工程的大工作量和難以保證的結果。**爲了學到對象的較好的表示,深度學習方法通常一方面採用深層的神經網絡方法來學習,另一方面需要更大量的數據。因此,大量硬件的投入對於這個階段來說通常也必不可少。

儘管存在可解釋性差、運算代價巨大等問題,但深度學習NLP帶來了大量NLP任務效果的提升。就以機器翻譯爲例,統計機器翻譯已經在效果上較大幅度領先於早先的規則機器翻譯系統,而基於深度神經網絡的機器翻譯又將效果再度提高了一個臺階。在很多其他NLP任務上,基於深度學習的方法也基本領先於傳統方法。機器翻譯和機器閱讀等任務甚至都號稱“超過了人類”。造成這種結果的基本原因就是深度學習這個“黑盒子”似乎找到了以往人類沒有發現的好用的特徵,這些特徵獨自或者和人類提出的特徵結合能夠發揮出更好的效果。

這個階段帶來的一個重要變化是文本生成任務突然間成爲可能。大量的自動寫詩、自動寫稿、自動寫標題等算法系統紛涌而出,這是以往的階段難以見到的。基於深度學習的NLP使得很多任務都可以抽象爲編碼-解碼問題。表面的文本可以編碼爲內部的特徵表示,而從特徵表示又可以解碼爲表面的文本。這種極簡抽象正好代表了NLP的兩個任務,前者叫自然語言理解(Natural Language Understanding, NLU),後者叫自然語言生成(Natural Language Generation, NLG)。這種抽象使得很多原來沒有太多辦法的生成任務至少具有想象的可能。以自動摘要這一任務爲例,儘管前人嘗試了很多生成式摘要方法,但基本結論還是抽取式摘要方法更佳。有了深度學習之後,可以將原文編碼爲特徵表示,然後再基於該表示生成一個更短的文本,從而得到生成式摘要。另一個任務是圖文生成或文圖生成,即可以根據圖像來生成一篇文本,或者基於文本來生成圖像,從而實現跨模態的處理。還有,如果不同語言的特徵表示存在對齊的可能性(很多研究工作組都在嘗試),多語言生成問題也會迎刃而解。

**深度學習NLP帶來的另一個重要變化是端到端模式的流行。傳統NLP任務大都基於流水線模式,即任務會逐層分解,通過多層模塊之間的有序調用完成某個任務。比如傳統的語音翻譯過程一般爲:先將輸入語音轉化爲源文本,然後將源文本翻譯成目標文本,最後將目標文本轉換成語音進行輸出。這種流水線方式每一個前面步驟的錯誤都有可能延續到後續模塊,從而造成錯誤的級聯效應。**Google於2019年給出了一種端到端的語音翻譯方法,引起了學術界和工業界的廣泛關注。從原理上來說,這種端到端的方法可以避免逐層錯誤傳播的缺點,能夠獲得更好的效果。目前,很多學術機構和公司都在跟進這一具有革命性的方法。當然,端到端的模式已經在其他一些NLP任務中獲得了較好的效果,這種直達任務的模式有可能會成爲大多數NLP任務的新選擇。

近年來深度學習NLP本身也出現了新變化,**最典型的就是預訓練+微調的任務處理方式變得十分流行。**預訓練最早起源於圖像處理領域,大家可以在ImageNet上訓練出基本的模型,然後將該模型用於新任務中,而只需要對模型進行微調。這種思路也被引入到NLP任務中,出現了ELMo、GPT2、BERT等預訓練模型。這種做法至少有兩個好處。其一,新任務可以減少對數據的依賴,因爲預訓練模型是基於大量數據得到的,其中編碼了大量重要信息。其二,減少了訓練代價,新任務不需要從頭訓練。上述預訓練模型取得了非常令人鼓舞的結果,很多模型在很多NLP任務中都取得了更好的結果。預訓練模型的競賽還一直在繼續。

但基於深度學習的NLP方法也有很多不足。可解釋性和運算代價大是這類方法的通用性問題,這裏就不再展開論述。當然,也是因爲可解釋性問題的存在,NLP中學到的特徵表示到底表徵的是什麼東西目前還不太清楚,這使得深度學習NLP方法可控性不強。以文本生成爲例,用深度學習生成人類可控的文本目前看還是個大難題。

不管如何,NLP迎來了屬於自己的黃金時代。

這個時代不僅僅有搜索、推薦、廣告、信息流、社交網絡等“老樹開新花”的領域,也包括人機對話、機器閱讀、自動寫作等充滿生命力的新興領域。NLP在內容相關的各種應用中都扮演着極其重要的角色。

NLP技術的發展不能離開場景,場景和技術的有效結合才能充分發揮出NLP技術的能力。身在工業界,我每一天都爲NLP技術和場景的各種可能組合激動不已。終於等到你,還好我沒放棄!

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