當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀] 一、背景介紹 搜索場景下用戶搜索的 query 和召回文章標(biāo)題(title)的相關(guān)性對提升用戶的搜索體驗有很大幫助。query-title 分檔任務(wù)要求針對 query 和 title 按文本相關(guān)性

一、背景介紹

搜索場景下用戶搜索的 query 和召回文章標(biāo)題(title)的相關(guān)性對提升用戶的搜索體驗有很大幫助。query-title 分檔任務(wù)要求針對 query 和 title 按文本相關(guān)性進行 5 個檔位的分類(1~5 檔),各檔位從需求滿足及語義匹配這兩方面對 query-doc 的相關(guān)度進行衡量,檔位越大表示相關(guān)性越高,如 1 檔表示文本和語義完全不相關(guān),而 5 檔表示文本和語義高度相關(guān),完全符合 query 的需求。

我們嘗試將 Bert 模型應(yīng)用在 query-title 分檔任務(wù)上,將 query 和 title 作為句對輸入到 bert 中,取最后一層 cls 向量用做 5 分類(如上圖),最后得到的結(jié)果比 LSTM-Attention 交互式匹配模型要好。雖然知道了 bert能解決這個問題,我們更好奇的是"??ô":為什么 bert 的表現(xiàn)能這么好?這里面有沒有可解釋的部分呢?

因為 Multi-head-attention 是 bert 的主要組成部分,所以我們從"頭"入手,希望弄清楚各個 head 對 bert 模型有什么作用。為了研究某個 head 對模型的影響,我們需要比較有這個 head 和沒有這個 head 模型的前后表現(xiàn)。這里定義一下 HEAD-MASK 操作,其實就是針對某個 head,直接將這個 head 的 attention 值置成 0,這樣對于任何輸入這個 head 都只能輸出 0 向量。

通過 HEAD-MASK 操作對各個 head 進行對比實驗,發(fā)現(xiàn)了下面幾個有趣的點

attention-head 很冗余/魯棒,去掉 20%的 head 模型不受影響 各層 transformer 之間不是串行關(guān)系,去掉一整層 attention-head 對下層影響不大 各個 head 有固定的功能 某些 head 負責(zé)分詞 某些 head 提取語序關(guān)系 某些 head 負責(zé)提取 query-title 之間 term 匹配關(guān)系

下面我們開始實驗正文,看看這些結(jié)論是怎么得到的

二、Bert 模型 Attention-Head 實驗

attention-head 是 bert 的基本組成模塊,本次實驗想要研究各個 head 都對模型作出了什么貢獻。通過 Mask 掉某個 head,對比模型前后表現(xiàn)的差異來研究這個 head 對模型有什么樣的作用(對訓(xùn)練好的 bert 做 head-mask,不重新訓(xùn)練,對比測試集的表現(xiàn))。

bert-base 模型共 12 層每層有 12 個 head,下面實驗各個 head 提取的特征是否有明顯的模式(Bert 模型為在 query-title 數(shù)據(jù)上 finetune 好的中文字模型)

2.1 Attention-Head 比較冗余

標(biāo)準(zhǔn)大小的 bert 一共有 12*12 共 144 個 head.我們嘗試對訓(xùn)練好的 bert 模型,隨機 mask 掉一定比例的 head,再在測試數(shù)據(jù)集上測試分檔的準(zhǔn)確率(五分類)。

下圖的柱狀圖的數(shù)值表示相比于 bseline(也就是不做任何 head-mask)模型 acc 的相對提升,如+1%表示比 baseline 模型的 acc 相對提高了 1%,從下面的圖可以看到,隨機 mask 掉低于 20%的 head,在測試數(shù)據(jù)集上模型的 acc 不會降低,甚至當(dāng) mask 掉 10%的 head 的時候模型表現(xiàn)比不做 head mask 的時候還提升了 1%。當(dāng) mask 掉超過一定數(shù)量的 head 后,模型表現(xiàn)持續(xù)下降,mask 掉越多表現(xiàn)越差。

同時為了弄清楚底層和高層的 transformer 哪個對于 query-title 分類更加的重要,分別對底層(layer0 ~ layer5 )和高層(layer6~layer11)的 head 做 mask, 去掉的 head 比例控制在 0~50%(占總 head 數(shù)量)之間,50%表示去掉了底層或者是高層 100%的 head 下面的圖很清晰的說明了底層和高層的 attention-head 關(guān)系,橙色部分表示只 mask 掉高層(6 - 11 層)的 head,藍色部分表示只 mask 掉底層(0 - 5 層)的 head。

顯然高層的 attention-head 非常的依賴底層的 head,底層的 attention-head 負責(zé)提取輸入文本的各種特征,而高層的 attention 負責(zé)將這些特征結(jié)合起來。具體表現(xiàn)在當(dāng) mask 掉底層(0~5 層)的 80%的 head(圖中橫坐標(biāo)為 40%)和 mask 掉底層的 100%的 head(圖中橫坐標(biāo)為 50%)時,模型在測試數(shù)據(jù)集上表現(xiàn)下降劇烈(圖中藍色部分),說明了去掉大部分的底層 head 后只依賴高層的 head 是不行的,高層的 head 并沒有提取輸入的特征。相反去掉大部分高層的 head 后模型下降的并沒有那么劇烈(圖中橙色部分),說明了底層的 head 提取到了很多對于本任務(wù)有用的輸入特征,這部分特征通過殘差連接可以直接傳導(dǎo)到最后一層用做分類。

這個結(jié)論后面也可以用于指導(dǎo)模型蒸餾,實驗結(jié)果表明底層的 transformer 比高層的 transformer 更加的重要,顯然我們在蒸餾模型時需要保留更多的底層的 head

那么對于模型來說是否有某些層的 head 特別能影響 query-title 分類呢?假設(shè)將 bert 中所有的 attention-head 看做一個 12*12 的方陣,下面是按行 mask 掉一整行 head 后模型在測試數(shù)據(jù)上的表現(xiàn),柱狀圖上的數(shù)值表示相比 baseline 模型的相對提升。

可以看到 mask 掉第 5 層~第 9 層的 head 都模型都有比較大的正面提升,特別是當(dāng)去掉整個第 8 層的 attention-head 的時候測試數(shù)據(jù)準(zhǔn)確率相對提升了 2.3%,從上圖可以得到兩個結(jié)論:

Bert 模型非常的健壯或者是冗余度很高 Bert 模型各層之間不是串行依賴的關(guān)系,信息并不是通過一層一層 transformer 層來傳遞的

bert 模型非常的健壯或者是冗余度很高,直接去掉一整層的 attention-head 并不會對模型的最終表現(xiàn)有太大的影響。 直接去掉整層的 attention-head 模型表現(xiàn)并沒有大幅度的下降,說明各層提取的特征信息并不是一層一層的串行傳遞到分類器的,而是通過殘差連接直接傳導(dǎo)到對應(yīng)的層。

2.2 某些 head 負責(zé)判斷詞的邊界(使得字模型帶有分詞信息)

在我們的 query-title 分檔場景中,發(fā)現(xiàn)詞粒度的 bert 和字粒度的 bert 最終的表現(xiàn)是差不多的,而對于 rnn 模型來說字粒度的 rnn 很難達到詞粒度 rnn 的效果,我們希望研究一下為什么詞粒度和字粒度的 bert 表現(xiàn)差不多。

使用的 bert 可視化工具bert_viz觀察各層 attention-head 的 attention 權(quán)重分布,可以發(fā)現(xiàn)某些 head 帶有很明顯的分詞信息。推測這部分 attention-head 是專門用于提取分詞信息的 head。當(dāng)當(dāng)前的字可能是詞的結(jié)尾時,att 權(quán)重會偏向 sep,當(dāng)這個字為詞的結(jié)尾可能性越大(常見的詞結(jié)尾),sep 的權(quán)重會越高。當(dāng)當(dāng)前字不是詞結(jié)尾時,att 會指向下一個字。這種模式非常明顯,直接拿這個 attention-head 的結(jié)果用于分詞準(zhǔn)確率為 70%。

下面 gif 為我們模型中第 1 層第 3 個 head 的 attention 分布權(quán)重圖,可以發(fā)現(xiàn) attention 權(quán)重很明顯帶有詞的邊界信息,當(dāng)當(dāng)前的字是結(jié)尾時 attention 權(quán)重最大的 token 為"SEP",若當(dāng)前字不是結(jié)尾時 attention 權(quán)重最大的為下一個字。

這種用于提取分詞信息的 head 有很多,且不同的 head 有不同的分詞粒度,如果將多個粒度的分詞綜合考慮(有一個 head 分詞正確就行),則直接用 attention-head 切詞的準(zhǔn)確率在 96%,這也是為什么詞粒度 bert 和字粒度 bert 表現(xiàn)差不多的原因

這種用于提取分詞信息的 head 有很多,且不同的 head 有不同的分詞粒度,如果將多個粒度的分詞綜合考慮(有一個 head 分詞正確就行),則直接用 attention-head 切詞的準(zhǔn)確率在 96%,這也是為什么詞粒度 bert 和字粒度 bert 表現(xiàn)差不多的原因。

猜測字粒度 bert 代詞邊界信息是通過 bert 的預(yù)訓(xùn)練任務(wù) MLM 帶來的,語言模型的訓(xùn)練使得 bert 對各個字之間的組合非常的敏感,從而能夠區(qū)分詞的邊界信息。

2.3 某些 head 負責(zé)編碼輸入的順序

我們知道 bert 的輸入為 token_emb+pos_emb+seg_type_emb 這三個部分相加而成,而文本輸入的順序完全是用 pos_emb 來隱式的表達。bert 中某些 head 實際上負責(zé)提取輸入中的位置信息。這種 attention-head 有明顯的上下對齊的模式,如下圖:

原輸入: query="京東小哥", title="京東小哥最近在干嘛",bert 模型判定為 4 檔

將 title 順序打亂: query="京東小哥", title="近東嘛最都在干哥小京",bert 模型判定為2 檔 將 title 順序打亂: query="京東小哥", title="近東嘛最都在干哥小京",mask 掉 7 個懷疑用于提取語序的 head,bert 模型判定為3 檔

下面的圖分別對比了不做 mask,隨機 mask 掉 7 個 head(重復(fù) 100 次取平均值),mask 掉 7 個特定的 head(懷疑帶有語序信息的 head) 從下面的圖看到,mask 掉 7 個特定的 head 后整體分檔提升為 3 檔,而隨機 mask 掉 7 個 head 結(jié)果仍然為 2 檔,且檔位概率分布和不 mask 的情況差別不大。

這個 case 說明了我們 mask 掉的 7 個特定的 head 應(yīng)該是負責(zé)提取輸入的順序信息,也就是語序信息。將這部分 head mask 掉后,bert 表現(xiàn)比較難察覺到 title 中的亂序,從而提升了分檔。

2.4 某些 head 負責(zé) query 和 title 中相同部分的 term 匹配

query 和 title 中是否有相同的 term 是我們的分類任務(wù)中非常關(guān)鍵的特征,假如 query 中大部分 term 都能在 title 中找到,則 query 和 title 相關(guān)性一般比較高。如 query="京東小哥"就能完全在 title="京東小哥最近在干嘛"中找到,兩者的文本相關(guān)性也很高。我們發(fā)現(xiàn)部分 attention-head 負責(zé)提取這種 term 匹配特征,這種 head 的 attention 權(quán)重分布一般如下圖,可以看到上句和下句中相同 term 的權(quán)重很高(顏色越深表示權(quán)重越大)。

其中在第 2~第 4 層有 5 個 head 匹配的模式特別明顯。我們發(fā)現(xiàn)雖然 bert 模型中 attention-head 很冗余,去掉一些 head 對模型不會有太大的影響,但是有少部分 head 對模型非常重要,下面展示這 5 個 head 對模型的影響,表格中的數(shù)值表示與 baseline 模型的 acc 相對提升值

--不做 HEAD-MASK隨機 MASK 掉 5 個 HEADMASK 掉 5 個指定的 HEADMASK 掉 0~5 層所有 HEADMASK 掉 0 ~ 5 層其他 HEAD, 只保留這 5 個指定 HEAD測試數(shù)據(jù)準(zhǔn)確率+0%+0%-52.4%-86.5%-18.1%

利用測試數(shù)據(jù)作為標(biāo)準(zhǔn),分別測試隨機 mask 掉 5 個 head 和 mask 掉 5 個指定的 head(這些 head 在 attention 可視化上都有明顯的 query-title 匹配的模式)。從結(jié)果可以看到去掉這些負責(zé) query-title 匹配的 head 后模型表現(xiàn)劇烈下降,只去掉這 5 個 head 就能讓模型表現(xiàn)下降 50%。甚至 mask 掉 0~5 層其他 head,只保留這 5 個 head 時模型仍維持 baseline 模型 82%的表現(xiàn),說明了 query-title 的 term 匹配在我們的任務(wù)中是非常重要的。

這也許是為什么雙塔 bert 在我們的場景下表現(xiàn)會那么差的原因(Bert+LSTM 實驗中兩個模型結(jié)合最后的表現(xiàn)差于只使用 Bert, Bert 的輸入為雙塔輸入),因為 query 和 title 分別輸入,使得這些 head 沒有辦法提取 term 的匹配特征(相當(dāng)于 mask 掉了這些 head),而這些匹配特征對于我們的分類任務(wù)是至關(guān)重要的

2.4.1 finetune 對于負責(zé) term 匹配 attention-head 的影響

在 query-title 分檔任務(wù)中 query 和 title 中是否有相同的 term 是很重要的特征,那么在 finetune 過程中負責(zé) query-title 中相同 term 匹配的 head 是否有比較明顯的增強呢?

下面以 case 為例說明: query="我在伊朗長大" title="假期電影《我在伊朗長大》"

下圖展示了 query-title 數(shù)據(jù)***finetune 前*****某個**負責(zé) term 匹配的 head 的 attention 分配圖

在沒有 finetune 前,可以看到某些 head 也會對上下句中重復(fù)的 term 分配比較大的 attention 值,這個特質(zhì)可能是來自于訓(xùn)練任務(wù) NSP(上下句預(yù)測)。因為假如上句和下句有出現(xiàn)相同的 term,則它們是上下句的概率比較大,所以 bert 有一些 head 專門負責(zé)提取這種匹配的信息。

除了上下句相同的 term 有比較大的注意力,每個 term 對自身也有比較大的注意力權(quán)重(體現(xiàn)在圖中對角線上的值都比較大) 為了更直觀的看訓(xùn)練前后哪部分的 attention 值有比較大的改變,分別展示訓(xùn)練后 attention增強(微調(diào)前-微調(diào)后>0)和訓(xùn)練后 attention減弱(微調(diào)前-微調(diào)后<0)的 attention 分配圖??梢杂^察到比較明顯的幾個點:

query 和 title 中 term 匹配的 attention 值變大了 從下圖可以看到, query 和 title 中具有相同 term 時 attention 相比于訓(xùn)練前是有比較大的增強。說明在下游任務(wù)(query-title 分檔)訓(xùn)練中增強了這個 head 的相同 term 匹配信息的抽取能力。 term 和自身的 attention 變小了 模型將重點放在找 query 和 title 中是否有相同的 term,弱化了 term 對自身的注意力權(quán)重 分隔符 sep 的 attention 值變小了。 有論文指出當(dāng)某個 token 的 attention 指向 sep 時表示一種不分配的狀態(tài)(即此時沒有找到合適的 attention 分配方式),在經(jīng)過 finetune 后 term 指向 sep 的權(quán)重變小了,表示經(jīng)過 query-title 數(shù)據(jù)訓(xùn)練后這個 head 的 attention 分配更加的明確了。 2.4.2 是否有某個 head 特別能影響模型

從上面的實驗可以看到,bert 模型有比較多冗余的 head。去掉一部分這些 head 并不太影響模型,但是有少部分 head 特別能影響模型如上面提到的負責(zé)提取上下句中 term 匹配信息的 head,只去掉 5 個這種 head 就能讓模型的表現(xiàn)下降 50%。那么是否有某個 head 特別能影響結(jié)果呢?

下面實驗每次只 mask 掉一個 head,看模型在測試數(shù)據(jù)中表現(xiàn)是否上升/下降。下圖中將 bert 的 144 個 head 看作 12X12 的矩陣,矩陣內(nèi)每個元素表示去掉這個 head 后模型在測試數(shù)據(jù)上的表現(xiàn)。其中 0 表示去掉后對模型的影響不太大。元素內(nèi)的值表示相對于 baseline 的表現(xiàn)提升,如+1%表示相比 baseline 的 acc 提高了 1%。

可以看到對于 bert 的大部分 head,單獨去掉這個 head 對模型并不會造成太大的影響,而有少部分 head 確實特別能影響模型,比如負責(zé)上下句(query-title)中相同 term 匹配的 head。即使去掉一個這種 head 也會使得模型的表現(xiàn)下降。同時注意到高層(第 10 層)有一個 head 去掉后模型表現(xiàn)變化也很大,實驗發(fā)現(xiàn)這個 head 功能是負責(zé)抽取底層 head 輸出的特征,也就是 3-4 層中 head 抽取到輸入的 query-title 有哪些相同 term 特征后,這部分信息會傳遞到第 10 層進一步進行提取,最后影響分類。

2.4.3 高層 head 是如何提取底層 head 特征-一個典型 case

上圖中,在第 10 層有一個 head 去掉后特別能影響模型,觀察其 attention 的分布,cls 的 attention 都集中在 query 和 title 中相同的 term 上,似乎是在對底層 term 匹配 head 抽取到的特征進一步的提取,將這種匹配特征保存到 cls 中(cls 最后一層會用于分類)。

在沒有做任何 head-mask 時, 可以看到 cls 的 attention 主要分配給和 query 和 title 中的共同 term "紫熨斗",而 mask 掉 5 個 2~4 層的 head(具有 term 匹配功能)時, 第 10 層的 cls 注意力分配明顯被改變,分散到更多的 term 中。

這個 case 展示了高層 attention-head 是如何依賴底層的 head 的特征,進一步提取底層的特征并最后作為重要特征用于 query-title 分類。

結(jié)語

本文主要探討了在 query-title 分類場景下,bert 模型的可解釋性。主要從 attention-head 角度入手,發(fā)現(xiàn) attention 一方面非常的冗余,去掉一部分 head 其實不會對模型造成多大的影響。另外一方面有一些 head 卻非常的能影響模型,即使去掉一個都能讓模型表現(xiàn)變差不少。同時發(fā)現(xiàn)不同的 head 實際上有特定的功能,比如底層的 head 負責(zé)對輸入進行特征提取,如分詞、提取輸入的語序關(guān)系、提取 query 和 title(也就是上下句)中相同的 term 信息等。這部分底層的 head 提取到的特征會通過殘差連接送到高層的 head 中,高層 head 會對這部分特征信息進行進一步融合,最終作為分類特征輸入到分類器中。

本文重點討論了哪些 head 是對模型有正面作用,也就是去掉這些 head 后模型表現(xiàn)變差了。但是如果知道了哪些 head 為什么對模型有負面作用,也就是為什么去掉某些 head 模型效果會更好,實際上對于我們有更多的指導(dǎo)作用。這部分信息能夠幫助我們在模型加速,提升模型表現(xiàn)上少走彎路。

參考文獻

[1] Clark K, Khandelwal U, Levy O, et al. What Does BERT Look At? An Analysis of BERT's Attention[J]. arXiv preprint arXiv:1906.04341, 2019.

[2] Vig J. A multiscale visualization of attention in the transformer model[J]. arXiv preprint arXiv:1906.05714, 2019.

【編輯推薦】

支持108種語言的谷歌翻譯如何用AI讓翻譯質(zhì)量越來越好?模型壓縮95%,MIT韓松等人提出新型Lite Transformer谷歌開源“窮人版”摘要生成NLP模型:1000個樣本就能打敗人類如何用谷歌Kubernets搞集群管理?數(shù)據(jù)不夠,Waymo用GAN來湊:用生成圖像在仿真環(huán)境中訓(xùn)練模型【責(zé)任編輯:張燕妮 TEL:(010)68476606】
點贊 0

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉