智能文档理解:通用文档预训练模型
預訓練模型到底是什么,它是如何被應用在產品里,未來又有哪些機會和挑戰?
預訓練模型把遷移學習很好地用起來了,讓我們感到眼前一亮。這和小孩子讀書一樣,一開始語文、數學、化學都學,讀書、網上游戲等,在腦子里積攢了很多。當他學習計算機時,實際上把他以前學到的所有知識都帶進去了。如果他以前沒上過中學,沒上過小學,突然學計算機就不懂這里有什么道理。這和我們預訓練模型一樣,預訓練模型就意味著把人類的語言知識,先學了一個東西,然后再代入到某個具體任務,就順手了,就是這么一個簡單的道理。
為什么要做預訓練模型
自然語言處理(NLP),目的是使得計算機具備人類的聽、說、讀、寫、譯、問、答、搜索、摘要、對話和聊天等能力,并可利用知識和常識進行推理和決策,并支持客服、診斷、法律、教學等場景。自然語言理解,被認為是 AI 皇冠上的明珠。一旦有突破,則會大幅度推動 AI 在很多重要場景落地。
過去這五年,對自然語言是一個難忘的五年,它的一個標志就是神經網絡全面引入到了自然語言理解。從大規模的語言數據到強有力的算力,加上深度學習,把整個自然語言帶到一個新的階段。
預訓練模型,則是使自然語言處理由原來的手工調參、依靠 ML 專家的階段,進入到可以大規模、可復制的大工業施展的階段。而且預訓練模型從單語言、擴展到多語言、多模態任務。一路銳氣正盛,所向披靡。
預訓練通過自監督學習從大規模數據中獲得與具體任務無關的預訓練模型。體現某一個詞在一個特定上下文中的語義表征。第二個步驟是微調,針對具體的任務修正網絡。訓練數據可以是文本、文本-圖像對、文本-視頻對。預訓練模型的訓練方法可使用自監督學習技術(如自回歸的語言模型和自編碼技術)。可訓練單語言、多語言和多模態的模型。此類模型可經過微調之后,用于支持分類、序列標記、結構預測和序列生成等各項技術,并構建文摘、機器翻譯、圖片檢索、視頻注釋等應用。
為什么我們要做預訓練模型?首先,預訓練模型是一種遷移學習的應用,利用幾乎無限的文本,學習輸入句子的每一個成員的上下文相關的表示,它隱式地學習到了通用的語法語義知識。第二,它可以將從開放領域學到的知識遷移到下游任務,以改善低資源任務,對低資源語言處理也非常有利。第三,預訓練模型在幾乎所有 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 向量做加權和,以得到其編碼上下文信息的表示。
第二個關鍵技術是自監督學習。在預訓練的模型中,AR(自回歸)LM 和 AE(自動編碼器)是最常用的自監督學習方法,其中,自回歸 LM 旨在利用前面的詞序列預測下個詞的出現概率(語言模型)。自動編碼器旨在對損壞的輸入句子,比如遮掩了句子某個詞、或者打亂了詞序等,重建原始數據。通過這些自監督學習手段來學習單詞的上下文相關表示。
第三個關鍵技術就是微調。在做具體任務時,微調旨在利用其標注樣本對預訓練網絡的參數進行調整。以我們使用基于 BERT(一種流行的預訓練模型)為例來判斷兩個句子是否語義相同。輸入是兩個句子,經過 BERT 得到每個句子的對應編碼表示,我們可以簡單地用預訓練模型的第一個隱節點預測分類標記判斷兩個句子是同義句子的概率,同時需要額外加一個線性層和 softmax 計算得到分類標簽的分布。預測損失可以反傳給 BERT 再對網絡進行微調。當然也可以針對具體任務設計一個新網絡,把預訓練的結果作為其輸入。
總體來講,預訓練模型發展趨勢:
第一,模型越來越大。比如 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 來學習,接近大模型的能力,但是模型的參數減少很多。
隨著許多行業的數字化轉型,電子商業文檔的結構化分析和內容提取成為一項熱門的研究課題。電子商業文檔通常包括兩大類:一類是紙質文檔的掃描圖像件,另一類是計算機生成的數字文檔,這些文檔涵蓋采購單據、行業報告、商務郵件、銷售合同、雇傭協議、商業發票、個人簡歷等。
一般來說,電子商業文檔包含了公司對于內部和外部事物的處理細節,具有大量與行業相關的實體信息和數字信息。在過去,電子商業文檔的信息處理一般由人工來完成,然而,人工信息提取不僅耗時費力,可復用性也不高,大大限制和阻礙了企業運行效率。因此,電子文檔的自動精準快速處理對于企業生產力提升至關重要,這也促使了一些新興行業的出現,幫助傳統行業進行數字化轉型,提高生產力。
近年來,機器人流程自動化(Robotic Process Automation, RPA)應運而生,正是利用人工智能技術幫助大量人力從繁雜的電子文檔處理任務中解脫出來,提供了一系列配套的自動化工具提升企業生產力。其中,最為關鍵的核心技術就是自動文檔分析與識別技術。
傳統的文檔分析和識別技術往往基于人工定制的規則或少量標注數據進行學習,這些方法雖然能夠帶來一定程度的性能提升,但由于定制規則和可學習的樣本數量不足,其通用性往往不盡如人意,針對不同類別文檔的分析遷移成本較高。
隨著深度學習預訓練技術的發展,以及大量無標注電子文檔的積累,文檔分析與識別技術進入了一個全新的時代。大量的研究成果表明,大規模預訓練語言模型能夠通過自監督任務在預訓練階段有效捕捉文本中蘊含的語義信息,經過下游任務微調后能有效地提升模型效果。然而,現有的預訓練語言模型主要針對文本單一模態進行,而忽視了文檔本身與文本天然對齊的視覺結構信息。
為了解決這一問題,我們提出了一種通用文檔預訓練模型 LayoutLM,對文檔結構信息(Document Layout Information)和視覺信息(Visual Information)進行建模,讓模型在預訓練階段進行多模態對齊。我們在三個不同類型的下游任務中進行驗證:表單理解(Form Understanding),票據理解(Receipt Understanding),以及文檔圖像分類(Document Image Classification)。
文檔智能相關的基準數據集
大量的研究成果表明,大規模預訓練語言模型通過自監督任務,可在預訓練階段有效捕捉文本中蘊含的語義信息,經過下游任務微調后能有效的提升模型效果。然而,現有的預訓練語言模型主要針對文本單一模態進行,忽視了文檔本身與文本天然對齊的視覺結構信息。為了解決這一問題,研究員們提出了一種通用文檔預訓練模型LayoutLM[1][2],選擇了文檔結構信息(Document Layout Information)和視覺信息(Visual Information)進行建模,讓模型在預訓練階段進行多模態對齊。
在實際使用的過程中,LayoutLM 僅需要極少的標注數據即可達到行業領先的水平。研究員們在三個不同類型的下游任務中進行了驗證:表單理解(Form Understanding)、票據理解(Receipt Understanding),以及文檔圖像分類(Document Image Classification)。實驗結果表明,在預訓練中引入的結構和視覺信息,能夠有效地遷移到下游任務中,最終在三個下游任務中都取得了顯著的準確率提升。
文檔結構和視覺信息不可忽視
很多情況下,文檔中文字的位置關系蘊含著豐富的語義信息。以下圖的表單為例,表單通常是以鍵值對(key-value pair)的形式展示的(例如 “DATE: 11/28/84”)。一般情況下,鍵值對的排布是以左右或者上下的形式,并且有特殊的類型關系。類似地,在表格文檔中,表格中的文字通常是網格狀排列,并且表頭一般出現在第一列或第一行。通過預訓練,這些與文本天然對齊的位置信息可以為下游的信息抽取任務提供更豐富的語義信息。
對于富文本文檔,除了文字本身的位置關系之外,文字格式所呈現的視覺信息同樣可以幫助下游任務。對文本級(token-level)任務來說,文字大小、是否傾斜、是否加粗,以及字體等富文本格式都能夠體現相應的語義。例如,表單鍵值對的鍵位(key)通常會以加粗的形式給出;而在一般文檔中,文章的標題通常會放大加粗呈現,特殊概念名詞會以斜體呈現,等等。對文檔級(document-level)任務來說,整體的文檔圖像能提供全局的結構信息。例如個人簡歷的整體文檔結構與科學文獻的文檔結構是有明顯的視覺差異的。這些模態對齊的富文本格式所展現的視覺特征,可以通過視覺模型抽取,再結合到預訓練階段,從而有效地幫助下游任務。
將視覺信息與文檔結構融入到通用預訓練方案
建模上述信息需要尋找這些信息的有效表示方式。然而現實中的文檔格式豐富多樣,除了格式明確的電子文檔外,還有大量掃描式報表和票據等圖片式文檔。對于計算機生成的電子文檔,可以使用對應的工具獲取文本和對應的位置以及格式信息;對于掃描圖片文檔,則可以使用 OCR 技術進行處理,從而獲得相應的信息。兩種不同的手段幾乎可以使用現存的所有文檔數據進行預訓練,保證了預訓練數據的規模。
基于文檔結構和視覺信息的 LayoutLM 模型結構
利用上述信息,微軟亞洲研究院的研究員們在現有的預訓練模型基礎上添加了二維位置嵌入(2-D Position Embedding)和圖嵌入(Image Embedding)兩種新的 Embedding 層,可以有效地結合文檔結構和視覺信息:
-
二維位置嵌入 2-D Position Embedding:根據 OCR 獲得的文本邊界框 (Bounding Box),能獲取文本在文檔中的具體位置。在將對應坐標轉化為虛擬坐標之后,則可以計算該坐標對應在 x、y、w、h 四個 Embedding 子層的表示,最終的 2-D Position Embedding 為四個子層的 Embedding 之和。
-
圖嵌入 Image Embedding:將每個文本相應的邊界框 (Bounding Box) 當作 Faster R-CNN 中的候選框(Proposal),從而提取對應的局部特征。其特別之處在于,由于 [CLS] 符號用于表示整個輸入文本的語義,所以同樣使用整張文檔圖像作為該位置的 Image Embedding,從而保持模態對齊。
在預訓練階段,研究員們針對 LayoutLM 的特點提出了兩個自監督預訓練任務:
-
掩碼視覺語言模型(Masked Visual-Language Model,MVLM):大量實驗已經證明 MLM 能夠在預訓練階段有效地進行自監督學習。研究員們在此基礎上進行了修改:在遮蓋當前詞之后,保留對應的 2-D Position Embedding 暗示,讓模型預測對應的詞。在這種方法下,模型根據已有的上下文和對應的視覺暗示預測被掩碼的詞,從而讓模型更好地學習文本位置和文本語義的模態對齊關系。
-
多標簽文檔分類(Multi-label Document Classification,MDC):MLM 能夠有效的表示詞級別的信息,但是對于文檔級的表示,還需要將文檔級的預訓練任務引入更高層的語義信息。在預訓練階段研究員們使用的 IIT-CDIP 數據集為每個文檔提供了多標簽的文檔類型標注,并引入 MDC 多標簽文檔分類任務。該任務使得模型可以利用這些監督信號,聚合相應的文檔類別并捕捉文檔類型信息,從而獲得更有效的高層語義表示。
實驗結果:LayoutLM 的表單、票據理解和文檔圖像分類水平顯著提升
預訓練過程使用了 IIT-CDIP 數據集,這是一個大規模的掃描圖像公開數據集,經過處理后的文檔數量達到約11,000,000。研究員們隨機采樣了1,000,000個進行測試實驗,最終使用全量數據進行完全預訓練。通過千萬文檔量級的預訓練并在下游任務微調,LayoutLM 在測試的三個不同類型的下游任務中都取得了 SOTA 的成績,具體如下:
-
表單理解(Form Understanding):表單理解任務上,使用了 FUNSD 作為測試數據集,該數據集中的199個標注文檔包含了31,485個詞和9,707個語義實體。在該數據集上,需要對數據集中的表單進行鍵值對(key-value)抽取。通過引入位置信息的訓練,LayoutLM 模型在該任務上取得了顯著的提升,將表單理解的 F1 值從70.72 提高至79.2。
-
票據理解(Receipt Understanding):票據理解任務中,選擇了 SROIE 測評比賽作為測試。SROIE 票據理解包含1000張已標注的票據,每張票據都標注了店鋪名、店鋪地址、總價、消費時間四個語義實體。通過在該數據集上微調,LayoutLM 模型在 SROIE 測評中的 F1 值高出第一名(2019)1.2個百分點,達到95.24%。
-
文檔圖像分類(Document Image Classification):對于文檔圖像分類任務,則選擇了 RVL-CDIP 數據集進行測試。RVL-CDIP 數據集包含有16類總記40萬個文檔,每一類都包含25,000個文檔數據。LayoutLM 模型在該數據集上微調之后,將分類準確率提高了1.35個百分點,達到了94.42%。
微軟亞洲研究院的研究員們構建了 DocBank 數據集[3][4],這是一個文檔基準數據集,其中包含了50萬文檔頁面以及用于文檔布局分析的細粒度 Token 級標注。與常規的人工標注數據集不同,微軟亞洲研究院的方法以簡單有效的方式利用弱監督的方法獲得了高質量標注。DocBank 數據集是文檔布局標注數據集 TableBank[5][6] 的擴展,基于互聯網上大量的數字化文檔進行開發而來。例如當下很多研究論文的 PDF 文件,都是由 LaTeX 工具編譯而成。LaTeX 系統的命令中包含了標記作為構造塊的顯式語義結構信息,例如摘要、作者、標題、公式、圖形、頁腳、列表、段落、參考、節標題、表格和文章標題。為了區分不同的語義結構,研究員們修改了 LaTeX 源代碼,為不同語義結構的文本指定不同的顏色,從而能清楚地劃分不同的文本區域,并標識為對應的語義結構。
從自然語言處理的角度來看,DocBank 數據集的優勢是可用于任何序列標注模型,同時還可以輕松轉換為基于圖像的標注,以支持計算機視覺中的物體檢測模型。通過這種方式,可以使用 DocBank 公平地比較來自不同模態的模型,并且進一步研究多模態方法,提高文檔布局分析的準確性。
為了驗證 DocBank 的有效性,研究員們使用了 BERT、RoBERTa 和 LayoutLM 三個基線模型進行實驗。實驗結果表明,對于文檔布局分析任務,LayoutLM 模型明顯優于 DocBank 上的 BERT 和 RoBERTa 模型。微軟亞洲研究院希望 DocBank 可以驅動更多文檔布局分析模型,同時促進更多的自定義網絡結構在這個領域取得實質性進展。
DocBank 數據集的數據樣例
實驗結果
LayoutLM、BERT、RoBERTa 模型在 DocBank 測試集的準確性
在 DocBank 的測試集上評估了六個模型后,研究員們發現 LayoutLM 在摘要、作者、表格標題、方程式、圖形、頁腳、列表、段落、節標題、表格、文章標題標簽上得分最高。在其他標簽上 LayoutLM 與其他模型的差距也較小。這表明在文檔布局分析任務中,LayoutLM 結構明顯優于 BERT 和 RoBERTa 結構。
測試集上預訓練 BERT 模型和預訓練 LayoutLM 模型的樣例輸出
研究員們又選取了測試集的一些樣本,將預訓練 BERT 和預訓練 LayoutLM 的輸出進行了可視化。可以觀察到,序列標記方法在 DocBank 數據集上表現良好,它可以識別不同的語義單元。對于預訓練的 BERT 模型,某些 Token 沒有被正確標記,這表明僅使用文本信息仍不足以完成文檔布局分析任務,還應考慮視覺信息。
與預訓練的 BERT 模型相比,預訓練的 LayoutLM 模型集成了文本和布局信息,因此它在基準數據集上實現了更好的性能。這是因為二維的位置嵌入可以在統一的框架中對語義結構的空間距離和邊界進行建模,從而提高了檢測精度。
附錄
[1]LayoutLM 論文:https://arxiv.org/abs/1912.13318
[2]LayoutLM 代碼&模型:https://aka.ms/layoutlm
[3] DocBank 論文:https://arxiv.org/abs/2006.01038
[4] DocBank 數據集&模型:https://github.com/doc-analysis/DocBank
[5] TableBank 論文:https://arxiv.org/abs/1903.01949
[6] TableBank 數據集&模型:https://github.com/doc-analysis/TableBank
[7] “Injecting Artificial Intelligence into Financial Analysis”:https://medium.com/reimagine-banking/injecting-artificial-intelligence-into-financial-analysis-54718fbd5949
[8] “Document Visual Question Answering”:https://medium.com/@anishagunjal7/document-visual-question-answering-e6090f3bddee
總結
以上是生活随笔為你收集整理的智能文档理解:通用文档预训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow会话
- 下一篇: 虚拟机网络连接方式linuxcentos