NN[神經網絡]中embedding的dense和sparse是什么意思?


NN[神經網絡]中embedding的dense和sparse是什么意思?

  dense 表示稠密,在embedding中的dense時:

    假設我們有這樣一個句子: “北京是北京”,我們將其數值化表示為:

     

 

 

dense embedding,需要你講它轉換成onehot表示:

           

 

假設embedding對輸出size=3,也就是hidden層的size=3*3;

eg:   

     

 

 

那么dense layer的計算過程就是一個矩陣相乘:

 

 

 

 

 

 ....

 

 

 整個流程展開來看就是:

 

 

 

 

 

 

 

你會看到這個過程: 1. 計算量非常巨大 ,這個回想一下矩陣乘法的復雜度就知道O((N*M)*(M*M)), 2.而且對於輸入來說,轉換的矩陣也很巨大(就是vocabulary有多大,這個列就有多大,你想想當vocabulary=500w時,這個輸入input的表示矩陣大不大).

那么有沒有方法,優化一下這兩個問題(計算量大,輸入尺寸也大)呢?

 sparse : 表示稀疏,在embedding中的dense時:

   同樣假設我們有這樣一個句子: “北京是北京”,我們將其數值化表示為:

                                  

 sparse embedding,不需要你轉換乘onehot編碼格式:

  那么,它是如何計算的呢?

      假設embedding對輸出size=3,也就是hidden層的size=3*3;

     eg:   

            

那么sparse layer的計算過程的“矩陣相乘”(相當於一個查表的過程,所以有lookup_table這個表述):

       

這個計算過程為:

->   ->

 

 

 ->

最終得到:

 

 

 

 

 你會看到,dense和sparse結果都一樣,但是這個計算量變成列O((N*1)*(M*M)) 減少列一個量級. 而且輸入input的vec也極大的縮小了,畢竟存儲的是index嘛.

那么會到我們開始的問題,NN[神經網絡]中embedding的dense和sparse是什么意思?

    結合上面的例子的計算過程,dense embedding 就是要求輸入必須為onehot,sparse embedding 不需要.

 那么在擴大一點,NN[神經網絡]中的dense和sparse是什么意思?

    dense和sparse描述的是該層hidden layer和前后層的網絡連接情況,如果hidden layer 和前一層以及后一層參數連接多,我們就說他是dense layer,比如全連接層(fc),相反,如果連接數比較少,我們說它是sparse layer。

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM