1. 程式人生 > >RNN,LSTM和GRU和word2vec及embedding等的聯絡與區別解析。

RNN,LSTM和GRU和word2vec及embedding等的聯絡與區別解析。

普通的MLP和CNN都沒有事件維度,可以從RNN開始引入了事件維度,這在理解上給我們帶來了一些困難,筆者為了避免遺忘,將這種區別和特點記錄如下。

(沒時間畫圖,就看文字吧,寫的比較簡單。。。)

資料 https://zhuanlan.zhihu.com/p/36455374

這篇部落格講的其實很清楚了,為了幫助理解,我總結如下::

1. RNN可以看成是有t個3層的全連線神經網路,從1-t代表了一個時序的輸入 
2. 將這些全連線網路的隱含層全部連線起來 
3. 每一次前面訓練完的部分結果都會通過隱藏層傳遞給下一層(雙向網路是雙向傳遞) 
4. 至於LSTM中的num_units這個引數,其實就是第一步提到的3層網路中的第二層的神經元節點數目。啟用函式就是LSTM中定義的那些。

就這麼簡單。。。。。。


接下來再將word2vec和embedding中理解有障礙的地方說一下。。 
word2vec顧名思義就是將一個word轉成一個vector,怎麼轉呢,word2vec有兩種辦法,分別是skip-gram和CBOW,其實差不多,就是一對多和多對一的不同。 這裡需要注意的是 word2vec是一個三層的網路,輸入和輸出都是one-hot向量,是一個半監督的網路(因為他的監督標籤也來自於輸入資料),訓練完之後我們需要的是第一層和第二層之間的權重矩陣。加入輸入的維度是n,中間層維度是m,則這個矩陣的維度是(n x m),其中的每一行代表了一個word,這也就是詞嵌入embedding的由來,將一個詞的向量表示嵌入到了一個矩陣單中,用的時候拿出來用。

這些都和自動編碼機有異曲同工之妙。


另一個點就是哈夫曼樹和word2vec的關係,再word2vec中,最末層的啟用函式是softmax,但是對於的標籤非常巨大(等於詞的數目),這相當於是一個巨大的多分類問題,為了解決這個問題就再word2vec的末尾引入了哈夫曼樹,即神經網路訓練的輸出對應的是一顆哈夫曼樹,在多分類尋找的時候會大大的加快速度,從而加快word2vec的訓練速度,這種優化方式被稱為hierarchical softmax
--------------------- 
作者:河流兒 
來源:CSDN 
原文:https://blog.csdn.net/github_34777264/article/details/82660131 
版權宣告:本文為博主原創文章,轉載請附上博文連結!