這個選擇偏差(selection bias)主要是以信息流推薦為例來說的。在這里說的是由於展示位置等因素,雖然這個內容用戶不一定很喜歡,但是還是點擊了。去除選擇偏差,就是考慮用戶的點擊互動行為多大程度是受展示位置的影響。一般來說信息流場景下,第一條的點擊率,互動率是要高於之后的位置。統計發現,前三、四條有明顯的遞減關系,但是中間一段基本差別不大。但是一刷的最后一兩條,又會比倒數第三條高。
簡而言之,就是說我們在訓練模型評價用戶對於這些候選item的偏好程度的時候要剔除掉一些會帶來選擇偏差的因素。
會帶來選擇偏差的因素有展示位置(比如在這次下發中是第幾條),設備id(這個主要是考慮到不同設備的屏幕,分辨率對於內容展示的效果不同),展示延遲,
日期和時間,客戶端版本等(參考《計算廣告》13.5.4)。
一般推薦系統考慮的是展示位置和設備id(谷歌的論文《Recommending What Video to Watch Next: A Multitask Ranking System》)。
接下來總結下我了解的在rank模型中消除展示偏差的方法。
(1)離線訓練模型時候加上這個特征,但是線上設置為0。這種主要是LR模型,用這個相當於加了一個bias。
(2)對於DNN模型來說,這個特征還是和其他進行交叉,這種不能直接置為0。上文提到的論文中的方法就是在額外接一個小的網絡訓練這個bias。我覺得應該就是給這position和device_id訓練個embedding,然后有個全連接層融合一下最后在變成一個數加到多目標網絡的最后一層。訓練的時候,這個小網絡和大網絡一起訓練,但是線上服務的時候只有大網絡。
(3)還有一種方法,感覺比較復雜,而且據說實際效果一般。這些偏差特征和其他特征一起訓練,但是這部分梯度回傳的時候梯度*-1,相當於讓模型和這幾個特征值做對抗。
好了,說了這么多,那實際效果如何呢。目前從我的嘗試結果看來,說的很有道理,實際上線然並卵啊。仔細想來,這部分偏差對於一個成熟的推薦系統來說影響到底有多大呢?
對於信息流這種用戶刷刷刷的場景下,展示位置會有影響,但是如果用戶刷的比較多,尤其是每次下發的內容用戶大部分都能刷出來的情況下,其實這個偏差影響不大。畢竟后面的內容如果用戶感興趣,用戶一樣會互動,點擊。這個和廣告,搜索的場景還是不一樣的。舉個例子,比如用戶刷了十刷,如果是不斷上滑的話,除了第一條之外,用戶對於之后出的內容大部分都看了,而且注意力也並沒有衰退很多。所以偏差的影響應該很小。