理解BERT Transformer:Attention is not all you need!
BERT是谷歌近期釋出的一種自然語言處理模型,它在問答系統、自然語言推理和釋義檢測(paraphrase detection)等許多工中都取得了突破性的進展。在這篇文章中,作者提出了一些新的見解和假設,來解釋BERT強大能力的來源。作者將語言理解框架分解為解析和組合兩個部分,注意力機制主要體現在解析過程,而組合過程也在BERT中起到了重要作用,因此作者提出對於BERT Transformer來說:attention isn’t all you need!
為什麼BERT很重要
BERT是谷歌近期釋出的一個自然語言處理模型,它在問答系統、自然語言推理和釋義檢測(paraphrase detection)等許多工中都取得了突破性的進展。並且由於BERT是開源的,因此它在學界很受歡迎。
下圖顯示了GLUE基準分數的演變,GLUE基準分數是多種NLP評估任務的平均分數。
雖然目前還不清楚是否所有的GLUE任務都是非常有意義的,但是基於Transformer編碼器的通用模型(open-GPT、BERT和BigBird)在不到一年的時間內就縮小了任務專用模型與人類的差距。
然而,正如Yoav Goldberg在論文《Assessing BERT’s Syntactic Abilities》中所指出的,我們並不能完全理解Transformer是如何編碼句子的。
與RNN相比,Transformer完全依賴注意力機制,並且,除了用單詞的絕對位置嵌入來標記每個單詞之外,Transformer對單詞順序沒有明確的概念。這種對注意力的依賴可能導致它在對語法敏感的任務上表現較差,而RNN(LSTM)模型能夠直接對單詞順序建模,並顯式跟蹤句子狀態。
目前已有一些文章探討了BERT的技術細節。在這裡,我們嘗試提出一些新的見解和假設,來解釋BERT強大能力的來源。
語言理解的框架:解析-組合
人類理解語言的方式是一個長期存在的哲學問題。在20世紀,兩個互補的理論揭示了這個問題:
組合性原理(Compositionality principle):片語的含義來源於單個單詞的含義,以及這些單片語合的方式。根據這一原理,名詞短語“食肉植物(carnivorous plants)”的含義可以通過“食肉(carnivorous)”和“植物(plant)”的組合過程中推匯出來。[Szabó 2017]
另一個原理是語言的層次結構:通過分析,句子可以分解成簡單的結構,如從句。而從句又可以進一步分解為動詞短語和名詞短語,等等。
通過對句子的層次結構進行解析,並遞迴地從其組成部分中推導含義,直到達到句子層面,這是一個很好的語言理解方法。假設這樣一句話,“Bart watched a squirrel with binoculars(巴特用望遠鏡觀察一隻松鼠)”。一個好的解析元件可以生成下面的分析樹:
句子的意思可以從連續的組合中推匯出來,首先是“a”和“squirrel”的組合,然後是“watched”和“a squirrel”的組合,最後是“watched a squirrel”和“with binoculars”的組合,直到得到整個句子的意思。
向量空間(詞嵌入)可用於表示單詞、片語和句子的其他成分。組合過程可以構造為函式f,該函式將(“a”、“squirrel”)組合成一個有意義的向量表示,“a squirrel”=f(“a”、“squirrel”)。[Baroni 2014]
然而,組合和解析都是很困難的任務,並且它們互相依賴。
顯然,組合過程需要依靠解析的結果來確定應該組合什麼。但即使有了正確的輸入,組合也是一個難題。例如,形容詞的含義會根據它所描述的單詞而變化:“white wine(白葡萄酒)”的顏色實際上是黃色的,而“white cat(白貓)”確實是白色的。這種現象稱為共同組合(co-composition)。[Pustejovsky 2017]
更廣泛的上下文環境對於組合過程也是必要的。例如,“green light(綠燈)”中的詞應該如何組合取決於具體情況。“綠燈”可以表示授權,或實際綠色的燈。有些習慣用語的含義需要某種形式的記憶,而不單單是組合。因此,在向量空間中完成這種組合需要強大的非線性函式,如深度神經網路(也具有記憶功能 [Arpit 2017])。
相反,解析操作在某些情況下可能需要組合才能工作。例如同一句子“Bart watched a squirrel with binoculars”的另一種解析樹:
儘管它在語法上是成立的,但是這種解析導致了對句子的一種奇怪的解釋:巴特看著一隻松鼠拿著望遠鏡。然而,必須用某種形式的組合才能證明“一隻松鼠拿著望遠鏡”是不太可能發生的事情。通常,在推匯出恰當的結構之前,必須對背景知識進行消歧和整合。但是這個過程也可以通過某種形式的解析和組合來實現。
一些模型試圖將解析和組合一起應用到實踐中 [Socher 2013年],但是它們有一個限制條件,即依賴於手動標註的標準解析樹,此外,它們已經被更簡單的模型所超越了。
BERT如何實現解析和組合
我們假設Transformer在很大程度上依賴於這兩個操作,但是以一種創新的方式:由於合成和解析互相需要,Transformer通過迭代過程,連續的執行解析和合成步驟,以解決相互依賴的問題。Transformer是由幾個堆疊的層(也稱為塊)組成的。每個塊由一個注意力層和其後的非線性函式(應用於token)組成。
我們將主要解釋這些結構與解析-組合框架之間的聯絡。
注意力機制作為解析步驟
在BERT中,注意力機制讓輸入序列(由單詞或子單詞token構成的句子)中的每個token注意到其它的token。
為了說明這一點,我們使用《Deconstructing BERT, Part 2: Visualizing the Inner Workings of Att-ention》中的視覺化工具深入研究了注意力頭(attention head),並在預訓練的BERT base Uncased模型上(谷歌釋出的4種預訓練的BERT模型的一種)測試了我們的假設。在下面一個注意力頭的例子中,“it”這個詞注意到了其他所有的token,並且似乎注意力集中在“street”和“animal”上。
BERT的每一層包含12個獨立的注意力機制。因此,在每一層,每個token都可以關注其他token的12個不同方面。由於Transformer使用許多不同的注意力頭(這裡的base BERT模型用了12*12=144個),每個注意力頭可以集中關注不同型別成分的組合。
我們省去了與“[CLS]”和“[SEP]”token相關的注意力值。我們用幾個句子做了測試,發現很難做到不過度解釋結果,所以你可以隨意用不同的句子在這個colab筆記本上測試我們的假設。請注意,在圖中,左側的序列關注右側的序列。
在第2層中,注意力頭 1似乎會基於相關性形成組合成分。
更有意思的是,在第3層中,注意力頭 11似乎顯示了更高階別的成分:一些token關注相同的中心詞(if、keep、have)。
在第5層中,注意力頭6採取的匹配過程似乎關注特定的組合,尤其是涉及動詞的組合。像[SEP]這樣的特殊token似乎被用來表示匹配關係的缺失。這可以使注意力頭髮現適合組合的特定結構。這種一致的結構可以輸入給組合函式。
任意樹可以用連續的淺層解析層表示,如下圖所示:
通過對BERT注意力頭的檢視,我們沒有發現如此清晰的樹狀結構,但是Transformer仍然有可能對其進行表示。我們注意到,由於編碼是在所有層上同時進行的,因此很難正確地解釋BERT在做什麼。對給定層的分析只對其下一層和上一層有意義。解析也分佈在各個注意力頭上。
下圖以兩個注意力頭為例,顯示了BERT的注意力機制實際的情況:
然而,正如我們之前所見,解析樹是一個高階別的表示,它可能建立在更復雜的“根莖”結構上[Deleuze 1987]。 例如,我們可能需要找出代詞所引用的內容,以便對輸入進行編碼(共指消解 coreference resolution:將現實世界中同一實體的不同描述合併到一起的過程,共指在自然語言中起到了超連結的作用,但也在其中增加了新的模糊成分)。在其他情況下,也可能需要全域性上下文來消除歧義。
令人驚訝的是,我們發現一個注意力頭(第6層注意力頭 0)似乎真的進行了共指消解。 而且,正如文章《Understanding BERT Part 2: BERT Specifics》所指出的,一些注意力頭似乎為每個單詞提供了全域性上下文(第0層注意力頭0)。
在一個句子中,每個詞都注意到其他的詞,這或許可以對每個詞進行粗略的語境化。
組合過程
在每一層中,所有注意力頭的輸出被級接,並輸入到一個可以表示複雜非線性函式的神經網路(這是實現一個有表達能力的組合過程所需要的)。
依靠來自注意力頭的結構化輸入,該神經網路可以進行各種組合。 在之前展示的第5層中,注意力頭6可以引導模型進行以下組合: (we, have),(if, we),(keep, up),(get, angry)。 該模型將它們進行非線性組合,並返回組合後的表示。因此,多注意力頭可以視作為組合過程鋪平道路的工具。
雖然我們沒有發現注意力頭關注某些更一致的組合,如形容詞/名詞,但是動詞/副詞的組合與模型所利用的其他組合之間可能存在一些共同點。
除了以上的組合,還存在許多可能相關的組合(單詞-子詞,形容詞-名詞,動詞-介詞,從句-從句)。進一步講,我們可以將消歧(disambiguation)看作是把一個歧義詞(bank)和相關語境詞(river或cashier)進行組合的過程。在組合期間,模型也可以將給定上下文中與概念相關的背景知識進行整合。這種消歧也可能出現在其他層面(例如句子層面,從句層面)。
此外,組合過程還可能涉及詞序推理。有人認為,位置編碼(positional encoding)(位置編碼是一個向量,與輸入內嵌表示求平均,以便生成輸入序列中每個token的位置感知表示)可能不足以正確地編碼單詞的順序。然而,位置編碼的目的是編碼每個token粗粒度、細粒度,甚至準確的位置。因此,基於兩個位置編碼,非線性合成在理論上可以基於單詞相對位置進行關係推理。
綜上所述,我們認為在BERT自然語言理解中,組合階段也起到了重要作用,因此你所需要的並不只有注意力(Attention isn’t all you need)。
總結
我們提出了對Transformer的歸納偏置的一些見解。然而,我們必須記住,我們的解釋可能對Transformer的能力持樂觀態度。需要注意的是,LSTM能夠隱式處理樹狀結構[Bowman 2015]和組合過程[Tai 2015]。但是LSTM有其侷限性,其中一些是由於梯度消失問題所導致的[Hochreiter 1998]。因此,要解釋Transformer的侷限性還需要進一步的工作。
檢視英文原文:Understanding BERT Transformer: Attention isn’t all you need
相關文章
- 經典譯文:Transformer--Attention Is All You NeedORM
- 【論文閱讀筆記】Transformer——《Attention Is All You Need》筆記ORM
- 【P5】Attention Is All You Need
- Attention isn’t all you need!BERT的力量之源遠不止注意力
- Transformer網路-Self-attention is all your needORM
- Attention isn’t all you need!Mamba混合大模型開源:三倍Transformer吞吐量大模型ORM
- 馬斯克開源的 grok-1 底層 Transformer 模型論文 《Attention is All You Need》馬斯克ORM模型
- 目標檢測:Segmentation is All You Need ?Segmentation
- [Paper Reading] KOSMOS: Language Is Not All You Need: Aligning Perception with Language Models
- You Probably Dont Need Derived State
- 完全解析!Bert & Transformer 閱讀理解原始碼詳解ORM原始碼
- [譯] You Might Not Need ES6
- Everything you need to know about mobile app architectureAPP
- 深入理解BERT Transformer ,不僅僅是注意力機制ORM
- You need tcl 8.5 or newer in order to run the Redis testRedis
- transformer中的attention機制詳解ORM
- 8.1 Attention(注意力機制)和TransformerORM
- RealFormer: 殘差式 Attention 層的Transformer 模型ORM模型
- 機器閱讀理解Attention-over-Attention模型模型
- Unknown host ‘XXXX: nodename nor servname provided, or not known‘. You may need to adjust the proxyIDE
- 輕鬆理解 Transformers(2):Attention部分ORM
- 黑猴子的家:Redis 之 You need tcl 8.5 or newer in order to run the Redis testRedis
- 語言模型(五)—— Seq2Seq、Attention、Transformer學習筆記模型ORM筆記
- 張俊林:BERT和Transformer到底學到了什麼 | AI ProCon 2019ORMAI
- 對Transformer的一些理解ORM
- Server-side activities have been updated. You need to restart SharePoint Designer to use the updated version of activities.ServerIDEREST
- 進一步改進GPT和BERT:使用Transformer的語言模型GPTORM模型
- 理解Transformer [資料探勘深度學習]ORM深度學習
- 好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !Kotlin套件Android
- SciTech-BigDataAIML-LLM-Transformer Series-Self-Attention:由Dot-Product(向量點乘)說起AIORM點乘
- Attention
- 【BERT】詳解BERT
- 理解RMAN backup database plus archivelog delete all input命令DatabaseHivedelete
- NLP(二十九)一步一步,理解Self-Attention
- 如何最簡單、通俗地理解GPT的Transformer架構?GPTORM架構
- Need to set ‘serverTimezone‘ propertyServer
- 理解BERT:一個突破性NLP框架的綜合指南框架
- Are you sure you understand the responsive layout?