車萬翔/CHE Wanxiang,劉挺/LIU Ting
(哈爾濱工業大學,中國哈爾濱150001)
自然語言通常指的是人類語言(本文特指文本符號,而非語音信號),是人類思維的載體和交流的基本工具,也是人類區別于動物的根本標志,更是人類智能發展的外在體現形式之一。自然語言處理(NLP)主要研究用計算機來理解和生成自然語言的各種理論和方法,屬于人工智能領域的一個重要甚至核心的分支。人工智能應用領域的快速拓展對自然語言處理提出了巨大的應用需求。同時,自然語言處理研究為人們更深刻地理解語言的機理和社會的機制提供了一條重要的途徑,因此具有重要的科學意義。
目前,人們普遍認為人工智能的發展先后經歷了運算智能、感知智能、認知智能3個階段。其中,運算智能關注的是機器的基礎運算和存儲能力。在這方面,機器已經完勝人類。感知智能則強調機器的模式識別能力,如語音的識別和圖像的識別,目前機器在感知智能上的水平基本達到甚至超過了人類的水平。然而,在涉及自然語言處理以及常識建模和推理等研究的認知智能上,機器與人類還有很大的差距。
為什么計算機在處理自然語言時會如此困難呢?這主要是因為自然語言具有高度的抽象性、近乎無窮變化的語義組合性、無處不在的歧義性和持續的進化性,并且理解語言通常需要背景知識和推理能力等。由于面臨以上問題,自然語言處理已成為目前制約人工智能取得更大突破和更廣泛應用的瓶頸之一。包括圖靈獎得主在內的多位知名學者都很關注自然語言處理,甚至圖靈本人,也將驗證機器是否具有智能的手段(即“圖靈測試”)應用在自然語言處理上。因此,自然語言處理又被譽為“人工智能皇冠上的明珠”。
自然語言處理的本質是形式與意義的多對多映射關系。其中,形式和意義的空間都近乎無限。那么,如何才能找到正確的映射關系呢?利用“知識”進行約束是唯一有效的辦法。因此,如何獲取和利用“知識”成為解決自然語言處理問題的關鍵科學問題。
應用于自然語言處理的知識來源主要有三大類:狹義知識、算法和數據。表1對這三大類知識來源進行了總結。

表1 自然語言處理中的三大類知識來源
第一大類知識是狹義知識,即通過規則或詞典等形式由人工定義的顯性知識,也就是人們通常所理解的知識類型。具體來講,狹義知識又包括3類,即語言知識、常識知識和世界知識。其中,語言知識是指對語言的詞法、句法或語義進行的定義或描述。例如,WordNet是由普林斯頓大學編寫的英文語義詞典,其主要特色是定義了同義詞集合。每個同義詞集合由具有相同意義的詞組成。此外,WordNet還為每個同義詞集合提供簡短的釋義,同時不同同義詞集合之間還具有一定的語義關系。常識知識是指人們基于共同經驗而獲得的基本知識。常識往往是不言自明的,并沒有記錄為文字,所以很難從文本中挖掘到。著名的Cyc項目試圖將上百萬條知識編碼成機器可用的形式,用以表示人類常識。世界知識包括實體、實體屬性、實體之間的關系等。這類知識往往通過知識圖譜的形式加以描述和存儲。
第二大類知識是算法。算法的本質是解決問題的過程或者方法,它也是一種知識類型。機器學習算法則可以看作人為定義的函數。雖然這種函數的參數是由機器自動學習獲得的,但是函數的類型仍然由人類來定義。這在某種程度上反映了設計者對待解決問題的認知,具有一定的歸納偏執性。例如,卷積神經網絡(CNN)就利用了識別對象的平移不變性質。面向各種自然語言處理問題的算法更是和語言知識密切相關。與狹義知識相比,算法知識具有更好的靈活性和動態性。
第三大類知識是數據。數據是機器學習算法的基礎。機器學習算法通常會依賴有標注的數據,需要借助人工方式來為每個輸入標注出相應的輸出結果。由于并沒有具體指明如何從輸入轉換到輸出,因此數據是一種隱性的知識。然而,由人工進行數據標注的方式費時又費力,導致標注數據量往往較小,不足以訓練一個性能優異的機器學習算法。為了解決這一問題,預訓練語言模型可直接利用大量未標注的原始語料,將語言模型作為訓練的目標,即根據歷史的詞序列來預測下一個單詞是什么,或者根據周圍的詞來預測當前的詞是什么。由于未標注數據量近乎無限,因此可以訓練一個性能較好的語言模型,并將該模型的參數作為下游任務模型的初始參數。這樣便可以減少模型對標注數據量的依賴,大幅提高下游任務的準確率。
自然語言處理技術自從誕生以來經歷了以狹義知識、算法和數據為主的3個時期(如圖1所示)。

圖1 自然語言處理的發展歷史
早期的自然語言處理(20世紀50年代到90年代)主要采用基于小規模專家知識的方法(規則、詞典等狹義知識),通過專家總結的符號邏輯知識來處理通用的自然語言。然而,由于自然語言的復雜性,基于理性主義的規則方法在實際應用場景中仍存在一些不足。
20世紀90年代開始,計算機運算速度和存儲容量的快速增加,以及統計學習(淺層機器學習)算法的大量普及,均使得基于小規模語料庫的淺層機器學習算法在自然語言處理領域得以大規模應用。由于語料庫中包含了一些關于語言的知識,基于淺層機器學習算法的自然語言處理方法能夠更加客觀、準確、細致地捕獲語言規律。這一時期,詞法分析、句法分析、信息抽取、機器翻譯、自動問答等領域的研究均取得了一定程度的突破。
盡管如此,基于淺層機器學習算法的自然語言處理技術仍存在明顯的局限性,即需要事先利用經驗性規則將原始的自然語言輸入轉化為機器能夠處理的向量形式。這一轉化過程(也稱為特征提取)需要細致的人工操作和一定的專業知識,因此也被稱為特征工程。
2010年以后,基于深度神經網絡的表示學習方法(也稱深度學習方法)逐漸興起,可以直接端到端地完成各種自然語言處理任務,不再依賴人工設計。這里,表示學習是指機器能根據輸入自動發現可用于識別或分類等任務的表示。具體來講,深度學習模型在結構上通常包含多個處理層。最底層的處理層會接收原始輸入,并對原始輸入進行抽象處理,然后該層后面的每一層都會在前一層的結果上進行更深層次的抽象處理。最后一層的抽象處理結果即為輸入的一個表示,以用于最終的目標任務。其中,抽象處理是由模型內部的參數來控制的,而參數的更新值則是由反向傳播算法根據訓練數據中模型的表現來學習得到的。由此可以看出,深度學習可以有效避免統計學習方法中的人工特征提取操作,自動地發現對目標任務有效的表示。
深度學習方法還能打破不同任務之間的壁壘。傳統淺層機器學習方法需要為不同任務設計不同的特征,而這些特征往往是不通用的。然而,深度學習方法卻能夠將不同任務在相同的向量空間內進行表示,從而具備跨任務遷移的能力。此外,深度學習方法還可以實現跨語言甚至跨模態的遷移,可以綜合利用多項任務、多種語言、多個模態的數據,使得人工智能向更通用的方向邁進一步。
同樣,得益于深度學習技術的快速發展,自然語言處理的另一個主要研究方向——自然語言生成也取得了長足進步。長期以來,自然語言生成的研究幾乎處于停滯狀態:除了使用模板生成一些簡單的語句外,并沒有獲得其他有效的解決辦法。隨著基于深度學習的序列到序列生成框架的提出,這種逐詞文本生成方法全面提升了生成技術的靈活性和實用性,完全革新了機器翻譯、文本摘要、人機對話等技術范式。
雖然深度學習技術能夠大幅提高自然語言處理系統的準確率,但是基于深度學習的算法仍有一個致命的缺點:過度依賴大規模標注數據。對于語音識別、圖像處理等感知類任務,標注數據相對容易獲得。例如,在圖像處理領域,人們已經為上百萬幅圖像標注了相應的類別(如Image Net數據集)。用于語音識別的“語音和文本”平行語料庫標注的時間也有幾十萬小時。然而,自然語言處理具有主觀性特點,它所面對的任務和領域又眾多。這些均使得大規模語料庫標注的時間和人力成本變得很高。因此,自然語言處理的標注數據往往不夠充足,很難滿足深度學習模型訓練的需要。
早期的靜態詞向量預訓練模型和后來的動態詞向量預訓練模型,特別是自2018年以來以BERT、GPT為代表的超大規模預訓練語言模型,都很好地彌補了自然語言處理標注數據不足的缺點。這些模型大大促進了自然語言處理技術的發展,使得包括閱讀理解在內的幾乎所有自然語言處理任務性能都得到了大幅提高,在有些數據集上的性能表現達到甚至超過了人類水平。
模型預訓練是指,首先在一個源任務上訓練一個初始模型,然后在下游任務(也稱目標任務)上繼續對該模型進行精調,從而達到提高下游任務準確率的目的。模型預訓練本質上是遷移學習思想的一種應用。然而,由于同樣需要人工標注,源任務標注數據的規模往往非常有限。那么,如何獲得更大規模的標注數據呢?
實際上,文本自身的順序就是一種天然的標注數據。通過若干連續出現的詞語來預測下一個詞語(又稱語言模型)就可以構成一項源任務。由于圖書、網頁等文本數據的規模近乎無限,因此模型可以非常容易地獲得超大規模的預訓練數據。有人將這種不需要人工標注數據的預訓練學習方法稱為無監督學習方法。其實,這種叫法并不準確。這是因為這種方法的學習過程仍然是有監督的。更準確的叫法應該是自監督學習。
為了能夠刻畫大規模數據中復雜的語言現象,深度學習模型的容量需要足夠大。基于自注意力機制的Transformer模型能夠顯著提升自然語言建模能力,是近年來具有里程碑意義的進展之一。要想在可容忍的時間內在如此大規模的數據上訓練一個超大規模的Transformer模型,就離不開以圖形處理器(GPU)、張量處理器(TPU)為代表的現代并行計算硬件。可以說,超大規模預訓練語言模型完全依賴“蠻力”,在大數據、大模型和大計算資源的加持下,使自然語言處理取得了長足的進步。例如,OpenAI推出的GPT-3擁有1 750億個參數,無須接受任何特定任務的訓練,便可通過小樣本學習來完成10余種文本生成任務(如風格遷移、網頁生成等)。
目前,預訓練模型已經成為了自然語言處理的新范式。它甚至影響了整個人工智能的研究和應用,開啟了人工智能領域“大規模預訓練模型”時代的大門。
在基于淺層機器學習的自然語言處理時期,人們使用高維、離散的向量來表示自然語言。其中,每個詞用獨熱向量來表示,向量維度表示詞的大小(只有一位為1,其余均為0)。然而,這種獨熱向量表示方法無法解決“多詞一義”的問題。也就是說,即便兩個詞含義相近,它們的表示也是截然不同的。例如,“馬鈴薯”和“土豆”會使用兩個不同的獨熱向量表示。假如訓練數據中只出現“土豆”,那么當測試系統中出現“馬鈴薯”時,模型就無法進行正確加權。
語言學家J.R.FIRTH在1957年指出,通過一個詞周圍的詞便可理解該詞的含義,即“觀其伴知其義”。例如,“馬鈴薯”和“土豆”的周圍經常出現“吃”“烹飪”“種植”等,所以這兩個詞就比較相似。因此,可以將一個詞周圍出現過的詞收集起來,構建一個相對更稠密的向量,然后用該向量來表示這個詞。當然,還可以使用降維等技術,用更低維、更稠密的向量來表示詞。
2003年,圖靈獎得主Y.BENGIO首次提出詞嵌入的概念,即直接使用一個低維、稠密、連續的向量來表示詞。那么,如何獲得(即預訓練)一個好的詞嵌入表示呢?對此,可以通過其在下游任務上表現,對向量每一維的數值進行自動設置。除了需要一個下游任務外,還需要針對該任務的大規模訓練數據,以保證模型能覆蓋足夠多的語言現象。然而,由于自然語言的主觀性,很難獲得大規模的標注數據。比如,情感分析數據最多也就幾萬條。好在語言具有“觀其伴知其義”的性質,因此可以通過一個詞周圍的詞,來預測當前的詞,這樣就自然構成了一個“下游任務”。具體的任務可以分為兩類:一類是通過歷史詞序列來預測下一個詞,這類任務又被稱作“語言模型”任務;另一類是利用周圍的詞來預測中間的詞,這類任務類似于“完形填空”任務。各種電子文檔、圖書乃至整個互聯網上的文本數據,都可以作為訓練數據,從而大大增強了詞嵌入表示的學習能力。雖然Y.BENGIO等早在2003年便提出了詞向量概念,并通過語言模型任務對詞向量進行了預訓練,但是直到2013年谷歌的T.MIKOLOV等提出Word2vec模型后,該思想才開始普及。
雖然詞嵌入表示可以處理“多詞一義”現象,但是其本身仍然存在一個致命的缺點,即無法處理“一詞多義”現象。詞嵌入的一個基本假設是:每一個詞都對應唯一一個詞嵌入表示。如果一個詞有多種詞義,那么用哪個詞義的向量來表示這個詞呢?這里我們仍然以“土豆”這個詞為例進行說明。作為一種蔬菜時,“土豆”應該和“馬鈴薯”等詞的表示相似;而作為一個視頻網站時,“土豆”又應該和“愛奇藝”等詞的表示相似。那么,最終“土豆”的詞嵌入表示必將是個“四不像”。
為解決上述問題,AllenNLP于2018年提出了ELMo模型。該模型的核心思想是將語言模型的輸出作為詞向量表示。這種表示是上下文相關的。例如,在句子“我喜歡吃土豆”中,“土豆”的表示應該和“馬鈴薯”相似;而在句子“我在土豆上看電影”中,“土豆”的表示則應該和“愛奇藝”相似。將ELMo輸出的詞向量作為特征,大大提高了下游任務的性能。
在ELMo模型提出后不久,OpenAI便提出了第1代GPT模型,正式將自然語言處理技術帶入“預訓練”時代。和ELMo一樣,GPT也把語言模型任務作為預訓練任務。總的來說,GPT模型主要有三大創新點:首先,它使用了性能更強大的Transformer模型;其次,它在目標任務上精調整個模型,而不是只將模型的輸出結果作為固定的詞向量特征;最后,由于預訓練模型自身非常復雜,因此接入的下游任務模型可以非常簡單,這極大降低了自然語言處理的技術門檻。
在GPT提出后不久,谷歌便提出了著名的BERT模型。與GPT相比,BERT最大的改進在于它能利用詞兩邊的上下文來預測中間的詞,即使用“完形填空”作為預訓練任務。由于使用了更為豐富的上下文,因此BERT能夠獲得更好的預訓練效果。BERT一問世便刷新了各大自然語言處理任務記錄,在有些任務上的表現甚至超越了人類。
隨后,微軟也建造了自己的超大規模人工智能計算平臺,并同OpenAI聯合訓練了GPT-3模型。
GTP-3含有1 750億個超大規模參數。由于模型參數太大,研究人員無法再對它進行精調。為了滿足不同的任務需求,模型需要針對不同任務提供相應的“提示語”。例如,只輸入任務描述“Translate English to French:cheese=>”,GPT-3就能夠直接輸出翻譯結果。如果在輸入任務描述之后再給出一個或幾個示例,那么任務完成的效果會更好。這種技術也被稱為“提示學習”,并被認為是自然語言處理的一種新技術范式。
在GPT、BERT模型提出以后,各種預訓練模型如雨后春筍般涌現,并從各個方面提升了預訓練模型的效果,例如更大規模的預訓練模型、多語言多模態預訓練模型、面向各種領域的預訓練模型等,其中也包括新的預訓練任務、各種預訓練模型壓縮與加速方法。文獻[9-10]對此做了詳細描述。
目前,大規模預訓練模型的發展勢頭非常強勁。模型規模不斷擴大,模型滲透的領域也在不斷增加。因此,短期內自然語言處理仍將沿著大規模預訓練模型的道路繼續前進。不過,若要取得更好的效果并實現模型的應用落地,在開展大規模預訓練模型研究時仍需要解決以下幾個關鍵的研究問題:
(1)模型的高效性。大規模預訓練模型的訓練和部署都需要消耗大量的計算資源。考慮到大規模預訓練模型在訓練時產生的大量碳排放對環境的影響,研制計算效率更高的模型將是未來研究的重要方向。另外,還可以通過蒸餾、剪枝等技術將大模型壓縮為規模更小的模型,以便于模型實現更大規模的部署應用。
(2)模型的易用性。自然語言處理任務和應用領域層出不窮。為了能夠滿足新任務和新領域的需求,預訓練模型還需要解決小樣本甚至零樣本學習問題。另外,還需要構建大規模預訓練模型的工程化開發能力,建設通用的開發工作流,減少專家干預及人為調整參數,構建一整套數據、代碼、模型、應用程序接口(API)等服務的平臺,從而支撐工業、醫療、城市、金融、物流、科學研究等領域,拓展人工智能的應用范圍,并對人類生產和生活產生更廣泛的影響。
(3)模型的可解釋性。深度學習模型一直存在可解釋性差的問題,而預訓練模型也并沒有解決這一問題。醫療診斷、法律判案等需要證據的應用場合仍無法直接利用該技術。即便在一些不需要提供證據的應用中,如垃圾郵件識別,模型如果能夠解釋自身如何是做出預測的,那么這將對提高模型的可信性大有裨益。
(4)模型的魯棒性。雖然在很多數據集上,預訓練模型已經取得不錯的性能突破,在有些方面甚至已經超過人類,但有時只要測試數據稍加變動,即便語義不發生變化,之前能夠被正確預測的數據也可能會獲得錯誤的預測結果。這就是目前模型遇到的典型的魯棒性(也稱健壯性)問題,導致模型很容易被別有用心者攻擊。此外,由于預訓練模型極度依賴大規模未標注數據,如果所收集的數據中存在錯誤或陳舊的信息,甚至被人為地植入后門數據,模型可能會被誤導或誤用。
(5)模型的推理能力。目前預訓練模型擁有的強大性能主要來自對數據的記憶能力。模型能夠很容易地回答曾經見過的知識,但是對于不曾見過尤其需要多步推理才能解答的問題,往往不具有很好的解決能力。推理能力恰恰是人類解決問題的重要手段,是智能的重要體現形式,因此也是預訓練模型需要重點解決的問題。
那么,自然語言處理是否會沿著預訓練模型這條路一直發展下去呢?對此,本文首先分析一下人工智能的發展趨勢。
經過60余年的發展,自然語言處理經歷了小規模專家知識、淺層機器學習算法、深度學習算法、基于大規模預訓練模型的方法等階段,呈現了明顯的“同質化”和“規模化”兩個相輔相成的發展趨勢。
5.2.1 模型“同質化”的趨勢明顯
自然語言處理的發展呈現出明顯的“同質化”趨勢。早期利用專家知識的自然語言處理系統需要針對不同的任務編寫不同的規則,因此不具有通用性和可移植性。后來,淺層機器學習算法需要根據不同的任務來編寫特定的邏輯,以便將原始文本(也可以是聲音、圖像等)轉換為更高級別的特征,然后使用相對“同質化”的機器學習算法(如支持向量機)進行結果預測。此后,深度學習技術能夠使用更加“同質化”的模型架構(包括卷積神經網絡、循環神經網絡等),直接將原始文本作為學習模型的輸入,并在學習的過程中自動“涌現”出用于預測的更高級別的特征。大規模預訓練模型“同質化”的特性更加明顯。例如,幾乎所有新的自然語言處理模型都源自少數大規模預訓練模型(比如BERT、RoBERTa、BART、T5等)。GPT-3模型只需要進行一次預訓練就可以直接(或僅使用極少量的訓練樣本)完成特定的下游任務。“同質化”還體現在跨數據模態上。基于Transformer的序列建模方法和預訓練模型在被成功應用于自然語言處理后,現已在圖像、視頻、語音、表格數據、蛋白質序列、有機分子等模態數據上取得優異的效果。這使得未來構建一個能夠統一各種模態的大規模預訓練模型成為可能。
5.2.2 “規模化”是智能涌現的必要條件
雖然預訓練模型只是遷移學習的簡單應用,但是它涌現出了令人驚訝的“智能”。其中“規模化”是必不可少的條件。“規模化”需要的3個必要前提目前皆已成熟。
(1)計算機硬件的升級。例如,GPU吞吐量和存儲容量在過去4年中增加了10倍。
(2)Transformer模型架構的發明。該模型能直接對序列中的遠程依賴關系進行建模,還能充分利用硬件的并行性。
(3)更多可用的數據。過去,使用人工標注的數據進行有監督模型訓練是標準的做法。然而,較高的標注成本限制了模型優勢的發揮。預訓練模型能夠充分利用超大規模的未標注數據進行自監督學習,從而比在有限標注數據上進行訓練的模型能獲得更好的泛化性能。
正是由于“規模化”的重要性,越來越多的科研機構不斷推出規模越來越大的預訓練模型。例如,與GPT-2的15億個參數相比,OpenAI的GPT-3模型參數規模達到了驚人的1 750億。谷歌、微軟、北京智源、華為、阿里、鵬城實驗室等也相繼推出了同等甚至更大規模的預訓練模型,如圖2所示。

圖2 大規模預訓練模型模型參數的發展趨勢
基于自然語言處理的歷史發展趨勢來判斷,自然語言處理將沿著“同質化”和“規模化”的道路繼續前進。
首先,以Transformer為代表的自注意力模型具有非常好的“同質化”性質。也就是說,該類模型不會對所處理的問題進行約束和限制,因此適用于自然語言、圖像、語音等各類數據的處理。未來,也許會出現性能更優異的模型,但是該模型一定是更加“同質化”的。
其次,模型規模的發展速度已經遠遠超過摩爾定律限制的硬件發展速度。然而,無論是神經元還是它們之間連接的數量,都遠遠不及人腦。因此,“規模化”的發展趨勢仍不會改變。期待新的能夠突破摩爾定律的硬件形態的出現。
最后,人類習得語言所需的知識并非僅僅是規則、算法以及文本數據這3種類型,還包括大量其他模態的知識,如聲音、視頻、圖像等。多模態預訓練模型(如文本、圖像、視頻、音頻之間的聯合預訓練)已成為目前研究的熱點。此外,如要實現真正的自然語言處理,甚至通用人工智能,那么智能體就需要從物理世界中獲得反饋,這樣才能真正理解“冷暖”“軟硬”等概念,即擁有具身的能力。另外,語言作為一種人類交流的工具,具有極強的社會屬性。因此,智能體還需要與其他人進行交流,在應用中真正習得語言。在未來,自然語言處理模型一定需要融合這些更廣義的知識。“同質化”和“規模化”的模型也為融合這些知識提供了必要的支撐條件。
在大數據、大模型和大算力的加持下,基于預訓練的模型完全革新了自然語言處理的研究范式。在未來,自然語言處理,乃至整個人工智能領域,仍將沿著“同質化”和“規模化”的道路繼續前進,并將融入更多的“知識”源,包括多模態數據、具身行為數據、社會交互數據等,從而實現真正的通用人工智能。