試談?wù)Z言模型中無監(jiān)督非結(jié)構(gòu)化知識融入

?? Reading Group 的 pdf 版本 blog 版本

  1. 結(jié)構(gòu)化/純文本

之前的一系列將知識融入 BERT 的工作大多基于 entity 三元組這種結(jié)構(gòu)化數(shù)據(jù).

這就要求有大量且高質(zhì)量的人工標(biāo)注(當(dāng)然我們有 HowNet, WordNet, WikiData), 人工標(biāo)注必然出現(xiàn)大量噪聲, 結(jié)構(gòu)化數(shù)據(jù)更新周期普遍更長.

MLM 的無監(jiān)督是否是無監(jiān)督的極限(當(dāng)然 ERNIE 2.0 那種偏語法的任務(wù)也可以算), 能否有一種無監(jiān)督或者弱監(jiān)督的任務(wù)/模式 增強(qiáng)原先的預(yù)訓(xùn)練語言模型中的知識信息.

  1. LMs are KBs?

EMNLP 2019 的這篇文章 Language Models as Knowledge Bases? 設(shè)計(jì)了 cloze style 的 Probing 實(shí)驗(yàn)(大多是 Commensense 的問答任務(wù))來證明語言模型的知識性.

雖然現(xiàn)在看起來語言模型學(xué)到的更多還是共現(xiàn)關(guān)系, 對于低頻詞效果沒有那么好, 但所蘊(yùn)含的知識信息幾乎和 KBs 類的方法相近.

除去 RoBERTa 這個(gè)異類, 之前的工作顯示不 fine-tune 時(shí)遠(yuǎn)低于其他 LMs, fine-tune 了又遠(yuǎn)高于其他.

想辦法增加 LMs 的知識能力還是很有道理的.

  1. 腳注/引用

在日常書寫中, 其實(shí)我們會(huì)大量使用腳注/引用來解釋真實(shí)的含義, 輔助讀者理解.

對于語言模型來說, 這部分信息是缺失的.

基于以上幾點(diǎn), 這篇文章淺顯的介紹一下目前預(yù)訓(xùn)練語言模型中無監(jiān)督知識融入的一些解決方案.

主要介紹以下兩篇工作:

  1. Generalization through Memorization: Nearest Neighbor Language Models. ICLR 2020
  2. REALM: Retrieval-Augmented Language Model Pre-Training.

k NN-LM

Generalization through Memorization: Nearest Neighbor Language Models. ICLR 2020

這篇工作是 ICLR2020 的工作, 出發(fā)點(diǎn)是利用 k NN 增強(qiáng)長程依賴(這已經(jīng)不是長程了, 叫跨篇章依賴更合適一點(diǎn)).

image

做法很簡單. 拿 BERT-base 對數(shù)據(jù)中的每一個(gè) token 生成一個(gè)(上下文表征 k-(其他 LMs 可能是只有上文), 當(dāng)前詞 v) Pair 對, 合成一個(gè)很大的集合 N.

當(dāng)預(yù)測時(shí)需要獲取表征的時(shí)候, 計(jì)算 N 中每一個(gè) k 與當(dāng)前詞計(jì)算得到的表征之間的距離, 此處使用 L2 距離進(jìn)行計(jì)算.

最后預(yù)測詞關(guān)于 x 的條件概率. 由兩部分組成, 原先的 LM 概率和 kNN 的概率, 兩者插值之后獲得最后結(jié)果.

模型在訓(xùn)練過程中不 fine-tune 預(yù)訓(xùn)練模型參數(shù), 利用 FAISS 來優(yōu)化檢索空間(一種優(yōu)化版的 LSH).

image

主要在 WikiText 103 和 BookCorpus 上做了測試, 其中 WikiText 103 的 baseline 是 Adaptive Input Representations for Neural Language Modeling.

其主要思想是按照詞頻分成 N 個(gè)桶, 桶之間的 embedding size 隨著指數(shù)減小, 借鑒了 Adaptive Softmax 的想法, 之前是 WikiText103 的 SOTA.

對比 Transformer-XL 的結(jié)果, 可以看出 kNN-LM 帶來的 ppl 的提升還是很明顯的.

直觀上來看 ppl 表征的是語言模型概率等可能輸出個(gè)數(shù), 或者是平均概率下選取到正確輸出需要的次數(shù).

kNN 的想法顯著的提升 ppl 就可以理解為在語義相近的情況下, 增強(qiáng)了顯著的共現(xiàn)模式, 從而減小了等概率個(gè)數(shù).

image

對比拿數(shù)據(jù) Fine-tune 和拿數(shù)據(jù)做 dataStore, 在用 WikiText 103 Fine-tune 模型的基礎(chǔ)上用 WikiText 3B 做 dataStore 的效果顯著比拿數(shù)據(jù) Fine-tune 效果好.

跨領(lǐng)域/zero-shot 的實(shí)驗(yàn)中也能發(fā)現(xiàn)即使沒有在 BookCorpus 上學(xué)習(xí)過, 只用 BookCorpus 制作 DataStore 蘊(yùn)含的信息能提升 ppl 14 個(gè)點(diǎn), 雖然和 fine-tune 的結(jié)果還有差距.

image

還測試了 Transformer 結(jié)構(gòu)中不同位置的輸出對于最后提升的影響(看起來這個(gè)作者有點(diǎn)閑

得到的結(jié)果是 FFN 之前 LN 之后這個(gè)位置效果最好, 筆者的理解是 MHSA 更關(guān)注與當(dāng)前 sentence 本身, FFN 更關(guān)注與上下文的 memory, 不經(jīng)過 FFN 可以更突出當(dāng)前句子的信息.

image

當(dāng)然有人會(huì)懷疑 kNN 這種模式是否和 n-gram 類似, 作者對比了 n-gram 和 kNN 的結(jié)果, 使用 n-gram 之后 performance 變化不大.

最后討論了一下顯示存儲(chǔ) memory 和隱式存儲(chǔ) memory 兩種情況, 這邊作者用去掉 Dropout 來模擬隱式存儲(chǔ) memory。 他的論點(diǎn)是 loss 已經(jīng)降到 0 了說明模型已經(jīng)蘊(yùn)含所有必要的知識了. 對比使用 Dropout, 效果差很多.

當(dāng)然這個(gè)問題更多的是一個(gè)如何利用 memory, 上面的實(shí)驗(yàn)最起碼可以證明 Transformer 理論上是具有很強(qiáng)的 memory 能力的.

幾點(diǎn)討論:

  1. kNN-LM 的方式本質(zhì)上來講還是一種利用檢索增強(qiáng)共現(xiàn)模式的知識融入.
  2. 需要構(gòu)建 dataStore 的數(shù)據(jù)集和測試集之間存在較強(qiáng)的關(guān)聯(lián)度.
  3. 對于時(shí)間復(fù)雜度部分, 作者在 openview 的時(shí)候說明大概花費(fèi)和 fine-tune 差不多的時(shí)間, 在 interface 階段會(huì)比純 Transformer 要慢一點(diǎn), 大概從 500 tokens per second 降到 60 tokens per second.
  4. 目前尚不清楚這種模式是否能在其他下游任務(wù) work, 雖然直觀上來感受應(yīng)該是能增強(qiáng)表征的, 還是需要更多的實(shí)驗(yàn)進(jìn)行驗(yàn)證.
  5. 這篇文章中 k 取得是 1024, 是一個(gè)比較大的數(shù), 畫出來的曲線可以看出隨著 k 的增大, ppl 能不斷的下降.

REALM

REALM: Retrieval-Augmented Language Model Pre-Training.

image

這篇的工作是在幾位 dalao ACL2019 那篇 ORQA 的基礎(chǔ)上做的工作. 共一和通訊作者是 BERT 四分之二作者.

這篇文章主要是在 Open domain task 上做的工作(畢竟是谷果的核心業(yè)務(wù) ??)

大概思路是利用一個(gè)隱式的 Retriever 來擴(kuò)展語料增強(qiáng)語義. p(y | x)=\sum_{z \in \mathcal{Z}} p(y | z, x) p(z | x)

將預(yù)測詞相對于上下文的條件概率展開成相關(guān)篇章基于上下文的概率與預(yù)測詞相對于上下文和篇章的概率乘積之和.

  • 對于預(yù)訓(xùn)練模型來說, x 是被 mask 之后的 sentence, y 是預(yù)測的被 mask 掉的那些詞.
  • 對于 Fine-tune 來說, 比如說 open-QA x 就是問句 y 則是答案

對于 Retriever 來說, input 得到的 embed 和 document 得到的 embed 矩陣相乘過一個(gè) softmax 就是 z 相對于 x 的概率輸出.

  • 具體來說輸入 x 的 embed, 是 x 這句話的 CLS 指示符的 BERT representation 輸出, 再乘上一個(gè)線性矩陣(在 ORQA 中這個(gè)矩陣起到縮小維度的作用)
  • 文檔的 embed 則是將 document 的 title 和 body 拼接起來用 sep 分割, 同樣取 CLS 的輸出再乘上一個(gè)線性矩陣
  • 這邊考慮兩個(gè) Embed 相乘, 感覺更多的預(yù)先處理的角度.

p(z | x)=\frac{\exp f(x, z)}{\sum_{z^{\prime}} \exp f\left(x, z^{\prime}\right)}

f(x, z)=\text { Embed }_{\text {input }}(x)^{\top} \text { Embed }_{\text {doc }}(z)

\text { Embed }_{input}(x)=\mathbf{W}_{\text {input }} \operatorname{BERT}_{\text {CLS }}\left(\text { join }_{\text {BERT }}(x)\right)

\text { Embed }_{\text {doc }}(z)=\mathbf{W}_{\text {doc }} \operatorname{BERT}_{\text {CLS }}\left(\text { join }_{\text {BERT }}\left(z_{\text {title }}, z_{\text {body }}\right)\right)

知識增強(qiáng)編碼器的計(jì)算分為預(yù)訓(xùn)練和微調(diào)兩個(gè)模式

  • Pre-trained.
    • j 位置預(yù)測為 y_j 的概率乘積
    • 而 y_j 在 z, x 下的概率與拼接 x 與 z 的正文部分得到的在 Mask_j 位置的表征的指數(shù)次呈正相關(guān).
  • Fine-tune
    • n 個(gè) span 的表征之和
    • span 的表征則為將 x 與 z 的正文部分拼接在一起在 span start end 兩個(gè)位置的 representations 輸出 concat 在一起, 然后過一個(gè) MLP 之和再取指數(shù)次.

\begin{aligned} p(y | z, x) &=\prod_{j=1}^{J_{x}} p\left(y_{j} | z, x\right) \\ p\left(y_{j} | z, x\right) & \propto \exp \left(w_{j}^{\top} \operatorname{BERT}_{\operatorname{MASK}(j)}\left(\text { join }_{\mathrm{BERT}}\left(x, z_{\mathrm{body}}\right)\right)\right) \end{aligned}

當(dāng)然 z 對于 x 的分布是一個(gè)長尾分布, 大部分 z 對于 x 都是沒用的, top-K 是一個(gè)很顯然的思路.
再利用 LSH 這種 MIPS 方法對搜索空間進(jìn)行優(yōu)化.
LSH 的思路大概就是高維空間的投影能保留相近的關(guān)系, 但投影中相近不能保證高維空間中相近, 所以一般會(huì)使用多個(gè) Hash 函數(shù)聯(lián)合判斷.
最近 LSH 出鏡率還蠻高的, Reformer 之類的都有提到.

因?yàn)槭褂昧?LSH, 就需要預(yù)計(jì)算 document 的 Embed, 但在訓(xùn)練過程中這個(gè) Embed 也會(huì)變, 這邊就采用了一個(gè)延遲更新的想法, 實(shí)際中每隔 500step 更新一次 document Embed 參數(shù).
這部分更新的只是 Top-K 的參數(shù).
作者認(rèn)為經(jīng)過預(yù)訓(xùn)練 Document 的 Embed 已經(jīng)很好了, 在 Fine-tune 階段 Document 的 Embed 就固定了不再進(jìn)行訓(xùn)練了.

image

然后還加了一些 tricks 上去

  1. Span level 的 Mask. 用了在 CoNLL-03 上面 fine-tune 的 BERT-base 作為 chuck 工具來獲取 entity 的邊界. 后面結(jié)果顯示這個(gè)操作至關(guān)重要.(其實(shí)覺得 SpanBERT 那個(gè)操作有點(diǎn)迷)
  2. 考慮到有些 sentence 不需要其他 document 輔助, 在 Document 中增加空 Document.
  3. 當(dāng) x 句子在檢索時(shí), 去除 x 句子所在的 Document, 避免變成單純的學(xué)習(xí)到詞句匹配.
  4. 由上面的描述, 我們可以看出, 這是一個(gè)很看重初始化過程的模型.當(dāng)然也可以理解為就是在 pre-trained 基礎(chǔ)上 pre-trained, 看 lr 也是.
    • 對于 Retriever 利用 Inverse Cloze Task (ICT)任務(wù). ICT 任務(wù)是將 document 挖去一些句子, 然后判斷句子是否屬于這個(gè)文檔. ICT 幫助模型獲得除詞匹配之外語義匹配的能力.
    • 對于 Knowledge Augment Encoder 來說, 直接使用 BERT-based.

作者除了提出以上模型, 訓(xùn)練方法之外, 還試圖解釋 Retriever 學(xué)習(xí)到的內(nèi)容.

\begin{aligned} \nabla \log p(y | x) &=\sum_{z \in \mathcal{Z}} r(z) \nabla f(x, z) \\ r(z) &=\left[\frac{p(y | z, x)}{p(y | x)}-1\right] p(z | x) \end{aligned}

logp(y|x)對 Retriever 參數(shù)求偏導(dǎo)可以得到(這一部分推到可以參考我在 pdf 中手推的過程)

相當(dāng)于模型的梯度是向那些加上 z 條件概率變大的樣本.
這也很符合直觀感受, Retriever 學(xué)到的更多的是篩選能提升 performance 的文檔的能力.

如果使用 DrQA 的思路, 上式的導(dǎo)數(shù)可化作參考樣本的梯度.

實(shí)驗(yàn)是主要在 Open-QA 三個(gè)數(shù)據(jù)集上做了測試.
相對于強(qiáng) baseline ORQA 和 T5 的 11b 兩個(gè) baseine 都有顯著的提升.

image

Ablation 實(shí)驗(yàn)可以看出參數(shù) Fine-tune 影響不是特別大, mask 機(jī)制影響特別大, 基本上包括了所有的提升點(diǎn).
我的理解是 random Mask 容易使得 sentence 失去原本的語義, 從而對 Retriever 產(chǎn)生巨大的影響.

image

同樣的, 設(shè)計(jì)了一個(gè) RU 指標(biāo), 來 probing Retriever 對模型的影響.

\mathrm{RU}(z | x)=\log p(y | z, x)-\log p(y | \varnothing, x)

image
image

幾點(diǎn)討論:

  1. 看起來參數(shù)初始化對模型的效果影響很大.
  2. 隱變量的方式看起來很優(yōu)雅, 得到兩個(gè)副產(chǎn)物: retriever 和 文檔級的 representations.
  3. 注意到 Mask 策略對結(jié)果影響很大, 這是一個(gè)隱患, 最好能有一個(gè) ORQA + mask 的對比試驗(yàn).
  4. 這是一種利用無監(jiān)督的方式將非結(jié)構(gòu)化數(shù)據(jù)中的知識融入到 LMs 中的策略, 看起來比較自然.究竟是結(jié)構(gòu)化的方法更好一點(diǎn)還是非結(jié)構(gòu)化的更好一點(diǎn)呢?
  5. 可以通過更換語料來較快的更新語言模型中的信息, 但是對于“Thatcher” for “__ is the prime minister of United Kingdom.”模型還是回答錯(cuò)了.個(gè)人的理解這種方式更多的還是增強(qiáng)共現(xiàn)關(guān)系的策略, 當(dāng)然這個(gè)時(shí)候結(jié)構(gòu)化數(shù)據(jù)可能就有優(yōu)勢. 我覺得除了三元組的方式之外, 對于實(shí)效性很強(qiáng)的, 是不是可以只用最近的語料進(jìn)行訓(xùn)練, 這樣的效果可能會(huì)更好一點(diǎn).

總結(jié)

弱監(jiān)督或者無監(jiān)督擁有更強(qiáng)的泛化能力, 對于知識融入這個(gè)問題來說這兩篇工作嘗試使用 kNN 和隱變量的方式融入非結(jié)構(gòu)化的信息, 具有開創(chuàng)性.

水平有限, 歡迎討論.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容