推薦系統的模型應該如何調參?哪些超參數(如:learning rate, batch size, embedding size, regularization)更加重要?


謝邀,個人覺得重要程度排序如下:

  1. learning rate。這個值很重要,太大了會不收斂,太小了會學的太慢(讓你以為它不收斂)。最優值從1e-4到1e-1的數量級都碰到過,原則大概是越簡單的模型的learning rate可以越大一些。
  2. regularization。最普遍的是L2-norm,重要性在不同的模型裡面也不一樣。印象中最優值從1e-8到1e-4數量級都有,這個值其實也取決於你的代碼里L2是怎麼實現的,比如embedding matrix的L2有沒有除以batch size等。
  3. embedding size,感覺大部分推薦系統的演算法對embedding size都不是太敏感,甚至有時候一位數都足夠了(主要取決於數據的稀疏程度)。大部分情況下,8~32的embedding size可能是比較好的選擇,如果你是按照2的冪進行調參的話。
  4. batch size,更多的是影響演算法的運行速度,batch size越大,速度越快,但效果會有所下降。小規模數據集(100萬條以下interaction)的batch size大概在幾十到幾百比較合適,大規模數據集裡面,有時候你不得不把batch size設大一點(幾萬),不然跑起來實在太慢了。
  5. dropout,感覺沒有太大的用處,除非你的模型裡面dense layer很多且很大。
  6. epoch,沒什麼可以調的,看到指標例如AUC下降了且沒有回升的跡象就可以停了,或者直接寫個early stopping就可以。


沒有做過推薦系統但是最近在幫太子爺寫課程大作業,遭遇了很煩心的調參問題不請自來答一下。做的是簡單的帶監督的圖像分類問題,用的keras。學習率決定了這個模型能不能訓起來,數據增強決定了這個模型能不能上90,(手動微笑臉)調了兩天的參val acc和acc一直差15%以上,萬念俱灰上了imagedategenerator,神奇的好了……

然後dropout效果真的不好,上bn的時候不要上l2正則,不要問我為什麼…batchsize和epoch這種值一般你也不會設的很誇張的…

最後。我覺得調參也是神學…沒什麼道理可言,沒什麼經驗借鑒,就自己瘋狂試就行了…


斗膽回答。拿我實際的經驗來說,learning rate調起來效果最明顯,0.01-0.001之間吧,其次是embedding size,個人覺得根據實際算力,一般10就夠了,幾十也行。然後是正則係數和優化演算法。


我在做股票模型,說一些經驗之談,learning rate>dropout>sample weight >l1l2> optimal method 。


調學習率learning rate


最關鍵的是lr,再有就是畫出loss曲線,基本就可以看出來問題


實踐證明只調 learning rate 基本能解決80%的調參需求,其他的和普遍經驗值相差不大就行了。


推薦閱讀:
相关文章