STRUCTBERT:將語言結構融入預訓練以提升深度語言理解

【摘要】最近,預訓練語言模型BERT(及其經過穩健優化的版本RoBERTa)在自然語言理解(NLU)領域引起了廣泛關注,并在情感分類、自然語言推理、語義文本相似度和問答等各種NLU任務中達到了最先進的準確率。受到Elman [8] 線性化探索工作的啟發,我們在BERT的基礎上提出了一種新模型StructBERT,通過在預訓練過程中融入語言結構來提升表現。具體而言,我們為StructBERT設計了兩個輔助任務,以充分利用單詞和句子的順序信息,從而在詞級和句子級別上利用語言結構。這使得新模型能夠適應下游任務所需的不同層次的語言理解能力。在引入結構化預訓練后,StructBERT在多個下游任務上取得了出色的實驗結果。例如,在GLUE基準測試中達到89.0的分數(超越所有已發布模型),在SQuAD v1.1問答任務中F1分數達到93.0,在SNLI數據集上的準確率達到91.7。

1,引言

預訓練語言模型(LM)是許多自然語言理解(NLU)任務的關鍵組件,例如語義文本相似度 [4]、問答 [21] 和情感分類 [25]。為了獲得可靠的語言表示,神經語言模型利用自監督學習來定義文本中單詞序列的聯合概率分布。與傳統的基于單詞的嵌入方法不同(即為每個標記分配一個全局表示),近年來的研究(如 Cove [16]、ELMo [18]、GPT [20] 和 BERT [6])通過在大規模文本語料庫上訓練語言模型,生成上下文化的單詞向量。這些模型已被證明在許多下游NLU任務中具有良好的效果。

在上下文敏感的語言模型中,BERT(及其經過穩健優化的版本RoBERTa [15])席卷了NLP領域。BERT的設計旨在通過在所有層中同時考慮左右上下文來預訓練雙向表示,并僅通過上下文來預測被掩碼的單詞,以學習語言表示。然而,它并未充分利用潛在的語言結構。

根據 Elman [8] 的研究,循環神經網絡(RNN)在處理簡單句子時對單詞順序的規律性表現出敏感性。由于語言的流暢性取決于單詞和句子的排序,因此在許多自然語言處理(NLP)任務(如機器翻譯和自然語言理解 [9])中,找到一組單詞和句子的最佳排列方式是一個關鍵問題。近年來,單詞排序被視為基于語言模型(LM)的線性化任務,僅依賴語言模型進行處理 [24]。Schmaltz 的研究表明,即使沒有顯式的句法信息,帶有長短時記憶(LSTM)單元的循環神經網絡語言模型(RNN-LM)[17] 也能有效地完成單詞排序任務。

在本文中,我們介紹了一種新的上下文表示方式——StructBERT,它通過提出兩種新的線性化策略,將語言結構引入到BERT的預訓練中。具體而言,除了現有的掩碼策略外,StructBERT 還利用結構信息來擴展 BERT,包括詞級順序和句級順序。我們在模型預訓練過程中分別針對句內結構和句間結構引入了兩個新的結構化目標。通過這種方式,語言學特征在預訓練過程中得到了顯式捕捉。通過結構化預訓練,StructBERT 在上下文化表示中編碼了單詞之間以及句子之間的依賴關系,從而使模型具有更好的泛化能力和適應性。

  • 我們提出了一種新穎的結構化預訓練方法,通過引入詞級結構目標和句級結構目標擴展 BERT,在上下文化表示中利用語言結構。這使得 StructBERT 能夠顯式建模語言結構,并通過強制模型重建正確的單詞和句子順序來進行準確預測。

  • StructBERT 在各種自然語言理解(NLU)任務上顯著超越了所有已發布的最新模型。該模型擴展了 BERT 的優勢,并在語義文本相似度、情感分析、文本蘊含和問答等語言理解應用中提升了性能。

2,StructBERT 模型預訓練

StructBERT 基于 BERT 架構,后者使用多層雙向 Transformer 網絡 [26]。給定一個單獨的文本句子或一對文本句子,BERT 將它們打包成一個令牌序列,并為每個令牌學習一個上下文化的向量表示。每個輸入令牌的表示是基于該詞、位置以及它所屬的文本片段。接下來,輸入向量被送入一堆多層雙向 Transformer 塊,這些塊使用自注意力機制,通過考慮整個輸入序列來計算文本表示。

原始的 BERT 引入了兩個無監督的預測任務來預訓練模型:即掩碼語言模型(Masked LM)任務和下一個句子預測任務。與原始 BERT 不同,我們的 StructBERT 通過在單詞掩碼后打亂一定數量的令牌并預測正確的順序,增強了掩碼語言模型任務的能力。此外,為了更好地理解句子之間的關系,StructBERT 隨機交換句子順序,并預測下一個句子和前一個句子,作為一種新的句子預測任務。通過這種方式,新的模型不僅顯式地捕捉了每個句子中細粒度的詞語結構,還以雙向的方式正確地建模了句間結構。一旦通過這兩個輔助任務預訓練了 StructBERT 語言模型,我們就可以在任務特定數據上進行微調,以適應廣泛的下游任務。

2.1,輸入表示

每個輸入 x?是一系列詞元,可以是一個單獨的句子,也可以是兩個句子組成的對。輸入表示遵循 BERT [6] 中使用的方式。對于每個輸入詞元 t_i,其向量表示 x_i?是通過將對應的詞元嵌入、位置嵌入和段落嵌入相加來計算的。我們總是將一個特殊的分類嵌入([CLS])作為每個序列的第一個詞元,并在每個段落的末尾添加一個特殊的序列結束標記([SEP])。文本通過 WordPiece [30] 被分詞為子詞單元,絕對位置嵌入是通過支持的最大序列長度(最多 512 個詞元)進行學習的。此外,段落嵌入用于區分一對句子,就像 BERT 中一樣。

2.2,Transformer Encoder

我們使用多層雙向 Transformer 編碼器 [26] 來對輸入表示進行上下文信息編碼。給定輸入向量 X=\left \{ x_i \right \}_{i=1}^N,使用 L 層 Transformer 對輸入進行編碼,表示為:

H^l=Transformer_{l}(H^{l-1})

其中:l\in[1,L]H^0=XH^L=[h_1^L,...,h_N^L]。我們使用隱藏向量?h_i^L 作為輸入詞元 t_i的上下文化表示。

2.3,預訓練目標

為了充分利用語言中豐富的句內和句間結構,我們在原始 BERT 的預訓練目標基礎上進行了兩方面的擴展:

  • 詞匯結構目標(主要用于單句任務)

  • 句子結構目標(主要用于句子對任務)

我們將這兩個輔助目標與原始的掩碼語言模型(LM)目標一起,在統一的模型中進行預訓練,以利用語言的固有結構。

【詞匯結構目標】盡管原始 BERT 在各種自然語言理解(NLU)任務中取得了成功,但它無法顯式地建模自然語言中詞語的順序和高階依賴關系。給定一組隨機順序的詞匯,理想的語言模型應該能夠通過重構這些詞匯的正確順序來恢復原句。為了在 StructBERT 中實現這一想法,我們在 BERT 的訓練目標基礎上增加了一個新的詞匯結構目標,使模型具備了重構某些故意打亂順序的詞元正確順序的能力。這個新的詞匯目標與 BERT 的原始掩碼語言模型(LM)目標一起聯合訓練。

上圖展示了聯合訓練新的詞匯目標和掩碼 LM 目標的過程。在每個輸入序列中,我們首先像 BERT [6] 中一樣隨機掩碼 15% 的所有詞元。由雙向 Transformer 編碼器計算的掩碼詞元對應的輸出向量?h_i^L 被輸入到 softmax 分類器中,以預測原始詞元。

接下來,新的詞匯目標開始發揮作用,考慮詞語順序。鑒于詞元洗牌的隨機性,詞匯目標相當于最大化將每個洗牌詞元放置到其正確位置的概率。更正式地,這個目標可以被表述為:

arg\, \underset{\theta}{max}\sum log\,P(pos_1=t_1,pos_2=t_2,...,pos_K=t_K[t_1,t_2,...,t_K,\theta])

其中,\theta?表示 StructBERT 的可訓練參數集,K?表示每個打亂子序列的長度。從技術上講,較大的 K 會迫使模型能夠重建更長的序列,同時注入更多干擾的輸入。相反,當 K 較小的時候,模型獲得更多未受干擾的序列,但在恢復長序列方面的能力較差。我們決定使用三元組(即 K = 3)進行子序列打亂,以平衡語言重建能力和模型的魯棒性。

具體來說,如上圖所示,我們隨機選擇一定比例的三元組來自未屏蔽的標記,并在每個三元組內打亂三個詞(例如圖中的 t2、t3 和 t4)。通過雙向 Transformer 編碼器計算的打亂標記的輸出向量,然后輸入到一個 softmax 分類器中,以預測原始標記。新的詞目標與掩蔽語言模型(LM)目標一起在統一的預訓練模型中共同學習,并賦予相等的權重。

【句子結構目標】原始 BERT 模型認為下一個句子預測任務比較簡單(BERT 在此任務中的預測準確率可以輕松達到 97%-98% [6])。因此,我們通過預測下一個句子和上一個句子,擴展了句子預測任務,以使預訓練語言模型以雙向的方式意識到句子的順序。如上圖所示,給定一對句子(S1,S2)作為輸入,我們預測 S2 是緊隨 S1 之后的下一個句子,還是在 S1 之前的上一個句子,或者是來自不同文檔的隨機句子。具體來說,對于句子 S1,1/3 的時間我們選擇緊隨 S1 之后的文本片段作為第二個句子 S2,1/3 的時間選擇 S1 之前的上一個句子,1/3 的時間則隨機從其他文檔中抽取一個句子作為 S2。這兩個句子被連接在一起,形成一個輸入序列,并在中間使用分隔符標記 [SEP],如同 BERT 中的做法。我們通過取對應于第一個標記 [CLS] 的隱藏狀態來匯聚模型輸出,并將 [CLS] 的編碼向量輸入到一個 softmax 分類器中進行三類預測。

2.4,預訓練設置

訓練目標函數是詞匯結構目標和句子結構目標的線性組合。對于掩蔽語言模型(Masked LM)目標,我們采用了與BERT [6] 相同的掩蔽率和設置,選擇5%的三元組進行隨機打亂。我們使用了來自英文維基百科(2,500M詞)和BookCorpus [35] 的文檔作為預訓練數據,遵循了[6]中的預處理和WordPiece分詞方法。輸入序列的最大長度設置為512。

我們使用Adam優化器,學習率設置為1e-4,β1 = 0.9,β2 = 0.999,L2權重衰減為0.01,前10%總步驟進行了學習率預熱,學習率采用線性衰減。每層設置了0.1的dropout概率。激活函數使用了gelu [10],與GPT [20]相同。

我們將Transformer塊的層數記為L,隱藏向量的大小記為H,自注意力頭數記為A。按照BERT的做法,我們主要報告兩種模型規模的實驗結果:

  • StructBERTBase:L = 12,H = 768,A = 12,參數數量 = 1.1億

  • StructBERTLarge:L = 24,H = 1024,A = 16,參數數量 = 3.4億

StructBERT的預訓練是在一個由64個Tesla V100 GPU卡組成的分布式計算集群上進行的。對于StructBERTBase,我們進行了40輪預訓練,耗時大約38小時;而StructBERTLarge的訓練大約花費了7天完成。

3,結論

在本文中,我們提出了一種新穎的結構化預訓練方法,將詞匯結構和句子結構納入BERT的預訓練中。我們引入了詞匯結構目標和句子結構目標,作為兩種新的預訓練任務,用于在不同粒度上深度理解自然語言。實驗結果表明,新的StructBERT模型在多種下游任務中取得了新的最先進的結果,包括流行的GLUE基準、SNLI語料庫和SQuAD v1.1問答任務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74021.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74021.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode_977. 有序數組的平方_java

977. 有序數組的平方https://leetcode.cn/problems/squares-of-a-sorted-array/ 1.題目 給你一個按 非遞減順序 排序的整數數組 nums,返回 每個數字的平方 組成的新數組,要求也按 非遞減順序 排序。 示例 1: 輸入:nums [-4,-1…

Nginx—nginx.conf 配置結構詳解

一、nginx.conf 配置結構 函數 說明 main 全局配置 event 配置工作模式以及連接數 http http模塊相關配置 server 虛擬主機配置,可以有多個 location 路由規則,表達式 upstream 集群、內網服務器(負載均衡也在這里邊配&#xff…

斐波那契數列----C語言

關于斐波那契 已知: 問題背景:一對兔子從第3個月開始每月生一對新兔子,新兔子同樣在第3個月開始繁殖。 關鍵觀察: 第1個月:1對(初始兔子)。 第2個月:1對(未成熟&#…

vulhub靶場—— Tomcat8

目錄 一、漏洞描述 二、靶場搭建 三、漏洞復現 1、弱密碼 2、文件上傳 一、漏洞描述 環境描述: Tomcat 支持后臺部署 war 文件,可以直接將 webshell 部署到 web 目錄下。tomcat 默認的管理頁面 manager 使用 basic 認證用戶名和密碼登錄&#xff0…

使用 Spring AI Aliabab Module RAG 構建 Web Search 應用

使用 Spring AI Alibaba 構建大模型聯網搜索應用 Spring AI 實現了模塊化 RAG 架構,架構的靈感來自于論文“模塊化 RAG:將 RAG 系統轉變為類似樂高的可重構框架”中詳述的模塊化概念。 Spring AI 模塊化 RAG 體系 總體上分為以下幾個步驟: …

一些練習 C 語言的小游戲

一些練習 C 語言的小游戲 — 1. 猜數字游戲 描述:程序隨機生成一個數字,玩家需要猜測這個數字,并根據提示(太高或太低)調整猜測,直到猜中為止。 功能點: 隨機數生成 (rand() 函數)。循環和…

關于中文編程的一些思考

隨著信息化與數字化的發展,工業4.0時代亦將徐徐到來。當計算機的普及程度越來越高,數據的產生、傳輸、處理等變得越來越快、越來越大量的時候,人們想要自動化辦公的愿望也越來越強烈,希望能將自身從耗費腦力但是重復繁瑣的工作中解…

golang 日志log與logrus

目錄 一、Go 標準庫 log 詳解 1. 功能特點 2. 常用函數 3. 示例代碼 4. 優勢和局限 二、第三方庫 logrus 詳解 1. 功能特點 2. 核心功能 3. 示例代碼 4. 優勢和擴展性 三、總結 1. 何時選擇 log? 2. 何時選擇 logrus? 3. 對比總結 一、Go 標…

消費品行業創新創業中品類創新與數字化工具的融合:以開源 AI 智能客服、AI 智能名片及 S2B2C 商城小程序為例

摘要: 本文聚焦于消費品行業的創新與創業,深入探討“選擇大于努力”這一觀點,強調品類選擇在品牌發展中的關鍵作用。同時,詳細分析了品類創新對于新消費品牌崛起以及傳統品牌轉型的重要意義。在此基礎上,引入開源 AI 智…

Razer macOS v0.4.10快速安裝

鏈接點這里下載最新的 .dmg 文件。將下載的 .dmg 映像文件拖入 應用程序 文件夾中。若首次打開時出現安全警告【什么扔到廢紙簍】,這時候點擊 Mac 的“系統偏好設置”-> “安全性與隱私”-> “通用”,然后點擊底部的 “打開”。【或者仍然打開】 對…

Flask項目部署:Flask + uWSGI + Nginx

目錄 1,網絡架構 2,環境安裝 2.1,安裝yum:Shell軟件包管理器 2.2 安裝python 2.3 安裝uWSGI 2.4 安裝Flask 3,上傳工程包到服務器,打包Flask項目 4,創建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注釋詳解 5,啟動服務 6,安裝nginx 7,nginx配置 8,…

[FPGA基礎學習]實現流水燈與按鍵暫停

FPGA實現LED流水燈 1.vscode的安裝和使用 vscode下載 Visual Studio Code - Code Editing. Redefined vscode插件(Verilog-HDL/SystemVerilog)下載 quartus綁定vscode 2.用6個LED完成周期為1秒的跑馬燈效果 流水燈模塊設計 時鐘輸入 DE2-115開發板…

【TensorRT】TensorRT從安裝到推理——Python 環境下 MobileNetV4 三分類任務

我想開發一個基于深度學習的分類小軟件,逐漸了解到了TensorRT在模型推理速度上的優勢,經過一下午資料的查找實現了將onnx模型轉為TensorRT格式模型的推理及測試過程。將實現過程記錄下來方便日后查看。 本文實驗設備是MX350顯卡 2G顯存 一 、安裝Tenso…

1.兩數之和(Java)

1. 題目描述 LeetCode 1. 兩數之和(Two Sum) 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那兩個整數,并返回它們的索引。 示例 1: 輸入:nums [2,7,11,15], target 9 …

《深入探索 Python 數據分析:用 Pandas 高效處理與可視化大型數據集》

《深入探索 Python 數據分析:用 Pandas 高效處理與可視化大型數據集》 引言:從零到分析高手 數據是當代社會最寶貴的資源,而數據分析技能是現代職業人不可或缺的一部分。在數據科學的領域中,Python 已成為當之無愧的“首選語言”,其強大的生態系統和簡潔的語法讓人如虎添…

將樹莓派5當做Ollama服務器,C#調用generate的API的示例

其實完全沒這個必要,性能用腳后跟想都會很差。但基于上一篇文章的成果,來都來了就先簡單試試吧。 先來看看這個拼夕夕上五百多塊錢能達到的效果: 只要對速度沒要求,那感覺就還行。 Ollama默認只在本地回環(127.0.0…

python基礎學習二(列表及字典的使用)

文章目錄 列表列表的創建獲取列表中的多個元素判斷列表中元素是否存在列表元素的添加操作列表元素的刪除操作列表元素的修改列表的排序列表生成式 字典字典的創建字典的常規操作字典的常用操作字典的視圖操作字典元素的遍歷字典的特點字典的生成式 列表 一個對象由id&#xff0…

Android設計模式之代理模式

一、定義: 為其他對象提供一種代理以控制對這個對象的訪問。 二、角色組成: Subject抽象主題:聲明真是主題與代理的共同接口方法,可以是一個抽象類或接口。 RealSubject真實主題:定義了代理表示的真實對象&#xff0c…

國外計算機證書推薦(考證)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)

文章目錄 證書推薦1. 六西格瑪 (6 Sigma)2. 亞馬遜網絡服務 (AWS)3. 美國生產與庫存控制學會 (APICS)4. 內部審計師協會 (IIA)5. 微軟 (Microsoft)6. 甲骨文 (Oracle)7. 項目管理協會 (PMI)8. 紅帽 (Red Hat) 證書推薦 1. 六西格瑪 (6 Sigma) 介紹:六西格瑪是一種…

用mkdocs寫文檔#自動更新github-page

https://wuyisheng.github.io/blog 背景是上一篇博客 使用mkdocs,最后提及可以部署github page。這里說明下怎么自動部署。 當然,這篇博客主要的目的還是提供下github page的鏈接 :) 我是這樣做的: step 1: pip3 i…