DeepFM 中引數的理解

2021-09-19 14:53:28 字數 887 閱讀 6045

上圖為sparse feature 層到 dense embedding 層的神經元連線示意圖。

1、每個圓點代表乙個神經元,神經元本身是沒有數值的,我們需要知道的是sparse feature 到 embedding 層之間連線的權重,這個權重就是所謂的embedding vector。

2、一共有m個field,每個field對應k個嵌入維數,所以嵌入層神經元的個數為m*k。

3、embedding vector的確定:

在fm裡得到的隱變數vik現在作為了嵌入層網路的權重。假設我們的k=5,首先,對於輸入的一條記錄,同乙個field 只有乙個位置是1,那麼在由輸入得到embedding vector的過程中,輸入層只有乙個神經元起作用,得到的embedding vector其實就是輸入層到embedding層該神經元相連的五條線的權重,即vi1,vi2,vi3,vi4,vi5。這五個值組合起來就是我們在fm中所提到的vi。在fm部分和dnn部分,這一塊是共享權重的,對同乙個特徵來說,得到的vi是相同的。

一共有m 個field ,所以得到的embedding vector 是 m*k 的矩陣。(這裡是錯的,正確的是一共有n個特徵,得到n*k的矩陣,因為即便是特徵的值為0,但是它依然參與了計算。樣本1的第乙個特徵為0,但是樣本2的第乙個特徵就為1了)

2019-4-29 修正:看實現的**,這裡,就是m*k 。 n個特徵作用在這裡的 w [1,n]。m個field作用在嵌入層。

field 經過one-hot 編碼之後,假設field編碼之後的長度為n, 對應的input layer 只有乙個位置是1,其餘n-1位置是0。

select函式中引數nfds的理解

函式原型 include include include int select int nfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout void fd clr int fd,fd set set ...

機器學習中超引數的理解

什麼是超引數?在看機器學習時,經常碰到乙個叫超引數的引數 hyperparameter 所以到底什麼是超引數?超引數的定義 在機器學習的上下文中,超引數是在開始學習過程之前設定值的引數,而不是通過訓練得到的引數資料。通常情況下,需要對超引數進行優化,給學習機選擇一組最優超引數,以提高學習的效能和效果...

理解DeepL中的引數懲罰(penalty)

penalty機制中有l2範數的penalty,它長這個樣子 e是指一次前向計算,輸入與輸出之間的 誤差。後面的一部分就是l2 penalty。現在讓我們來看看c對某個引數wi求導的結果 如果我們更新梯度的話 從上面的乙個式子我們可以看出,w若越大,那麼w衰減越厲害。梯度始終為正數 下面來說說為什麼...