one-hot到word2vec到bert的進化史(待完善)

本文還是一篇不講具體原理細節的博客,只寫一些3者之間的區別優劣問題,建議先搞懂原理再看,有疑問或者有新的見解,歡迎留言提出。

word2vec和embedding梳理

1. 從one-hot開始

優點:一是解決了分類器不好處理離散數據的問題,二是在一定程度上也起到了擴充特徵的作用。

缺點:在文本特徵表示上有些缺點就非常突出了。首先,它是一個詞袋模型,不考慮詞與詞之間的順序(文本中詞的順序信息也是很重要的);其次,它假設詞與詞相互獨立(在大多數情況下,詞與詞是相互影響的);最後,它得到的特徵是離散稀疏的。

既然有了問題,那就需要解決,怎樣能把詞向量的維度變小呢?主流的辦法就是通過訓練,將每個詞都映射到一個較短的詞向量上來。所有的這些詞向量就構成了向量空間,最後還發現了一些有趣的性質,比如向量的夾角餘弦能夠在某種程度上表示字、詞的相似度。這個過程稱爲word embedding。

2.爲什麼word2vec這些字詞向量會有一些性質?

這是因爲,我們在用語言模型無監督訓練時,是開了窗口的,通過前n個字預測下一個字的概率,這個n就是窗口的大小,同一個窗口內的詞語,會有相似的更新,這些更新會累積,而具有相似模式的詞語就會把這些相似更新累積到可觀的程度。

我舉個例子,“忐”、“忑”這兩個字,幾乎是連在一起用的,更新“忐”的同時,幾乎也會更新“忑”,因此它們的更新幾乎都是相同的,這樣“忐”、“忑”的字向量必然幾乎是一樣的。“相似的模式”指的是在特定的語言任務中,它們是可替換的,比如在一般的泛化語料中,“我喜歡你”中的“喜歡”,以及一般語境下的“喜歡”,替換爲“討厭”後還是一個成立的句子,因此“喜歡”與“討厭”必然具有相似的詞向量,但如果詞向量是通過情感分類任務訓練的,那麼“喜歡”與“討厭”就會有差異較大的詞向量。

3.爲什麼引入bert?

原因很簡單,因爲word2vec不夠完善,它只考慮了句子中詞與詞之間的關係,降低了詞空間,引入了詞與詞之間的向量關係。
BERT優於以前的方法,因爲它是第一個用於預訓練NLP的無監督、深度雙向的系統
預訓練的表示可以是上下文無關(context-free)的,也可以是上下文相關(contextual)的,並且上下文相關表示還可以是單向的或雙向的。上下文無關的模型,比如word2vec或GloVe,會爲詞彙表中的每個單詞生成單個“word embedding”表示,因此bank在bank deposit(銀行存款)和river bank(河岸)中具有相同的表示。上下文相關則會根據句子中的其他單詞生成每個單詞的表示。

bert-github地址
預訓練模型下載

4.最後一提

以上模型都是nlp中的
最後感謝@楊曦鈅的指點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章