天天看點

論文閱讀_基于知識的提示學習KnowPrompt

英文題目:KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimizationfor Relation Extraction

中文題目:KnowPrompt: 基于協同優化的知識感覺快速調優關系提取

論文位址:https://arxiv.org/pdf/2104.07650.pdf

領域:自然語言處理,關系提取

發表時間:2021

作者:Xiang Chen(浙江大學&阿裡巴巴)

出處:TheWebConf(WWW)

被引量:13

代碼和資料:https://github.com/zjunlp/KnowPrompt

閱讀時間:2022.04.15

泛讀

  • 針對問題:few-shot場景下從文本中抽取關系(知識檢索、對話、問答)。
  • 結果:在5個資料集,及少量标注情況下,測試效果優于之前模型
  • 核心方法:希望在pretrain後不再fine-tuning,于是引入了提示prompt,通過建構提問(提問方法/答案範圍)來實作類似tuning的效果。
  • 難點:之前對知識抽取和提示學習都不太了解;後來讀了代碼才了解,文中指的知識不是來自外界引入,而是将詞嵌入作為知識。
  • 泛讀後了解程度:60%

    (看完題目、摘要、結論、圖表及小标題)

精讀

摘要

最近,提示調優(Prompt-tuning)在一些few-shot分類任務中取得了令人滿意的結果。它的核心思想是通過插入文本,将分類任務轉化為MASK語言模型(MASK原理詳見BERT)。對于關系抽取問題,選擇提示模闆需要較多的領域知識和較大工作量,且在實體和邊之間蘊藏的大量知識也不應該被忽略。文中提出了一種基于知識協同優化的調優方法(KnowPrompt)。通過學習模闆詞和答案詞,将實體和關系的知識注入模型,并在知識限制下協同優化它們的表示。

1. 介紹

關系抽取(RE)是檔案抽取中的一個重要任務,抽取後的資訊可供更多下遊NLP任務使用,比如:資訊檢索、對話生成和問答。

之前自監督的自然語言模型(PLM)如BERT,它可以學習到帶有上下文的表征,在很多RE任務中表現很好,而精調(fine-tuning)需要在模型頂部加層并需要額外的訓練。它的效果依賴于耗時費力的大量标注,且不容易泛化到其它任務中。為解決此問題,出現了prompt-tuning:使用預訓練的語言模型作為預測器實作完型填空任務。它在few-shot任務中表現良好。如圖-1所示:

論文閱讀_基于知識的提示學習KnowPrompt
  • 模型的原始輸入是“Hamilton is the first British champion”
  • 模型在原始輸入後,加了一個模闆"Mamilton [MASK] British",同時給定了一組标簽詞“country,city,residenct…”作為MASK的可選項

    (Hamilton可能是人名,也可能是品牌)

  • 模型将原始輸入和模闆作為條件,預測MASK為某選項的機率,進而抽取模闆中主語Hamilton和賓語British的關系。

總之,Prompt-tuning的目标是找到合适的模闆和答案空間。而此工作常需要領域知識,以及複雜而大量的計算。而且關系标簽不一定能在詞典中找到合适的詞。另外,實體、關系、三元組中包含的詞義也不應被忽略,如圖-1的例子中,如果主語和賓語都是人,則"org:city_of_headquters"就不太可能成立。相對的,關系也可以限制主語和賓語的類型。

文中提出的解決方法是:先将知識注入提示,然後用提示調優模型實作知識抽取。具體方法是使用學習“虛拟模闆詞”和“虛拟答案詞”。具體的方法是:使用集合實體嵌入初始化的實體周圍的類型标記,作為可學習的虛拟模闆詞來注入實體類型知識。同時使用标簽計算平均嵌入作為虛拟答案來注入關系知識。在這個結構中,實體和關系互相限制,虛拟詞需要與上下文保持一緻性,文中引入了協同優化來校正模闆和答案詞。

文章主要貢獻如下:

  • 提出了知識提示(KnowPrompt)方法,将知識注中提示模闆的設計和答案建構,以解決關系抽取問題。
  • 使用知識限制,聯合優化提示模闆和帶有答案的表示。第一次提出在連續空間内,聯合優化提示模闆和答案。
  • 在五個RE基準資料集上實驗表明,KnowPrompt在标準和低資源環境下都是有效的。

2. 相關工作

2.1 知識抽取

知識抽取,早期使用基于模式的方法,基于CNN/RNN的方法,以及基于圖的方法,後來,将預訓練語言模型作為基礎的知識提取成為主流,尤其是基于BERT的模型顯示出比之前模型更好的效果。最近Xue等提出的基出BERT的多視圖方法達到了目前最高水準。由于标注的限制,few-shot任務受到關注。

2.2 提示學習

提示學習方法源于GPT-3(2020年),其在很多NLP任務中達到更好的效果。有些研究基于人工建構提示;2021年Hu提出引入外部知識;2021年Ding使用實體類型學習,來建構面向實體的詞生成器和模闆;為避免大量的人工建構提示,2020年Gao等首次提出了自動構模組化闆和答案詞,Shin又進一步提出了梯度自動搜尋,來自動生成模闆和打标簽。最近,有人直接利用可學習的連續嵌入作為提示模闆。

在知識抽取方面,2021年Han提出PTR,使用邏輯規則建構子提示。本文中方法的先進性在于:使用知識注入方法,學習虛拟模闆和模拟答案來代替人工定義規則,可以泛化到多種任務之中。另外,使用知識限制協同優化模闆和答案詞,使嵌入互相關聯。

3. 背景知識

定義D={X,Y},X是執行個體(句子),Y是關系标簽,每個執行個體由詞組成:x={w1,w2,ws…wo…wn},RE的目标是預測主語ws與賓語wo之間的關系y ∈ Y。

論文閱讀_基于知識的提示學習KnowPrompt

3.1 精調語言模型

預訓練的自然語言模型是L,之前的fine-tuning模型将x作為模型的輸入,加入類别[CLS]和分隔符[SEP],見圖-2(a),其輸出是隐藏層h,最後用h預測該執行個體屬于各個類别CLS的機率,使用交叉熵作為多分類的損失函數,在訓練過程中自然語言模型參數L和用于最終分類的參數W被訓練。

3.2 提示調優語言模型

提示調優的目标是在預測模型和下遊任務間建立橋梁,主要挑戰是如何建立問題模闆T(.)和可選答案标簽V,将它們統稱為提示P。對于每個執行個體x,模型建構它新的輸入:xprompt=T(x)。它一般包含原始文本和附加文本;V使用自然語言模型L詞表中詞作為标簽,定義M:Y->V作為注入映射表,連接配接任務标簽Y(最終抽取的關系)和标簽詞V(用于回答提示問題)。

在保留了原有文本x的基礎上,遮蔽(MASK)了xprompt中的一個或幾個詞,并用标簽詞替換,用模型L預測遮蔽位置的詞,p用于描述V在MASK處的分布:

如圖-2(b)所示,在原始文本後又加了一段帶有MASK的文本,此時,可以通過模型L計算MASK對應的向量,并計算機率分布p,用于描述V中各個可選項對于MASK位置的比對程度,M映射對于兩個可選項分别有:M(y = “per :data_of_birth”) → “birth”(當y分類per:data_of_birth,V是birth),M(y = “org :founded_by”) →“founder”(當y為org:founded_by,V為founder),然後判定哪個選項更合适。

4. 方法

此部分主要介紹KnowPrompt協同優化方法的實作,将實體類型和關系标簽中的知識用于關系提取。4.1闡述建構方法,4.2闡述優化方法。

4.1 利用知識注入建構提示

典型的提示包括兩部分:構模組化闆和答案集。本文目标是利用知識注入建構虛拟模闆詞和模拟答案詞,以實作知識抽取任務。

實體知識注入

2021年Zhou提出了實體類型标注,他在實體前後加入了特征的标記[E]和[/E],詳見圖-2(a),這一技術在關系抽取中得到廣泛使用。它用實體的類别資訊提升模型效果,但是需要對類型進行額外的标注。然而,我們可以利用關系對實體的限制得到主語和賓語的大概範圍,比如:當關系是““per:country_of_birth”時,主語是人,賓語是國家。此時可以得到主語和賓語候選集合Csub={“person”,“organization”,…}和Cobj={“organization”,“data”,…},及其中元素的分布φsub 和φobj。

如圖-2所示,用可學習的連續資料來描述實體類别,具體來說,是利用權重平均實體類型作為嵌入來初始化虛拟模闆詞:

論文閱讀_基于知識的提示學習KnowPrompt

式中的esub和eobj也是嵌入,用于描述主語和賓語的類型(它不是一種具體的類型,而是一種綜合類型,是以是虛拟的),它被插入到主語和賓語的前後(圖-2中綠色框),而e()從語言模型的詞嵌入層提取詞嵌入。使用上述方法可以從知識中自動學習更豐富的實體類型,其效果與之前方法差不多,但不需要額外标注。

簡言之,這裡的模闆,就是後加的那半句話,需要分别确定其 主語 和 謂語 的類型,而通過 謂語 可以大概估計出主語和賓語是什麼類型。

關系知識注入

之前提示調優的研究主要是建構标簽詞和任務标簽的一對一映射表,它不能表達關系标簽中豐富的語義知識。我們設定虛拟答案詞 v′∈V′,它能表達關系的語義,在模型L之後再加一層,用于學習關系嵌入,用虛拟答案集V’完全表示關系标簽Y。用p(y|x)來表示V’在MASK位置的分布。

和實體類型嵌入類似,使用Crel來表示可能的關系集合,φrel表示其中各項的機率分布。通過對關系類型的分解,在關系語義詞的候選集Crel上設定了機率分布φRel。具體方法是,計算關系中每個token的權重平均作為初始化嵌入,以此注入語義資訊。比如:y1 =per : countries_of_residence,集合Crel1 = {“person”,“countries”, “residence” },具體方法如下:

論文閱讀_基于知識的提示學習KnowPrompt

4.2 使用知識限制實作協同優化

實體類型和關系标簽之間存在着豐富的互動和聯系,且這些虛拟模闆詞和答案詞應該與周圍的上下文相關聯。是以進一步協同優化虛拟模闆詞和虛拟答案詞的參數集:

論文閱讀_基于知識的提示學習KnowPrompt
根據上下文校準提示

盡管模拟模型和答案都基于語義資訊初始化,但是它們可能不是最優的,且與上下文相關。是以,可用上下文進一步優化其表征。通過計算真實關系y和p(y|x)之間的交叉熵的損失函數來優化虛拟模闆詞和答案詞,如下所示:

論文閱讀_基于知識的提示學習KnowPrompt

此處的|X|是訓練集中的執行個體個數,可學習的連續表征可以通過模闆和答案的協同優化,自适應地學習最優表征。

簡言之,就是通過預測的關系和真實的關系計算損失優化模型。

隐含的結構限制

為注入結構資訊,我們采用了知識嵌入(KE)目标函數作為限制。使用三元組 (s,r,o) 描述關系,s,o描述主和賓的類别,r是預定義的答案V‘的關系标簽。我們直接用虛拟模闆和虛拟答案輸出的嵌入通過語言模型參與計算。損失函數定義如下:

論文閱讀_基于知識的提示學習KnowPrompt

帶’的是負例;γ是邊界;dr用于衡量頭實體尾實體及關系(算法同TransE),三元組成立時其值趨于0,不成立時其值較大;n表示所有負采樣。負采樣時,使用正确的答案填充MASK位置,随機取主語和賓語,替換為不相關的類型以構造損壞的三元組。(這裡更多細節請見代碼)

y=-log(sigmoid(x))如下圖所示:

論文閱讀_基于知識的提示學習KnowPrompt

括号裡的值越大,最終損失函數越小;對于正例,d相對邊界值γ越小越好,對于負例,d相對γ越大越好。

4.3 訓練細節

訓練分為兩個階段,第一階段使用大學習率協同優化虛拟模闆詞和模拟答案詞:

論文閱讀_基于知識的提示學習KnowPrompt

其中 λ是用于權衡兩個損失函數的超參數。

第二階段基于被優化的虛拟模闆詞和模拟答案詞,僅利用J[MASK]損失函數為語言模型調參,用較小的學習率優化所有參數。

5. 實驗

5.1 資料集

為全面測試,使用了表-1中列出的5個資料集

論文閱讀_基于知識的提示學習KnowPrompt

5.2 實驗設定

使用BERT_LARGE作為基礎模型。

基本配置

使用全部訓練資料訓練,與之前的四個模型對比。

低資源配置

使用LM-BFF提出的 8-, 16-, 32- (n為每種類别的樣例個數)方法采樣,從初始訓練和驗證集中抽取每個類的k個執行個體,以形成few-shot的訓練和驗證集。

5.3 實驗結果

基本配置
論文閱讀_基于知識的提示學習KnowPrompt
低資源配置
論文閱讀_基于知識的提示學習KnowPrompt

可以看到,樣例越少,KnowPrompt相對其它模型效果越好。

5.4 消融研究

代碼解析

資料

  • 代碼中包含五個資料集的資料,分為兩種格式,dialogue為對話資料;其它資料格式均為同一種
  • 資料集包含幾千到幾萬條訓練資料不等,除dialogure外的其它資料模式為:每條資料包含一個原始字元串,和一個頭實體、尾實體、關系的三元組,用于訓練和評測模型。
  • 每個資料目标下都包含rel2id.json檔案,它定義了可被抽取的關系及其對應id,可以看到,“答案”(或稱标簽)是有限的。

代碼

  • data/* 用于解析資料
  • dataset/* 供訓練和測試的資料
  • scripts/* 訓練各種模型使用的示例腳本
  • models/* 各種底層的預訓練模型
  • lit_models/* 核心函數
  • lit_models/transformer.py 文中模型的具體實作
  • _init_label_word(), 140行,初始化各種權重
  • training_step(),185 行,主要流程
  • ke_loss(),262行

    上述幾個函數幾乎實作了文中所有公式

繼續閱讀