FM模型在LTR類問題中的應用
由於工作原因,去年有段時間鼓搗了陣FM在排序類問題的應用。排序和分類、回歸一樣是機器學習中的基本任務。排序問題在工業界應用場景也非常常見,比如電商網站推薦列表中商品的排序,搜索引擎中網頁的排序。雖然不同的業務中排序問題涉及到的實體不同,問題的本質其實都很類似。排序系統一般可分為兩個階段,召回(recall)和排序(rank),有時候也稱作粗排和細排。16年Recsys上谷歌發表了篇介紹youtube的視頻推薦的文章,裡面使用到了深度學習的方法,但深度學習在工業界中落地稍微困難一些,所以本文想介紹下傳統機器學習模型在排序問題中的應用。
整體的思路其實和RankSVM類似。SVM模型在海量數據場景只能使用線性核,模型表達能力有限,所以我們選擇使用FM模型。FM模型引入了高階特徵交叉,而且在稀疏場景下模型參數學習更為準確。FM模型由於複雜度原因一般只用二階,對應的計算公式如下:
上式中的最後一項可以化簡成如下式子使得計算複雜度從 降到 ,其中k為隱向量長度, 為特徵數目。值的注意的是,真實業務場景中往往是海量特徵,一般只有幾十或百量級的特徵非空,此時計算特徵複雜度時要考慮是非空特徵數目,而不再是特徵數目。由該式子可以看出,模型參數主要是偏置 ,一次項係數 和隱向量係數 ,總共參數規模為1+n+kn個。後續計算梯度的時候是直接基於該式子。
我們知道,pairwise類方法要比pointwise類方法(直接看做分類或者回歸)要更適合排序類場景。pairwise loss里構造樣本時我們同時考慮兩個item比如和 。這兩個item是有順序的,比如用戶在在排序列表裡點擊了 ,而未點擊 ,我們可以看做 要優於 ,這樣兩者構造的樣本其標籤為 。我們要去擬合 的表達式為:
類似於邏輯回歸,這裡使用最大似然進行參數估計。設S為所有有序pair對的集合。針對任一有序對,我們可以調換順序使得 ,所以可以進一步化簡。
=
這樣考慮這一對pair的話,可以定義損失函數,如下式:
損失函數對參數 求導的話可得
如果定義 ,則 可以簡化為:
前面我們提到,總共有偏置項、一次項係數和隱變數係數三類參數,通過前面 的公式可以得到:
1、當 是偏置項時,相減時消去,故不用考慮;
2、當 是一次項 時,
3、當 是隱變數參數 時, ,這裡求導涉及求和公式稍微麻煩點。
這樣就求出了導數,後面可以直接利用sgd之類的優化演算法進行參數的學習。
整個模型我們可以稱之為RankFM。在我們的業務場景中,RankFM比直接看做分類問題使用FM模型有一定提升。但RankFM這類pairwise方法也有不足的地方,把列表裡不同的item對都平等看待,並沒有考慮item的位置信息,比如排在前面的item明顯要比排在後面的item重要。
參考文獻
1.Exploiting ranking factorization machines for microblog retrieval.
2.LambdaFM: Learning Optimal Ranking with Factorization Machines Using Lambda Surrogates.
推薦閱讀:
※斯坦福CS231n項目實戰(三):Softmax線性分類
※TensorFlow 官方文檔中文版發布啦(持續維護)
※機器學習演算法系列--生成模型與判別模型
※機器學習篇-評估機器學習的模型