BERT句子表示的可視化

今天讀了Gergely小哥的一篇博客 Visualisation of embedding relations,以爲頗有意思,想起了以前在知乎上簡答過的一個問題: BERT爲何能區分一字多義?這篇文章就很形象的把BERT的一字多義展示了出來,同時也提出了一種句子表示的可視化方法。

Word2Vec的可視化

Word2Vec的可視化相信你們都見過很多,小哥把man-woman投影到了X軸,poor-rich投影到了Y軸以後獲得了下圖:svg



能夠看出(如下純屬瞎扯,侵刪):學習

  1. fishman是有點窮的男人
  2. king是比較富有的男人,queen是比king窮一些的女人(也沒有特別女)
  3. teacher男女均可以,可是比fishman要窮
  4. actor是不窮不富的男人,actress是比fishman窮的女人

可見Word2Vec的詞向量仍是存儲了很多東西,但若是teacher是指馬老師呢?因此咱們須要用BERT,在不一樣的語境下進行編碼(一字多義),馬老師就離rich近一些,李老師就離poor近一些。更多Word2Vec的可視化請見TF projector(密恐必定不要點)。編碼

BERT Sentence的可視化

小哥用上一種方法,把[CLS]投影到(1,0),[SEP]投影到(0,1),每一個點是一個詞,用箭頭表示順序,獲得了下圖:orm



能夠看到上下文對sky和sea兩個詞的影響,由於都是藍色讓兩個詞更類似了,「海天一色」可能說的就是這個吧。同時也能夠看到contextual dependent詞向量的一個缺點,就是上下文類似的狀況下詞向量也很接近cdn

也能夠看到動詞時態的影響基本不大:xml



相比之下句末標點符號的影響就很大:blog



另外再來看一下同一個詞Mexico在不一樣語境下的表示:ci



能夠發現「That’s in Mexico, too」這句話跑到了-x區域。做者猜測多是由於這句話更像是一個response,而BERT在預訓練階段的Next Sentence Prediction任務的時候,會把上下句進行拼接:get

[CLS] This is the first sentence. [SEP] This is the second one. [SEP]

所以下半句會離[SEP]更近一些。爲了驗證這個猜測,做者又投影了幾句「回覆」意圖的文本:博客



能夠看到-x區域的點增多了。

最後,做者驗證了一些無心義的錯誤的句子:



因爲句子沒有什麼意義,各個詞向量都堆在一塊兒,有些不知道把本身放哪裏的感受。。。


好啦,這是一篇比較輕鬆的小文章,平常學習打卡,感謝閱讀!!!


hi all!最近終於有了本身的公衆號,叫NLPCAB,原本想叫LAB,但以爲和一我的能撐起實驗室我就上天了,因此取了諧音CAB,有些可愛而且意味深長?以後會努力和Andy發乾貨,也但願各位同窗投稿學習筆記~

相關文章
相關標籤/搜索