今天讀了Gergely小哥的一篇博客 Visualisation of embedding relations,以爲頗有意思,想起了以前在知乎上簡答過的一個問題: BERT爲何能區分一字多義?這篇文章就很形象的把BERT的一字多義展示了出來,同時也提出了一種句子表示的可視化方法。
Word2Vec的可視化相信你們都見過很多,小哥把man-woman投影到了X軸,poor-rich投影到了Y軸以後獲得了下圖:svg
能夠看出(如下純屬瞎扯,侵刪):學習
可見Word2Vec的詞向量仍是存儲了很多東西,但若是teacher是指馬老師呢?因此咱們須要用BERT,在不一樣的語境下進行編碼(一字多義),馬老師就離rich近一些,李老師就離poor近一些。更多Word2Vec的可視化請見TF projector(密恐必定不要點)。編碼
小哥用上一種方法,把[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發乾貨,也但願各位同窗投稿學習筆記~