最强NLP模型BERT可视化学习
2018年是自然語言處理(Natural Language Processing, NLP)領(lǐng)域的轉(zhuǎn)折點,一系列深度學(xué)習(xí)模型在智能問答及情感分類等NLP任務(wù)中均取得了最先進(jìn)的成果。近期,谷歌提出了BERT模型,在各種任務(wù)上表現(xiàn)卓越,有人稱其為“一個解決所有問題的模型”。
BERT模型的核心思想有兩點,對推動NLP的發(fā)展有著重要的作用:(1)Transformer結(jié)構(gòu);(2)無監(jiān)督的預(yù)訓(xùn)練。Transformer是一個只基于注意力(Attention)機(jī)制的序列模型,《Attention is all you need》一文中指出,它摒棄了固有的定式,沒有采用RNN的結(jié)構(gòu)。BERT模型同時需要預(yù)訓(xùn)練,從兩個無監(jiān)督任務(wù)中獲取權(quán)重:語言建模(給定左右上下文,預(yù)測丟失的單詞)以及下一個句子預(yù)測(預(yù)測一個句子是否跟在另一個句子后面)。
BERT是個“多頭怪”
BERT與傳統(tǒng)的注意力模型有所不同,它并非在RNN的隱藏狀態(tài)上直接連接注意力機(jī)制。BERT擁有多層注意力結(jié)構(gòu)(12層或24層,取決于模型),并且在每個層(12層或16層)中都包含有多個“頭”。由于模型的權(quán)重不在層與層之間共享,一個BERT模型相當(dāng)于擁有24×16=384種不同的注意力機(jī)制。
BERT可視化
BERT模型較為復(fù)雜,難以直接理解它學(xué)習(xí)的權(quán)重的含義。深度學(xué)習(xí)模型的可解釋性通常不強(qiáng),但我們可以通過一些可視化工具對其進(jìn)行理解。Tensor2Tensor提供了出色的工具對注意力進(jìn)行可視化,我結(jié)合PyTorch對BERT進(jìn)行了可視化。點擊查看詳情。
該工具將注意力可視化為連接被更新位置(左)和被關(guān)注位置(右)之間的連線。不同的顏色對應(yīng)不同的“注意力頭”,線段寬度反映注意力值的大小。在該工具的頂部,用戶可以選擇模型層,以及一個或者多個“注意力頭”(通過點擊頂部顏色切換,一共包含12個不同的“頭”)
BERT到底學(xué)習(xí)什么?
該工具能用于探索預(yù)先訓(xùn)練的BERT模型的各個層以及頭部的注意模式。以下列輸入值為例進(jìn)行詳解:
句子A:I went to the store.
句子B:At the store, I bought fresh strawberries.
BERT采用WordPiece tokenization對原始句子進(jìn)行解析,并使用[CLS]對token進(jìn)行分類以及[SEP]對token進(jìn)行分隔,則輸入的句子變?yōu)?#xff1a;[CLS] i went to the store. [SEP] at the store, i bought fresh straw ##berries. [SEP]
接下來我將確定6個關(guān)鍵模式,并展示每個模式特定層/頭的可視化效果。
模式1:下一個單詞的注意力(Attention to next word)
在該模式下,特定單詞的大部分注意力都集中在序列中該單詞的下一個token處。如下圖所示,我們以第二層的head 0為例(所選頭部由頂部顏色欄中突出顯示的正方形表示)。左邊圖中展示了所有token的注意力,右邊則顯示了特定token(“i”)的注意力。“i”幾乎所有的注意力都集中在它的下一個token,即“went”處。
左圖中,[SEP]指向了[CLS],而非“at”,也就是說,指向下一個單詞的這種模式只在句子中起作用,而在句子間的效果較弱。該模式類似于RNN中的backward,狀態(tài)從右往左依次更新。
模式2:前一個單詞的注意力(Attention to previous word)
在該模式下,特定單詞的大部分注意力都集中在序列中該單詞的前一個token處。本例中,“went”的大部分注意力集中于它的前一個單詞“i”。模式2不如模式1明顯,特定的單詞注意力有所分散。該過程與RNN中的forward類似。
模式3:相同/相關(guān)單詞的注意力(Attention to identical/related words)
在該模式下,特定單詞的大部分注意力集中于與其相同或者相關(guān)的單詞,包括該單詞本身。下圖中,“store”的大部分注意力集中在它本身。由于注意力有所分散,該模式也不明顯。
模式4:其它句子中相同/相關(guān)單詞的注意力(Attention to identical/related words in other sentence)
在該模式中,注意力集中在其它句子中與指定單詞相同或者相似的單詞。如下圖,第二個句子中的“store”與第一個句子中的“store”關(guān)聯(lián)最強(qiáng)。這對于下一個句子預(yù)測任務(wù)非常有幫助,它能夠幫助識別句子之間的關(guān)系。
模式5:預(yù)測單詞的注意力(Attention)
在該模式下,注意力集中于其它可以預(yù)測源單詞的單詞上,且不包括源單詞本身。如下圖,“straw”的注意力主要集中于“##berries”,而“##berries”的注意力主要集中于“straw”。
模式6:分隔符標(biāo)記的注意力(Attention to delimiter tokens)
在該模式下,特定單詞的注意力主要集中于分隔符,[CLS]或[SEP]中。如下圖,大多數(shù)的注意力都集中在兩個[SEP]中,這或許是模型將語句級別狀態(tài)傳遞到各個token中的一種方法。
?
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的最强NLP模型BERT可视化学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Cassandra 在 F
- 下一篇: 数据不足,如何进行迁移学习?