講堂丨周明:預訓練模型在多語言、多模態任務的進展

微軟研究院AI頭條發表於2020-09-11
講堂丨周明:預訓練模型在多語言、多模態任務的進展

周明

微軟亞洲研究院副院長

國際計算語言學會(ACL)前任主席

以下是周明老師的演講實錄:

自然語言處理(NLP),目的是使得計算機具備人類的聽、說、讀、寫、譯、問、答、搜尋、摘要、對話和聊天等能力,並可利用知識和常識進行推理和決策,並支援客服、診斷、法律、教學等場景。自然語言理解,被認為是 AI 皇冠上的明珠。一旦有突破,則會大幅度推動 AI 在很多重要場景落地。

過去這五年,對自然語言是一個難忘的五年,它的一個標誌就是神經網路全面引入到了自然語言理解。從大規模的語言資料到強有力的算力,加上深度學習,把整個自然語言帶到一個新的階段。

今天我要講的預訓練模型,它使自然語言處理由原來的手工調參、依靠 ML 專家的階段,進入到可以大規模、可複製的大工業施展的階段,令我們這個領域的人感到非常振奮。而且預訓練模型從單語言、擴充套件到多語言、多模態任務。一路銳氣正盛,所向披靡。那麼,預訓練模型到底是什麼,它是怎麼應用在很多產品裡,未來又有哪些發展機會和挑戰呢。下面我嘗試由淺入深地給大家介紹一下。

一、預訓練模型

先簡要介紹一下預訓練模型的基礎技術,包括 Transformer、自監督學習、微調。然後再詳細介紹預訓練模型在語言、影像、文件和影片等任務中的進展,

預訓練透過自監督學習從大規模資料中獲得與具體任務無關的預訓練模型。體現某一個詞在一個特定上下文中的語義表徵。第二個步驟是微調,針對具體的任務修正網路。訓練資料可以是文字、文字-影像對、文字-影片對。預訓練模型的訓練方法可使用自監督學習技術(如自迴歸的語言模型和自編碼技術)。可訓練單語言、多語言和多模態的模型。此類模型可經過微調之後,用於支援分類、序列標記、結構預測和序列生成等各項技術,並構建文摘、機器翻譯、圖片檢索、影片註釋等應用。

為什麼我們要做預訓練模型?首先,預訓練模型是一種遷移學習的應用,利用幾乎無限的文字,學習輸入句子的每一個成員的上下文相關的表示,它隱式地學習到了通用的語法語義知識。第二,它可以將從開放領域學到的知識遷移到下游任務,以改善低資源任務,對低資源語言處理也非常有利。第三,預訓練模型在幾乎所有 NLP 任務中都取得了目前最佳的成果。最後,這個預訓練模型+微調機制具備很好的可擴充套件性,在支援一個新任務時,只需要利用該任務的標註資料進行微調即可,一般工程師就可以實現。

下面介紹預訓練模型的三個關鍵技術。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

首先,第一個關鍵技術是 Transformer。它在 NLP 各個任務中都取得了優異的效能,它是預訓練語言模型的核心網路。給定一句話或是一個段落作為輸入,首先將輸入序列中各個詞轉換為其對應的詞向量,同時加上每一個詞的位置向量,體現詞在序列的位置。然後將這些詞向量輸入到多層 Transformer 網路中,透過自注意力(self-attention)機制來學習詞與詞之間的關係,編碼其上下文資訊,再透過一個前饋網路經過非線性變化,輸出綜合了上下文特徵的各個詞的向量表示。每一層 Transformer 網路主要由 Multi-head self-attention 層(多頭自注意力機制)和前饋網路層兩個子層構成。Multi-head self-attention 會並行地執行多個不同引數的 self-attention,並將各個 self-attention 的結果拼接作為後續網路的輸入,self-attention 機制會在後面中做詳細介紹。此後,我們得到了蘊含當前上下文資訊的各個詞的表示,然後網路會將其輸入到前饋網路層以計算非線性層次的特徵。

在每一層 Transformer 網路中,會將殘差連線(residual connection)把自注意力機制前或者前饋神經網路之前的向量引入進來,以增強自注意力機制或者前饋網路的輸出結果向量。並且還做一個 layer normalization,也就是透過歸一化把同層的各個節點的多維向量對映到一個區間裡面,這樣各層節點的向量在一個區間裡面。這兩個操作加入在每個子層後,可更加平滑地訓練深層次網路。

Transformer 可以用於編碼,也可以用於解碼。所謂解碼就是根據一個句子的輸入得到一個預想的結果,比如機器翻譯(輸入源語言句子,輸出目標語言句子),或者閱讀理解(輸入文件和問題,輸出答案)。解碼時,已經解碼出來的詞要做一個自注意力機制,之後和編碼得到的隱狀態的序列再做一個注意力機制。這樣可以做 N 層,然後透過一個線性層對映到詞表的大小的一個向量。每個向量代表一個詞表詞的輸出可能性,經過一個softmax 層得到每個詞的輸出機率。

接下來介紹一下 self-attention 機制,以一個 head 作為示例。假定當前輸入包含三個詞,給定其輸入詞向量或是其上一層 Transformer 網路的輸出,將其透過三組線性變換,轉換得到三組 queries、keys 和 values 向量。Query 和 key 向量用來計算兩兩詞之間的得分,也就是其依賴關係,這個得分會同其對應的 value 向量做加權和,以得到每個詞綜合上下文資訊的表示。給定當前第一個詞的 query 向量,其首先同各個詞的 key 向量透過點積操作得到這兩個詞的得分,這些得分用來表示這兩個詞的依賴或是相關程度。這些得分之後會根據 query 等向量的維度做一定比例的縮放,並將這些得分透過 softmax 操作做歸一化。之後,各個得分會同其相對應的 value 向量相乘得到針對第一個詞加權的各個 value 向量,這些加權的 value 向量最終相加以得到當前第一個詞的上下文表示。

在得到第一個詞的上下文表示後,給定第二個詞的 query 向量,我們會重複之前的操作,計算當前 query 向量同各個詞 key 向量的得分,對這些得分做 softmax 歸一化處理,並將這些得分同其對應的 value 向量做加權和,以得到其編碼上下文資訊的表示。

下面是一個最簡化的例子以便簡單說明自注意力機制。為了簡單起見,這裡假設 Q、K 和 V 的變化都不起作用,也就是不變。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

輸入是 The weather is nice today,利用自注意力機制調整每個詞的表示,比如 The。我們認為它要受到其他所有詞的影響,但是影響力可大可小。那麼每個詞的影響力是透過計算 The 與每個詞的關聯度,然後透過一個 softmax 歸一化得到一個權值,每個詞一個權值,這樣 The 的最後表示就是和每個詞計算關聯度的結果之和。

多頭注意力機制就是對一個節點,可以設定幾組 K、Q 和 V,分別計算關聯度(透過 Q 和 K 計算點積)和加權調整的值(透過 V 和關聯度計算)。幾組結果可以拼在一起,透過一個線性變換,體現多角度的特徵抽取。多頭可以是16個頭、12個頭等。

第二個關鍵技術是自監督學習。在預訓練的模型中,AR(自迴歸)LM 和 AE(自動編碼器)是最常用的自監督學習方法,其中,自迴歸 LM 旨在利用前面的詞序列預測下個詞的出現機率(語言模型)。自動編碼器旨在對損壞的輸入句子,比如遮掩了句子某個詞、或者打亂了詞序等,重建原始資料。透過這些自監督學習手段來學習單詞的上下文相關表示。

第三個關鍵技術就是微調。在做具體任務時,微調旨在利用其標註樣本對預訓練網路的引數進行調整。以我們使用基於 BERT(一種流行的預訓練模型)為例來判斷兩個句子是否語義相同。輸入是兩個句子,經過 BERT 得到每個句子的對應編碼表示,我們可以簡單地用預訓練模型的第一個隱節點預測分類標記判斷兩個句子是同義句子的機率,同時需要額外加一個線性層和 softmax 計算得到分類標籤的分佈。預測損失可以反傳給 BERT 再對網路進行微調。當然也可以針對具體任務設計一個新網路,把預訓練的結果作為其輸入。

下面介紹一下預訓練模型的歷史沿革。預訓練模型的發展雖然這幾年才大熱,但是我覺得源於早期的詞嵌入(word embedding)的工作,比如 Word2Vec。它的訓練的結果是詞的嵌入,是一個靜態的表示,此後 ULMFiT 是第一個使用 RNN 基於 LM 訓練的上下文相關的預訓練模型;CoVe 利用翻譯任務來訓練編碼器-解碼器,並使用編碼器作為預訓練模型;ELMo 使用雙向 LSTM 合併兩個方向的隱狀態獲得上下文相關表示;GPT 採用 LM 進行訓練,它是基於 Transformer 的單向預訓練模型;BERT 是基於 Transformer 的基於掩碼的預訓練模型;MT-DNN 基於 BERT 增加了一些任務進行多工訓練;MASS 使用編碼-解碼器來訓練預訓練模型;UniLM 嘗試同時支援語言理解和生成任務。把預訓練模型用於多語言任務:XLM 是一種支援多語言的 BERT 模型;Unicoder 引入若干新的任務改進了 XLM;T5 把多種自然語言任務(比如機器翻譯、問答),用了更大的資料,在一個網路訓練,同時支援這些任務;BART 是一種編碼-解碼器模型,透過還原損壞的句子訓練;mBART 將 BART 理念擴充套件到多語言。另外還有最新的很多模型恕我這裡沒有全部列出。此外也擴充套件到多模態。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

這是一個更加詳細的總結。名稱、用途、架構、特點,這裡就不詳細說明了。

總體來講,預訓練模型發展趨勢:第一,模型越來越大。比如 Transformer 的層數變化,從12層的 Base 模型到24層的 Large 模型。導致模型的引數越來越大,比如 GPT 110 M,到 GPT-2 是1.5 Billion,圖靈是 17 Billion,而 GPT-3 達到了驚人的 175 Billion。一般而言模型大了,其能力也會越來越強,但是訓練代價確實非常大。第二,預訓練方法也在不斷增加,從自迴歸 LM,到自動編碼的各種方法,以及各種多工訓練等。第三,還有從語言、多語言到多模態不斷演進。最後就是模型壓縮,使之能在實際應用中經濟的使用,比如在手機端。這就涉及到知識蒸餾和 teacher-student models,把大模型作為 teacher,讓一個小模型作為 student 來學習,接近大模型的能力,但是模型的引數減少很多。

預訓練模型舉例說明

BERT

這裡用 BERT 舉例說明預訓練模型訓練方法。基於 Transformer,其基本模型為 12 層模型,還有一個大型模型為 24 層模型。這裡說明幾個關鍵地方。

1. tokenizer,簡單地理解為詞的切分,比如工具 BPE。針對一個資料集合,BPE 工具自動獲得該資料集的 token 的集合,取頻率最高的前 N 個 token 作為詞表,其他的 token 都看作是 UNK(unknown word)。

2. 對資料集合的每個資料,透過 BPE 做 tokenize,形成 token 的序列。

3. 訓練時,每個 token 有一個多維向量表示,比如1024維,隨機初始化。

4. 計算預測的損失。該損失反向傳播來調整各層的網路引數,也包括每個 token 的多維向量表示。

5. 最後訓練的結果,包括每個 token 的多維向量表示、每層的網路引數,以及各個 attention model 的引數等。

6. 在用預訓練模型時,把輸入序列 tokenize 之後,對每個 token,從詞典中得到多維向量表示。然後根據每層的網路引數,計算輸出。

訓練任務:BERT 使用了掩碼語言模型(就是蓋住一個單詞或者多個單詞,然後讓模型預測),損失用來調整網路。

BERT 還使用 NSP(下一句預測),旨在預測第二句是否是第一句的下一句。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

UniLM

UniLM 由微軟亞洲研究院自然語言計算組開發,是一種最先進的預訓練的模型,用於語言理解和生成任務。首先它是一個 Transformer 機制。用了三個任務訓練:第一個任務就是掩碼語言模型(就是自編碼)類似於 BERT,利用左右詞彙預測被蓋住的詞;第二個任務就是自迴歸語言模型,類似 GPT,利用前面的詞序列預測下一個詞;第三個任務就是編碼-解碼模型,利用輸入句子和已經輸出的詞來預測接下來的詞。這三個任務進行多工訓練,透過一個掩碼矩陣控制哪些詞可以用來 attention。訓練得到的模型具備了理解和生成兩種能力。在 GLUE 任務集合、文摘生成和答案抽取等任務上都取得了當時最好的水平。

預訓練模型已廣泛應用於產品,比如提高搜尋的相關性等。上圖顯示必應搜尋使用了我們預訓練模型的問答系統,給定一個 NL 問題,系統提取包含答案的文字並確定答案部分。它也可以用於問題生成,給定一個文字,生成關於這個文字的若干問題,可以用於語言教育等領域。

二、預訓練模型
在多語言任務的應用
講堂丨周明:預訓練模型在多語言、多模態任務的進展

有許多語言中,它們都有大量的單一語言資料,並且某些語言對之間存在一些對照資料。我們可以學習一個跨語言的預訓練模型,其中來自兩種不同語言的單詞,如果具有相似的含義,將聯絡在一起。然後,基於預訓練的模型要建立某個具體任務的系統。對某些語言,如果有帶標註的資料,利用之經微調可以得到一個系統。所得到的模型應用於其他語言的同一個任務,即使該語言沒有標註資料,也有一定效果。該語言如有標註資料也可進一部微調。這樣實現了跨語言之間的遷移學習。 

下面介紹一個典型多語言預訓練模型 XLM。它將 BERT 擴充套件到多語言理解任務。XLM 中使用了兩個任務。第一個是掩碼(遮蔽)語言模型,它與 BERT 中類似,輸入是一個句子,可以是 A 語言、也可以是 B 語言。透過共享所有語言的模型引數和詞彙,XLM 可以獲得跨語言功能。第二個任務是 TLM(翻譯語言模型),它叫做翻譯,其實並沒有考慮對譯關係。輸入是雙語對照句對,看作一個語言,去訓練掩碼語言模型

我們開發的 Unicoder-1進一步增加了跨語言訓練新任務。除了在單語句子上進行單詞和短語層面的“掩碼 LM”,以及對雙語句子進行掩碼 LM(稱作翻譯 LM)之外,我們增加一個新的訓練任務:在利用了 Giza+ 做了單詞對齊之後,透過預測兩個單詞的對譯關係是否存在。這個任務可以在單詞級別做、短語級別做,也可以在句子級別做。不僅用正例,也引入了反例,透過對比式學習,加強學習效果。

我們還將 Unicoder 擴充套件到了跨語言生成任務。這個預訓練模型 Unicoder-2 做了如下任務訓練:給定來自多語言語料庫的輸入句子,首先打亂其句子,對文字加噪音,然後透過解碼器嘗試恢復。解碼時可以用傳統方法每次僅預測一個 token,也可透過我們最近的Prophet(先知)網路一起預測兩個 token 或者多個 token,然後取第一個詞輸出,再預測下一位置的 token。這樣做預測能力有新的提高。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

我們建立了多語言任務的評測資料集 XGLUE。XLGUE 中的 11 個下游任務,其中包括 NER(命名實體識別)、POS(詞性標註)等。現在 XGLUE 已經發布,這些任務現在涵蓋 19 種語言。

我們在 XGLUE 上評測了多個跨語言預訓練模型(包括 MBERT、XLM、XLM-R 和 Unicoder),並在上表中列出比較結果。可以看到,我們的 Unicoder 在許多理解和生成任務上實現了最佳的平均效能。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

多語言預訓練模型可以把英語的模型應用到其他語言。英語的標註資料比較多,而其他語言往往缺少標註資料。因此,利用多語言預訓練模型可以對新的語言,做 zero-shot 或者 few-shot 的學習。比如這裡展示了問答系統,英文問答資料 finetune 訓練的 QA 在法語、德語上也有很好的效果,也可以產生新聞的標題。同樣也是在英語標註集合 finetune 訓練之後的系統,也可以生成其他語言的標題。

這裡總結一下多語言預訓練模型。它緩解了多種語言的資源短缺問題,多語言預訓練模型幫助多語言搜尋、QA、廣告、新聞、文字摘要、低資源神經機器翻譯等取得新的提升。

多語言預訓練模型仍然面臨許多挑戰,首先最有效的預訓練任務仍然是掩碼 LM(在多語種或雙語語料庫上),我們要擴充新的任務以便充分利用多語言/雙語的特點。第二,詞彙表比單語言的預訓練模型(例如 BERT / RoBERTa)大得多,單語3萬,多語25萬。這樣導致要學的模型引數就會增加很多,訓練的開銷更大。第三,有的語言對有詞彙、語法的同源關係,遷移學習效果好,比如英語的 finetune 結果對法語、義大利語、西班牙語比較好,而對漢語的效果不太明顯。下一步可以考慮在語系內部進行多語言模型訓練。

三、預訓練模型
在多模態任務的應用

影像-語言的預訓練模型

影像-語言的預訓練模型的目的,可以是用於理解或者生成。這裡我們僅介紹理解用的預訓練模型。做法如下:給定一個包含一幅圖片和對應的 caption(就是文字描述)的資料庫,比如這個例子包括圖片和對應的文字描述。首先對這個資料庫進行預處理,用FASTER-RCNN 得到圖片每個物件 label 的分佈,以及物件的輸出向量表示(softmax 之前的輸出向量表示)。一個圖片的所有物件按照從左到右、從上到下的順序排列,可以形成一個序列,和文字序列排列在一起。我們可以用 BERT 方式訓練一個預訓練模型,比如掩碼的方式,蓋住文欄位的某個 token 來預測這個 token,或者蓋住物件序列的某一個物件來預測這個物件的輸出向量表示,或者直接預測這個物件的 label,另外預測物件序列和 text 是否是相互描述。

現有工作基於大致相似的網路結構。我們是最早發表工作的機構之一。我們增加了一個新的訓練任務,即物件的輸出向量還原為物件的 FASTER-RCNN 的原始向量,取得了改進效果。

在 Flickr30K(image retrieval和captioning的資料集),image2text和text2image 兩個任務。Text2image 任務是給定 text,從 1 K 的圖片(給定)排序,得到最優的匹配。MSCOCO(微軟提供的資料集)任務完全與 Flick30K 一樣。Pre-training dataset 是有三百萬image-caption pairs 的,由谷歌提供的 Conceptual Captions。目前最好的系統:ViLBERT 來自 Facebook,UNITER 來自微軟產品組。Unicoder-VL由於增加了新的訓練任務(如前述),預訓練模型對圖片和文字的編碼能力有所提升,得到了較好效果。

文件-語言的預訓練模型

我們開發的多模態的預訓練模型 LayoutLM,透過對掃描的文件,利用 OCR 識別之後的文字片段和文字對照的影像同時進行預訓練。基於該預訓練模型,抽取表格裡的重要資訊,包括語義類別和值。該研究獲得了目前在相關任務評測集最高的水平(發表在KDD 2020)。

這是目前可用的訓練資料集合,含有 11 Million 掃描文件和識別的結果。NIST 發表的,最主要的16類資料(信件、表格、收據等),包含了掃描文件及其對應的 OCR 結果。我們重新用 OCR(開源工具)https://github.com/tesseract-ocr/tesseract,以便得到識別物件的座標資訊。

我這裡解釋一下我們做的 LayoutLM 預訓練模型。

首先一個掃描的文件(digital burned doc),進入 OCR 引擎可以得到識別的結果,就是一個個的字元(以 BPE 分詞之後表示)串,以及在文件中的起始位置座標。字串的序列和位置座標(四個數字)作為預訓練輸入。然後透過類似 BERT 的掩碼方式(就是蓋住其中某些 token)透過12層(或者24層)的 Transformer 來預測被蓋住的 token。預測的損失回傳調整網路的全部引數,當然可以增加其他的訓練任務,比如判斷文件的分類。透過對大規模的 OCR 識別的資料進行訓練,可以得到一個預訓練模型,這個預訓練模型在進行下游任務時要微調。微調時,可以直接用預訓練模型作為輸入進行微調,也可以把文件中的對應 token 的影像編碼也作為輸入,增強預訓練的訊號。

講堂丨周明:預訓練模型在多語言、多模態任務的進展

訓練任務1:掩碼訓練類似於 BERT。預測被蓋住的 token,其損失回傳,調整網路。

預訓練任務2:判斷影像的分類。按照原來資料集的分類標註,進行訓練。

下游任務之一是表單理解。給一個文件,識別出文件中包含 key-value,就是實體語義型別(比如時間、地點、數目)和實體的值。透過標記 BIO 風格的序列,就可以得到識別結果。

我們的 LayoutLM 對幾個重要的下游任務都取得了最佳的結果,比如表單理解、收據資訊抽取等等。這裡不再贅述。

影片-語言的預訓練模型

下面介紹 Video-NL 預訓練模型。我們可以對每個 Video 片段和對應的 NL 描述(語音識別的結果)建立這樣的網路結構,左邊 NL 的 token 序列,右邊是影片按照時間序列均勻切分(1.5 秒)的 video clip 的序列,可以用 S3D 等工具,每個 video clip 對應一個輸出向量表示,進入Video encoder。文字序列和 video clip 序列拼接起來進入Transformer。多層(比如三層、四層)後面跟著一個解碼,利用一個 encoder-decoder 結果來做預訓練。可以使用如下四個任務進行預訓練。 

• Video-text alignment 任務用來判斷輸入的 video clip 和 text 是否相互描述。

• Masked language model 任務用來預測 transcript 裡被 mask 掉的單詞。

• Transcript generation 任務基於輸入的 video clip,生成對應的 video transcript,這時還有 NL 段置空了。

• Masked frame model 任務用來預測被 mask 掉的 video clip 對應的 video feature vector。

Unicoder-VL 擴充套件到 video,與其他工作相比,我們把理解和生成整合在一個預訓練模型,既可以理解也有生成能力。預訓練的語料是,HowTo100M 作為 pre-train 語料。它是從 YouTube 上抓下來的 1.2 M 影片,切分成 136 M 影片片段,根據時間軸配上文字說明(YouTube 自帶的)。下游任務 finetune 目前我們使用 YouCook2 的菜譜影片,以及 MSR-VTT 微軟釋出的(影片-caption)對的資料集合。

下游任務包括影片搜尋和影片 caption 生成兩個任務。首先是檢索任務——給定 NL 的 query,從一個固定影片片段中搜尋最匹配的影片片段。然後是 caption 任務——給定一段影片,加上 transcript,生成對應的 caption。我們的提交系統目前取得了最好的評測結果。

這樣的預訓練模型有很多應用。這裡用 Video chaptering 來說明。它分為兩個任務,一個是 video segmentation,用於對輸入 video 進行 clip 切分;一個是 video captioning,用於對每個 video clip 生成一個總結性的內容。

我總結一下多模態預訓練模型。目前它尚處於初期階段,遵循大多數 NLP 預訓練模型,用 Transformer 機制,從有限的影像/影片-語言資料集中學習聯合表示,可以計算影像/影片片段和文字描述的距離,並實現影像/影片-文字之間的轉換。多模態預訓練模型雖然剛剛開始還不成熟,但是已經在影像/影片的搜尋,以及生成文字描述當任務中顯示出不錯的前景。

當然,多模態預訓練模型仍然面臨許多挑戰。首先,影像/影片-語言對的資料的大小仍然比自然語言語料庫小得多。第二,CV 僅僅用於特徵提取,目前並沒有將 CV 模型和 NLP 模型共同訓練。當然目前沒有好的演算法,而且訓練的 cost 非常大。第三,與之有關的就是 CV 的物體識別,目前的類別僅限於1000類左右,對真實場景的覆蓋不夠,而且識別的精度也不夠,導致預訓練的輸入訊號天然帶有誤差。第四,對於多模態預訓練模型,目前都是用 Transformer 機制,但是它的代價比較大,而且是否最合適對影像/影片-文字建立關聯,還需要進一步探索。第五,圖片和影片的預訓練模型也不一樣,由於影片有時序,因此影片的分割按照固定時長分割,缺乏邏輯意義。而且影片的 token 會比 NL 多很多,導致訓練的代價比圖片和文字的預訓練大很多。

結束語

NLP 經歷了第一代的基於規則的 NLP;第二代的基於統計的 NLP;五年前進入到基於神經網路的第三代 NLP(NN-NLP),在大資料、大模型、神經網路框架下取得了很好的進展,形成了一整套的技術。而現在更進一步,預訓練+微調形成了工業化可擴充套件的解決方案。預訓練模型把遷移學習很好地用起來了,讓我們感到眼前一亮。這和小孩子讀書一樣,一開始語文、數學、化學都學,讀書、網上游戲等,在腦子裡積攢了很多。當他學習計算機時,實際上把他以前學到的所有知識都帶進去了。如果他以前沒上過中學,沒上過小學,突然學計算機就不懂這裡有什麼道理。這和我們預訓練模型一樣,預訓練模型就意味著把人類的語言知識,先學了一個東西,然後再代入到某個具體任務,就順手了,就是這麼一個簡單的道理。這要感謝楊強老師做的遷移學習,真的是有效。

預訓練體現出所有的自監督的訓練。如果為了做預訓練要標資料則失去意義,因為標不了太大資料,很多知識體現不出來。恰好自然語言有幾乎無限的語料,用語言模型或者用自編碼方法自監督學習。一個預訓練模型,只要訓出來以後,後續所有任務,都可以得到很好的處理。對一個任務,只要資料足夠大的任務,預訓練加微調機制基本可以搞定了。當然還需要研究 zero-shot,few-shot 等問題,這些還有研究空間。

預訓練模型在多語言任務中,rich-resource 的模型會遷移到 low-resource 語言任務中,減輕了資料不足的問題。預訓練模型在文字中表現出色,基本可以實用。而在多模態任務中,則方興未艾,還有巨大探索空間。比如圖片/影片的預處理、訓練任務的設計都將有很多有趣的研究。

要想邁向下一個階段也有很多問題,比如現有的預訓練模型是不是最優的?有沒有更好的訓練任務、更好的神經網路架構?訓練是否可以更快?模型是否可以更小?現在瘋狂追求大模型,耗盡計算資源,同時也汙染了環境,是不是我們可以接受的?還有現有的模型在利用知識、嘗試、進行推理,並且提供解釋等方面仍然沒有看到任何清晰的解決前景。這些都是難題。我希望大家一起繼續努力,把這些問題好好想想,努力把 NLP 推向一個新的高度。

致謝

本文所涉及的許多研究專案為微軟亞洲研究院自然語言計算組的同事和實習生同學共同完成的,非常感謝他們的貢獻。這裡要特別感謝段楠對本講座提供了豐富材料並幫助完善 PPT。同時我也感謝韋福如、崔磊和王文輝提供了部分重要內容。

(本報告根據速記整理)

相關文章