深入理解BERT Transformer ,不僅僅是注意力機制

大資料文摘發表於2019-03-19

BERT是google最近提出的一個自然語言處理模型,它在許多工檢測上表現非常好。如:問答、自然語言推斷和釋義而且它是開源的。因此在社群中非常流行。

下圖展示了不同模型的GLUE基準測試分數(不同NLP評估任務的平均得分)變化過程。

深入理解BERT Transformer ,不僅僅是注意力機制

儘管目前還不清楚是否所有的GLUE任務都非常有意義,但是基於Trandformer編碼器的通用模型(Open-GPT、BERT、BigBird),在一年內縮小了任務專用模型和人類的差距。

但是,正如Yoav Goldberg所說,我們並不能完全理解Transformer模型是如何編碼句子的:

Transformer和RNN模型不同,它只依賴於注意力機制。除了標誌每個單詞的絕對位置嵌入,它沒有明確的單詞順序標記。對注意力的依賴可能會導致Transformer模型在處理語法敏感的任務中相對於RNN(LSTM)模型效能表現較差——因為RNN模型是直接根據詞序訓練模型,並且明確地追蹤句子的狀態。

一些文章深入地研究了BERT的技術細節。這裡,我們將嘗試提出一些新的觀點和假設來解釋BERT的強大功能。

一種語言理解的框架:句法解析/語義合成

人類能夠理解語言的方式是一個由來已久的哲學問題。在20世紀,兩個互補的原理闡明瞭這個問題:

 “語義合成性原理”表明複合詞的含義來源於單個詞的含義以及這些單詞的組合方式。根據這個原理,名詞短語“carnivorous plants” (食肉植物)的含義可以通過 “carnivorous” (食肉的)這個詞的含義和“plant” (植物)這個詞的含義組合得到。

另一個原理是“語言的層次結構”。它表明通過句法解析,句子可以分解為簡單的結構——比如從句。從句又可以分解為動詞短語和名詞短語等等。

句法解析層次結構以及遞迴是從組成成分中提取含義,直到達到句子級別,這對於語言理解是一個很有吸引力的方法。考慮到這個句子“Bart watched a squirrel with binoculars” (Bart用雙筒望遠鏡觀察松鼠),一個好的句法解析會返回以下句法解析樹

深入理解BERT Transformer ,不僅僅是注意力機制“Bart watched a squirrel with binoculars”基於結構的句法解析樹

這個句子的含義可根據連續的語義合成推匯出來(將“a” 和 “squirrel” 語義合成, “watched” 和“a squirrel” 語義合成, “watched a squirrel” 和“ with binoculars” 語義合成),直到句子的含義完全得到。

向量空間可以用來表示一個單詞、短語和其他成分。語義合成的過程可以被構造為一個函式f,f將(“a”,”squirrel”) 語義合成為 “a squirrel” 的一個有意義向量,表示為“a squirrel” = f(“a”,”squirrel”)。

相關連結:http://csli-lilt.stanford.edu/ojs/index.php/LiLT/article/view/6

但是,語義合成和句法解析都是很難的任務,而且它們互相需要。

顯然,語義合成依賴句法解析的結果來決定哪些應該被語義合成。但是即使有正確的輸入,語義合成也是一個困難的問題。例如,形容詞的含義會隨著單詞的不同而變化:“white wine” (白葡萄酒)的顏色實際上是黃色的,但是一隻白貓(white cat)就是白色的。這種現象被稱作聯合語義合成(co-composition)。

相關連結:http://gl-tutorials.org/wp-content/uploads/2017/07/Pustejovsky-Cocompositionality-2012.pdf

深入理解BERT Transformer ,不僅僅是注意力機制“white wine” (白葡萄酒)和 “white cat” (白貓)在二維語義空間中的表徵(空間的維度是顏色)

對於語義合成,還需要更廣泛的上下文。舉個例子, “green light”(綠燈)單詞的語義合成要根據語境來定。 “green light”可以表示授權或者實際的綠燈。一些習慣用語需要經驗記憶而不是簡單地組合它們。因此,在向量空間中進行語義合成需要強大的非線性函式,例如深度神經網路,也具有記憶功能。

相關連結:https://arxiv.org/abs/1706.05394

相反,為了在一些特定情形下奏效,句法解析操作可能需要語義合成。考慮下面這個句子的句法解析樹(和之前相同的句子) “Bart watched a squirrel with binoculars”

另一個"Bart watched a squirrel with binoculars"的基於結構的句法解析樹

儘管它在語法上有效,但是句法解析操作導致了句子的畸形翻譯,Bart watches (with his bare eyes) a squirrel holding binoculars(Bart(用他的裸眼)看到一個舉著望遠鏡的小松鼠)。

因此,需要進行一些單詞語義合成才能判斷“松鼠舉著望遠鏡”是不可能的!一般地說,在獲得句子正確結構前,必須要一些消除歧義的操作和背景知識的整合。但是這種操作也可以通過一些句法解析和語義合成的形式完成。

一些模型嘗試將句法解析和語義合成的操作同時結合應用到實踐中。

相關連結:https://nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf

然而,它們依賴於受限制的人工註釋的標準句法解析樹設定,並且效能還沒有一些更簡單的模型好。

BERT是如何實現句法解析/語義合成操作的

我們假設Transformer創新地依賴這兩個操作(句法解析/語義合成):由於語義合成需要句法解析,句法解析需要語義合成,Transformer便迭代地使用句法解析和語義合成的步驟,來解決它們相互依賴的問題。

實際上,Transformer由一些堆疊層組成(也叫做block)。每個block塊由一個注意力層以及一個應用在每個輸入元素的非線性函式組成。

我們試著展示Transformer的這些元件與句法解析/語義合成框架之間的聯絡:

深入理解BERT Transformer ,不僅僅是注意力機制

                        一個視為連續的句法解析和語義合成步驟

將注意力視為一個句法解析步驟

BERT中,一個注意力機制讓輸入序列(比如:由單詞或子單片語成的元素)中的每個元素聚焦到其它的元素上。

出於解釋的目的,我們根據這篇文章(https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73)使用的視覺化工具來深入研究注意力頭,並在預訓練的的BERT模型上驗證我們的假設。在下面對注意力頭的解釋中,單詞“it”參與到其它所有元素中,看起來它會關注 “street” 和 “animal”這兩個單詞。

深入理解BERT Transformer ,不僅僅是注意力機制視覺化第0層1號注意力頭上的注意力值,用於標記“it”

BERT為每一層使用12個獨立的注意力機制。因此,在每一層,每個token可以專注於其他標記的12個不同側面。由於Transformers使用許多不同的注意力頭(12 * 12 = 144用於基礎BERT模型),每個頭部可以專注於不同型別的成分組合。

我們忽略了與“[CLS]”和“[SEP]”標記相關的注意力值。我們嘗試使用了幾個句子,發現想不過度解釋它們的結果很難。所以你可以隨意用幾個句子在這個colab notebook上測試我們的假設。請注意,在圖中,左側序列“注意”右側序列。

相關連結:https://colab.research.google.com/drive/1Nlhh2vwlQdKleNMqpmLDBsAwrv_7NnrB

第2層1號注意力頭似乎基於相關性來生成成分

深入理解BERT Transformer ,不僅僅是注意力機制視覺化第2層1號頭上的注意力值

更有趣的是,在第3層中,9號頭似乎顯示出更高階別的成分:一些token注意到相同的中心詞(if,keep,have)。

深入理解BERT Transformer ,不僅僅是注意力機制第3層11號頭的注意力值的視覺化,一些標記似乎注意到特定的中心詞(例如,have,keep)

在第5層中,由6號注意力頭執行的匹配似乎集中於特定組合,特別是涉及動詞的組合。像[SEP]這樣的特殊標記似乎用於表示沒有匹配。這可以使注意力頭能夠檢測適合該語義合成的特定結構。這種一致的結構可以用於語義合成函式。

深入理解BERT Transformer ,不僅僅是注意力機制視覺化第5層6號頭注意力值,更關注組合(we,have),(if,we),(keep,up)(get,angry)

可以用連續的淺層的句法解析層表示解析樹,如下圖所示:

深入理解BERT Transformer ,不僅僅是注意力機制若干注意力層如何表示成樹結構

在檢查BERT注意力頭時,我們沒有找到這種清晰的樹結構。但是Transformers仍有可能表示它們。

我們注意到,由於編碼是在所有層上同時執行的,因此很難正確解釋BERT正在做什麼。對指定層的分析只是對它自己的下一層和前一層才有意義。句法解析也分佈在各注意力頭上。

下圖展示了兩個注意力頭的情況下,BERT注意力更為實際的樣子:

深入理解BERT Transformer ,不僅僅是注意力機制

BERT中注意力值更實際的展現

然而,正如我們之前所見,句法解析樹是一種高階別的展示,它可能建立在更復雜的“根莖”結構上。例如,我們可能需要找出代詞所引用的內容,以便對輸入進行編碼(共指消解)。在其他情況下,消除歧義也可能需要全文背景。

令人驚訝的是,我們發現一個注意力頭(第6層0號頭)似乎實際上執行了共指消解。

相關連結:https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73

一些注意力頭似乎為每一個單詞(第0層0號頭)都提供全文資訊。

深入理解BERT Transformer ,不僅僅是注意力機制在第6層的頭0號頭中發生的共指消解

深入理解BERT Transformer ,不僅僅是注意力機制每個單詞都會注意句子中的所有其它單詞。這可能允許對每個單詞建立一個粗略的語境

語義合成階段

在每一層中,所有注意力頭的輸出被拼接並被送到可以表示複雜非線性函式(表達語義合成所需要的)的神經網路

依靠來自注意力頭的結構化輸入,該神經網路可以執行各種語義合成。 在先前顯示的第5層中,6號注意力頭可以引導模型執行以下語義合成:(we,have),(if,we),(keep,up)(get,angry)。該模型可以非線性地組合它們並返回語義合成表示。因此,多注意力頭可以作為輔助語義合成的工具。

深入理解BERT Transformer ,不僅僅是注意力機制注意力頭如何輔助特定的語義合成,例如形容詞/名詞語義合成

雖然我們沒有發現注意力頭集中關注形容詞/名詞等更一致的組合,但是動詞/副詞的語義合成與模型所衍生的其它語義合成之間可能存在一些共同點。

有許多可能的相關語義合成(單詞-子詞,形容詞-名詞,動詞-介詞,子句-子句)。更進一步,我們可以將消歧看作把一個歧義詞(如  bank)與其相關的上下文單詞(如 river 或 cashier)語義合成的過程。在語義合成期間也可以執行與給定上下文的概念相關的背景常識知識的整合。這種消歧也可能發生在其它層面(例如句子層面、子句層面)。

深入理解BERT Transformer ,不僅僅是注意力機制作為一種語義合成的消歧

此外,語義合成也可能涉及詞序推理。有人認為,位置編碼可能不足以正確編碼單詞的順序,然而位置編碼被設計為編碼每個token的粗略、精細和可能精確的位置。(位置編碼是與輸入嵌入平均求和的向量,以為輸入序列中的每個 token 生成能夠感知位置的表徵)。因此,基於兩個位置編碼,非線性合成理論上可以基於單詞相對位置執行一些關係推理。

我們假設語義合成階段也在BERT自然語言理解中起到了重要作用:並不只需要注意力。

總結

我們提出了對Transformers的歸納偏差的見解。但我們的解釋對Transformer的功能持樂觀態度。作為提醒,LSTM顯示能夠隱性地處理樹結構和語義合成。由於LSTM仍存在一些侷限性,部分是因為梯度消失造成的。因此,需要進一步的研究來闡明Transformer的侷限性。

引用: 

  • Bowman, S., Manning, C. and Potts, C. (2015). Tree-structured composition in neural networks without tree-structured architectures. 
  • Hochreiter, S. (1998). The Vanishing Gradient Problem During Learning Recurrent Neural Nets and Problem Solutions. International Journal of Uncertainty, Fuzziness and Knowledge-Based Systems, 06(02), pp.107-116。
  • Tai, K., Socher, R. and Manning, C. (2015). Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks. 

相關報導:https://medium.com/synapse-dev/understanding-bert-transformer-attention-isnt-all-you-need-5839ebd396db

相關文章