BERT是google最近提出的一個自然語言處理模型,它在許多任務(wù)檢測上表現(xiàn)非常好。如:問答、自然語言推斷和釋義而且它是開源的。因此在社區(qū)中非常流行。
下圖展示了不同模型的GLUE基準(zhǔn)測試分?jǐn)?shù)(不同NLP評估任務(wù)的平均得分)變化過程。
盡管目前還不清楚是否所有的GLUE任務(wù)都非常有意義,但是基于Trandformer編碼器的通用模型(Open-GPT、BERT、BigBird),在一年內(nèi)縮小了任務(wù)專用模型和人類的差距。
但是,正如Yoav Goldberg所說,我們并不能完全理解Transformer模型是如何編碼句子的:
Transformer和RNN模型不同,它只依賴于注意力機(jī)制。除了標(biāo)志每個單詞的絕對位置嵌入,它沒有明確的單詞順序標(biāo)記。對注意力的依賴可能會導(dǎo)致Transformer模型在處理語法敏感的任務(wù)中相對于RNN(LSTM)模型性能表現(xiàn)較差——因?yàn)镽NN模型是直接根據(jù)詞序訓(xùn)練模型,并且明確地追蹤句子的狀態(tài)。
一些文章深入地研究了BERT的技術(shù)細(xì)節(jié)。這里,我們將嘗試提出一些新的觀點(diǎn)和假設(shè)來解釋BERT的強(qiáng)大功能。
一種語言理解的框架:句法解析/語義合成
人類能夠理解語言的方式是一個由來已久的哲學(xué)問題。在20世紀(jì),兩個互補(bǔ)的原理闡明了這個問題:
“語義合成性原理”表明復(fù)合詞的含義來源于單個詞的含義以及這些單詞的組合方式。根據(jù)這個原理,名詞短語“carnivorous plants” (食肉植物)的含義可以通過“carnivorous”(食肉的)這個詞的含義和“plant”(植物)這個詞的含義組合得到。
另一個原理是“語言的層次結(jié)構(gòu)”。它表明通過句法解析,句子可以分解為簡單的結(jié)構(gòu)——比如從句。從句又可以分解為動詞短語和名詞短語等等。
句法解析層次結(jié)構(gòu)以及遞歸是從組成成分中提取含義,直到達(dá)到句子級別,這對于語言理解是一個很有吸引力的方法??紤]到這個句子“Bart watched a squirrel with binoculars” (Bart用雙筒望遠(yuǎn)鏡觀察松鼠),一個好的句法解析會返回以下句法解析樹:
“Bart watched a squirrel with binoculars”基于結(jié)構(gòu)的句法解析樹
這個句子的含義可根據(jù)連續(xù)的語義合成推導(dǎo)出來(將“a”和“squirrel” 語義合成,“watched”和“a squirrel” 語義合成, “watched a squirrel”和“ with binoculars” 語義合成),直到句子的含義完全得到。
向量空間可以用來表示一個單詞、短語和其他成分。語義合成的過程可以被構(gòu)造為一個函數(shù)f,f將(“a”,”squirrel”) 語義合成為“a squirrel”的一個有意義向量,表示為“a squirrel”= f(“a”,”squirrel”)。
相關(guān)鏈接:
http://csli-lilt.stanford.edu/ojs/index.php/LiLT/article/view/6
但是,語義合成和句法解析都是很難的任務(wù),而且它們互相需要。
顯然,語義合成依賴句法解析的結(jié)果來決定哪些應(yīng)該被語義合成。但是即使有正確的輸入,語義合成也是一個困難的問題。例如,形容詞的含義會隨著單詞的不同而變化:“white wine” (白葡萄酒)的顏色實(shí)際上是黃色的,但是一只白貓(white cat)就是白色的。這種現(xiàn)象被稱作聯(lián)合語義合成(co-composition)。
相關(guān)鏈接:
http://gl-tutorials.org/wp-content/uploads/2017/07/Pustejovsky-Cocompositionality-2012.pdf
“white wine” (白葡萄酒)和 “white cat” (白貓)在二維語義空間中的表征(空間的維度是顏色)
對于語義合成,還需要更廣泛的上下文。舉個例子,“green light”(綠燈)單詞的語義合成要根據(jù)語境來定?!癵reen light”可以表示授權(quán)或者實(shí)際的綠燈。一些習(xí)慣用語需要經(jīng)驗(yàn)記憶而不是簡單地組合它們。因此,在向量空間中進(jìn)行語義合成需要強(qiáng)大的非線性函數(shù),例如深度神經(jīng)網(wǎng)絡(luò),也具有記憶功能。
相關(guān)鏈接:
https://arxiv.org/abs/1706.05394
相反,為了在一些特定情形下奏效,句法解析操作可能需要語義合成。考慮下面這個句子的句法解析樹(和之前相同的句子) “Bart watched a squirrel with binoculars”
另一個"Bart watched a squirrel with binoculars"的基于結(jié)構(gòu)的句法解析樹
盡管它在語法上有效,但是句法解析操作導(dǎo)致了句子的畸形翻譯,Bart watches (with his bare eyes) a squirrel holding binoculars(Bart(用他的裸眼)看到一個舉著望遠(yuǎn)鏡的小松鼠)。
因此,需要進(jìn)行一些單詞語義合成才能判斷“松鼠舉著望遠(yuǎn)鏡”是不可能的!一般地說,在獲得句子正確結(jié)構(gòu)前,必須要一些消除歧義的操作和背景知識的整合。但是這種操作也可以通過一些句法解析和語義合成的形式完成。
一些模型嘗試將句法解析和語義合成的操作同時結(jié)合應(yīng)用到實(shí)踐中。
相關(guān)鏈接:
https://nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf
然而,它們依賴于受限制的人工注釋的標(biāo)準(zhǔn)句法解析樹設(shè)置,并且性能還沒有一些更簡單的模型好。
BERT是如何實(shí)現(xiàn)句法解析/語義合成操作的
我們假設(shè)Transformer創(chuàng)新地依賴這兩個操作(句法解析/語義合成):由于語義合成需要句法解析,句法解析需要語義合成,Transformer便迭代地使用句法解析和語義合成的步驟,來解決它們相互依賴的問題。
實(shí)際上,Transformer由一些堆疊層組成(也叫做block)。每個block塊由一個注意力層以及一個應(yīng)用在每個輸入元素的非線性函數(shù)組成。
我們試著展示Transformer的這些組件與句法解析/語義合成框架之間的聯(lián)系:
一個視為連續(xù)的句法解析和語義合成步驟
將注意力視為一個句法解析步驟
在BERT中,一個注意力機(jī)制讓輸入序列(比如:由單詞或子單詞組成的元素)中的每個元素聚焦到其它的元素上。
出于解釋的目的,我們根據(jù)這篇文章(https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73)使用的可視化工具來深入研究注意力頭,并在預(yù)訓(xùn)練的的BERT模型上驗(yàn)證我們的假設(shè)。在下面對注意力頭的解釋中,單詞“it”參與到其它所有元素中,看起來它會關(guān)注“street”和“animal”這兩個單詞。
可視化第0層1號注意力頭上的注意力值,用于標(biāo)記“it”
BERT為每一層使用12個獨(dú)立的注意力機(jī)制。因此,在每一層,每個token可以專注于其他標(biāo)記的12個不同側(cè)面。由于Transformers使用許多不同的注意力頭(12 * 12 = 144用于基礎(chǔ)BERT模型),每個頭部可以專注于不同類型的成分組合。
我們忽略了與“[CLS]”和“[SEP]”標(biāo)記相關(guān)的注意力值。我們嘗試使用了幾個句子,發(fā)現(xiàn)想不過度解釋它們的結(jié)果很難。所以你可以隨意用幾個句子在這個colab notebook上測試我們的假設(shè)。請注意,在圖中,左側(cè)序列“注意”右側(cè)序列。
相關(guān)鏈接:
https://colab.research.google.com/drive/1Nlhh2vwlQdKleNMqpmLDBsAwrv_7NnrB
第2層1號注意力頭似乎基于相關(guān)性來生成成分
可視化第2層1號頭上的注意力值
更有趣的是,在第3層中,9號頭似乎顯示出更高級別的成分:一些token注意到相同的中心詞(if,keep,have)。
第3層11號頭的注意力值的可視化,一些標(biāo)記似乎注意到特定的中心詞(例如,have,keep)
在第5層中,由6號注意力頭執(zhí)行的匹配似乎集中于特定組合,特別是涉及動詞的組合。像[SEP]這樣的特殊標(biāo)記似乎用于表示沒有匹配。這可以使注意力頭能夠檢測適合該語義合成的特定結(jié)構(gòu)。這種一致的結(jié)構(gòu)可以用于語義合成函數(shù)。
可視化第5層6號頭注意力值,更關(guān)注組合(we,have),(if,we),(keep,up)(get,angry)
可以用連續(xù)的淺層的句法解析層表示解析樹,如下圖所示:
若干注意力層如何表示成樹結(jié)構(gòu)
在檢查BERT注意力頭時,我們沒有找到這種清晰的樹結(jié)構(gòu)。但是Transformers仍有可能表示它們。
我們注意到,由于編碼是在所有層上同時執(zhí)行的,因此很難正確解釋BERT正在做什么。對指定層的分析只是對它自己的下一層和前一層才有意義。句法解析也分布在各注意力頭上。
下圖展示了兩個注意力頭的情況下,BERT注意力更為實(shí)際的樣子:
BERT中注意力值更實(shí)際的展現(xiàn)
然而,正如我們之前所見,句法解析樹是一種高級別的展示,它可能建立在更復(fù)雜的“根莖”結(jié)構(gòu)上。例如,我們可能需要找出代詞所引用的內(nèi)容,以便對輸入進(jìn)行編碼(共指消解)。在其他情況下,消除歧義也可能需要全文背景。
令人驚訝的是,我們發(fā)現(xiàn)一個注意力頭(第6層0號頭)似乎實(shí)際上執(zhí)行了共指消解。
相關(guān)鏈接:
https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73
一些注意力頭似乎為每一個單詞(第0層0號頭)都提供全文信息。
在第6層的頭0號頭中發(fā)生的共指消解
每個單詞都會注意句子中的所有其它單詞。這可能允許對每個單詞建立一個粗略的語境。
語義合成階段
在每一層中,所有注意力頭的輸出被拼接并被送到可以表示復(fù)雜非線性函數(shù)(表達(dá)語義合成所需要的)的神經(jīng)網(wǎng)絡(luò)。
依靠來自注意力頭的結(jié)構(gòu)化輸入,該神經(jīng)網(wǎng)絡(luò)可以執(zhí)行各種語義合成。 在先前顯示的第5層中,6號注意力頭可以引導(dǎo)模型執(zhí)行以下語義合成:(we,have),(if,we),(keep,up)(get,angry)。該模型可以非線性地組合它們并返回語義合成表示。因此,多注意力頭可以作為輔助語義合成的工具。
注意力頭如何輔助特定的語義合成,例如形容詞/名詞語義合成
雖然我們沒有發(fā)現(xiàn)注意力頭集中關(guān)注形容詞/名詞等更一致的組合,但是動詞/副詞的語義合成與模型所衍生的其它語義合成之間可能存在一些共同點(diǎn)。
有許多可能的相關(guān)語義合成(單詞-子詞,形容詞-名詞,動詞-介詞,子句-子句)。更進(jìn)一步,我們可以將消歧看作把一個歧義詞(如 bank)與其相關(guān)的上下文單詞(如 river 或 cashier)語義合成的過程。在語義合成期間也可以執(zhí)行與給定上下文的概念相關(guān)的背景常識知識的集成。這種消歧也可能發(fā)生在其它層面(例如句子層面、子句層面)。
作為一種語義合成的消歧
此外,語義合成也可能涉及詞序推理。有人認(rèn)為,位置編碼可能不足以正確編碼單詞的順序,然而位置編碼被設(shè)計為編碼每個token的粗略、精細(xì)和可能精確的位置。(位置編碼是與輸入嵌入平均求和的向量,以為輸入序列中的每個 token 生成能夠感知位置的表征)。因此,基于兩個位置編碼,非線性合成理論上可以基于單詞相對位置執(zhí)行一些關(guān)系推理。
我們假設(shè)語義合成階段也在BERT自然語言理解中起到了重要作用:并不只需要注意力。
總結(jié)
我們提出了對Transformers的歸納偏差的見解。但我們的解釋對Transformer的功能持樂觀態(tài)度。作為提醒,LSTM顯示能夠隱性地處理樹結(jié)構(gòu)和語義合成。由于LSTM仍存在一些局限性,部分是因?yàn)樘荻认г斐傻?。因此,需要進(jìn)一步的研究來闡明Transformer的局限性。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4286瀏覽量
62337 -
遞歸
+關(guān)注
關(guān)注
0文章
28瀏覽量
9003 -
自然語言處理
+關(guān)注
關(guān)注
1文章
603瀏覽量
13487
原文標(biāo)題:深入理解BERT Transformer ,不僅僅是注意力機(jī)制
文章出處:【微信號:BigDataDigest,微信公眾號:大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論