一文看懂自然語言處理語言模型 n-gram word-embedding CBOW Skip-gram word2vec glove解讀

1.n-gram

自己理解:

  • n代表窗口長度,n-gram的思想就是先滑窗,然後統計頻次,然後計算條件概率,你可以取前面n個的條件概率,不一定要取全部的,最後得到的是整個句子的一個概率,那這個概率可以代表句子的合理性。

詳情見:
https://zhuanlan.zhihu.com/p/32829048
在這裏插入圖片描述
在這裏插入圖片描述

如何利用n-gram作爲額外的特徵呢?

例如:
我 愛 北京 天安門

這樣詞就有各種組合了:
它的一到三gram爲:
[我,愛,北京,天安門,我愛,我北京,我天安門,…,我愛北京,我愛天安門,…]就是不同的組合,然後每一個詞對應onehot特徵裏面的1維。

那麼原來的我愛北京天安門的特徵就是根據這段語句生成的一到三gram的組合。
在這裏插入圖片描述
https://zhuanlan.zhihu.com/p/29555001

2 NNLM(Neural Network Language Model)

NNLM模型的構造輸入是前n個字的onehot特徵,輸出是這段文字的條件概率,也就是通過學習這個條件概率來學習embedding。
在這裏插入圖片描述
中間有激活函數,用的激活函數是雙曲正切
在這裏插入圖片描述

在這裏插入圖片描述
其實是一個開創性的創舉,然後word2vec改了一下,讓他更容易訓練,訓練更快了,去掉了激活函數,直接預測下一個詞,感覺改得好簡單啊。

3 word2vec

  • 數據結構和算法——Huffman樹和Huffman編碼:https://blog.csdn.net/google19890102/article/details/54848262

3.1 分層softmax

https://www.cnblogs.com/guoyaohua/p/9240336.html
在這裏插入圖片描述

3.2 負採樣

https://zhuanlan.zhihu.com/p/39684349

  • 高頻詞抽樣
    在這裏插入圖片描述
  • 負採樣
    在這裏插入圖片描述

4.Glove詳解

看了之後一臉懵逼,實際情況是這樣,因爲word2vec是利用上下文特定長度窗口內的文本去訓練一個詞向量,這樣每次看到的都是局部的信息,如果和全部詞的信息利用起來呢?
gloveword2vecglove首先構造一個共線矩陣,這個矩陣通過一翻設計,可以衡量兩個詞之間共同出現的概率關係,然後類似於word2vec,去學習這個共線矩陣,這樣得到的中間結果作爲詞向量,注意這裏有兩個詞向量,都可以用,只是隨機化參數不一樣,最後可以取二者的平均,最後就是加了一個權重因子,來更好的對頻次較高和較低的詞做一些修正,具體詳情如下:
在這裏插入圖片描述
通俗易懂理解——Glove算法原理:
https://zhuanlan.zhihu.com/p/42073620
GloVe詳解
http://www.fanyeong.com/2018/02/19/glove-in-detail/
nlp中的詞向量對比:word2vec/glove/fastText/elmo/GPT/bert
https://zhuanlan.zhihu.com/p/56382372

其他參考鏈接:
https://www.cnblogs.com/guoyaohua/p/9240336.html
https://zhuanlan.zhihu.com/p/53425736
https://zhuanlan.zhihu.com/p/61635013
https://blog.csdn.net/bitcarmanlee/article/details/82291968

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