LAMA & AutoPrompt

2024年2月6日 21点热度 0人点赞

LAMA

LAMA: Language Models as Knowledge Bases? 2019.9

Github: https://github.com/facebookresearch/LAMA

任務:NLU(實事抽取)

prompt: cloze Hand Craft Prompt

核心:不經過微調的Bert在知識抽取和開放與問答上效果驚人的好,可以比肩有監督的KG基準

LAMA是在GPT2和GPT3之間提出的一個探測(probe)任務,旨在研究預訓練模型存儲的知識信息,這裡隻考慮實體關系三元組(Subject, Relation, Object)。

LAMA設計的Probe方案就是人工設計的完形填空(cloze)類型的prompt模板。例如把出生地實體識別,轉化成小明出生於[MASK]的完形填空任務,如果模型預測MASK正確,就認為模型掌握了這一知識。

來具體說下LAMA針對不同關系構建的Prompt模板。論文使用以下4個評測數據

  1. Google-RE

Wikipedia抽取的事實,包括5種關系,論文隻保留了出生地,死亡地,出生日期3種關系,因為剩餘兩種的預測結果為多token,而LAMA的答案模板限制隻預測1個token。每種關系作者手工構建了Prompt填空模板,舉個栗子

  • 出生時間
    • Federico Falco is an Argentinian writer born in [MASK] .
    • Steve Lindsey (born May, 6th [MASK]) is an American record producer
  • 出生地
    • Lucy Toulmin Smith was born at [MASK], Massachusetts, USA
    • Born in [MASK], New Jersey, Connor attended parochial schools as a child
  • 死亡地
    • Uvedale Tomkins Price died at [MASK] in 1764
    • Lewin died on December 18, 2010, at the age of 84 in [MASK]
  1. T-REx

wikidata三元組,比Google-RE范圍更廣,作者選取了41種關系,每種關系采樣了1000條事實。每種關系作者手工構建了Prompt模板,部分Prompt如下

  1. ConceptNet

多語言詞之間的常識關系,作者隻考慮object為英文單字的16種關系,部分prompt如下

  1. SQuAD

QA數據集,論文選取了305條上下文無關,且回答為單字的問題。prompt模板通過人工把問題改造成MLM語句得到,舉個例子

  • The Normans combine with the [MASK] culture in Ireland
  • Isaac's chains made out of [MASK].

因為LAMA隻檢測實體三元組關系,所以除Squad外的prompt模板可以抽象為'[X] relation [Y]'的完形填空形式, 但是prompt構建本身還是依賴人工,完整的LAMA數據集詳見github~

這類Hand Crafted Prompt的構建主要有2個問題,一個是全靠人工,另一個在論文中也有提到就是不同的prompt對結果有較大影響,那如何找到最優的構建方案是個需要解決的問題

在Answer模板上LAMA限定了答案隻能是token,這和它選擇的預訓練模型是BERT有關,所以Answer的解析沒啥好說的就判斷預測token是否正確即可。

其他探測任務相關的細節這裡就不展開,感興趣的盆友可以去看論文~

AutoPrompt

paper: AutoPrompt Eliciting Knowledge from Language Models,2020.10

github: https://github.com/ucinlp/autoprompt

任務:NLU(NLI,實事抽取,關系抽取)

prompt: Discrete Gradient Search Prompt

AutoPrompt是在LAMA上的改進,針對LAMA需要人工構造Prompt的問題,提出了一種基於梯度自動生成提示詞的方案。論文針對分類任務,作者設計了通用的prompt模板如下,在原始文本輸入的基礎上,拼接多個觸發詞[T],最後一個MASK token為模型預測[P]。

下面分別針對Prompt和Answer Engineering來說下細節

Gradient-Based Prompt Search

LAMA的一個核心問題就是人工構造Prompt的成本和效果的不確定性,AutoPrompt借鑒了文本對抗AdvTrigger的梯度搜索方案,給定樣本和模型可以自動搜索任務相關觸發詞。

AdvTrigger旨在找到和輸入以及模型無關的通用Trigger,把這個Trigger拼接在輸入文本的開頭或者結尾可以使得模型得到特定的結果,可以是增加模型的誤判率,使得模型輸出有種族歧視的文本,或者讓模型輸出相同的錯誤結果等等。以下是AdvTrigger中給出的例子(註意以下案例隻顯示模型結果)

AutoPrompt使用了相同的Trigger搜索方式,首先把觸發詞用[MASK]初始化,然後逐步迭代來最大化以下似然函數,即加入觸發詞後MASK預測為正確標簽的概率最大化

p(y|xprompt)=∑wp([MASK]=w|xprompt)

每一步迭代通過用以下一階泰勒展開來近似把觸發詞改成j後似然函數的變化(梯度*詞向量),得到最大化似然函數的topK個觸發詞。然後把觸發詞拼接輸入,重新計算上述似然函數。以上兩步迭代多次,得到最終的TopK觸發詞,這裡K作為超參可以有{3,6}個

Vcand=topkw∈V[wTin▽logp(y|xprompt)]

所以AutoPrompt雖然省去了人工構建prompt,但是需要下遊標註任務樣本來搜索觸發詞,一定程度上不算是tunning-free范式,更像是Fixed-LM Prompt-Tunning,除非搜索得到的觸發詞能直接遷移到相同任務其他領域數據中,不過這部分論文中並未評測。

Auto Label Token Selection

AutoPrompt除了評估事實抽取任務,還加入了對分類任務的評估所以需要對Answer部分進行額外處理把模型預測的token映射到分類標簽。這裡主要是多token到單label的映射,例如哪些單詞代表情感正向,哪些是負向。依舊是基於下遊人物樣本的有監督方案,top-k標簽詞的選擇需要兩步

第一步是label表征,作者使用了模型對[MASK]的模型輸出作為x,真實標簽作為Y,訓練了一個logit classifer,這時模型權重(hidden_size * label_size )其實就是標簽的空間表征

第二步是token打分,作者把[MASK]替換為其他候選token,p(y|htoken)�(�|ℎ�����)概率值越高,意味著token的輸出向量和標簽向量相似度越高,因此選擇概率值最高的K個token來作為標簽的答案詞。

最後我們看下AutoPrompt搜索得到的觸發詞和答案長啥樣,可以說是完全出乎意料,毫無邏輯可言,觸發詞和答案候選詞都很離譜哈哈哈

至於效果AutoPrompt超越LAMA嘛,本身AutoPrompt就是使用下遊任務樣本搜索的Prompt和label,不好才奇怪不是~~~