在推薦場景中,我們經常面臨稀疏的數據樣本。SVM這種通用模型在稀疏場景下將失效,故論文提出了FM,這種能夠在稀疏場景下有效的通用模型。論文最後也提到了FM與矩陣分解MF、SVD++等其他模型的關係,最後你會驚奇的發現FM模型是有多強大。
FM模型把稀疏特徵映射爲K維的隱變量,並且通過隱變量之間的點積來作爲兩個特徵交叉的權重值.當然FM也可以做高階的特徵交叉,但是絕大部分時候我們還是隻用二階部分,更高階的部分還是交給深度網絡吧。
FM模型結構
FM把每個稀疏特徵作爲一個field,每個field可能有多種取值。
如下圖,我們有三個field,每個field分別有N1, N2, N3三種不同取值。
每個field的具體取值會對一個一階權重以及一個隱變量
最後模型的計算公式分爲三部分: 偏置 + 一階權重 + 二階交叉權重:
FM的計算Trick
FM通過使用特徵隱變量來降低交叉特徵需要訓練的權重數量,只需要訓練K*N個隱變量參數。由於使用了隱變量,所以訓練樣本中不需要交叉特徵同時出現也可以學習到他們之間的權重(論文中舉例了電影推薦的場景, 很多時候未出現的交叉特徵並不代表他們沒有相關性).
儘管降低了參數量,但是二階部分的計算複雜度爲: , 不同通過以下矩陣計算的轉換,我們可以把計算複雜度降爲, 同時訓練時候的SGD運算複雜度也降爲.
FM的特點
整體來看FM解決了以下問題:
-
降低交叉特徵所需要訓練的權重數量。使用特徵隱變量內積作爲兩個交叉特徵的權重,隱變量的總參數爲
-
降低交叉特徵的計算複雜度, 從原來的降低爲. 當然對於稀疏場景來說N不算太大. 這一操作使得在訓練時候,SGD的運算複雜度也爲.
-
解決從未出現過的交叉特徵問題。
參考資料: