亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1254
2022-05-29
學習總結
(1)深度推薦模型的前沿趨勢,強化學習(Reinforcement Learning,又叫增強學習)與深度推薦模型的結合。強化學習的大體過程:通過訓練一個智能體(它與環境交互,不斷學習并強化自己的智力),從而指導自己的下一步行為,取得最大的預期收益。可見其優勢——
模型能夠實時更新,用戶行為快速反饋
等。
(2)強化學習的落地不容易,工程量巨大(涉及到了模型訓練、線上服務、數據收集、實時模型更新等幾乎推薦系統的所有工程環節)。不像之前學過的深度學習模型,只要重新訓練一下它,就可以改進一個模型結構。本次task學習微軟的DRN模型:
構建了雙塔模型作為深度推薦模型,得出行動得分。
更新方式:利用《微更新》實時學習用戶的獎勵反饋,更新推薦模型,再利用階段性的《主更新》學習全量樣本,更新模型。
微更新方法:競爭梯度下降算法(
添加隨機擾動;組合推薦列表;實時收集用戶反饋。
),它通過比較原網絡和探索網絡的實時效果,來更新模型的參數。而主更新會對微更新的參數進行糾偏(實踐中有延遲反饋、數據噪聲等問題)。
(3)DRN最大的改進就是把模型推斷、模型更新、推薦系統工程整個一體化了,讓整個模型學習的過程變得更高效,能根據用戶的實時獎勵學到新知識,做出最實時的反饋。
文章目錄
學習總結
一、強化學習基本概念
1.1 強化學習框架的六要素
二、強化學習推薦系統框架
三、深度強化學習推薦模型 DRN
四、DRN 的學習過程
4.1 離線部分
4.2 在線部分
五、DRN 的在線學習方法:競爭梯度下降算法
5.1 添加隨機擾動
5.2 組合推薦列表
5.3 實時收集用戶反饋
5.4 總結
六、作業
七、課后答疑
Reference
一、強化學習基本概念
1.1 強化學習框架的六要素
智能體(Agent):強化學習的主體也就是作出決定的“大腦”;
環境(Environment):智能體所在的環境,智能體交互的對象;
行動(Action):由智能體做出的行動;
獎勵(Reward):智能體作出行動后,該行動帶來的獎勵;
狀態(State):智能體自身當前所處的狀態;
目標(Objective):指智能體希望達成的目標。
串起6要素:一個在不斷變化的【環境】中的【智能體】,為了達成某個【目標】,需要不斷【行動】,行動給予反饋即【獎勵】,智能體對這些獎勵進行學習,改變自己所處的【狀態】,再進行下一步行動,即持續這個【行動-獎勵-更新狀態】的過程,直到達到目標。
任何一個有智力的個體,它的學習過程都遵循強化學習所描述的原理。比如說,嬰兒學走路就是通過與環境交互,不斷從失敗中學習,來改進自己的下一步的動作才最終成功的。再比如說,在機器人領域,一個智能機器人控制機械臂來完成一個指定的任務,或者協調全身的動作來學習跑步,本質上都符合強化學習的過程。
二、強化學習推薦系統框架
強化學習推薦模型 DRN(Deep Reinforcement Learning Network,深度強化學習網絡)是微軟在 2018 年提出的,它被應用在了新聞推薦的場景上,下圖 1 是 DRN 的框架圖。同時也是一個經典的強化學習推薦系統技術框圖。
(1)在新聞的推薦系統場景下,DRN 模型的第一步是初始化推薦系統,主要初始化的是推薦模型,可以利用離線訓練好的模型作為初始化模型,其他的還包括我們之前講過的特征存儲、推薦服務器等等。
(2)推薦系統作為智能體會根據當前已收集的用戶行為數據,也就是當前的狀態,對新聞進行排序這樣的行動,并在新聞網站或者 App 這些環境中推送給用戶。
(3)用戶收到新聞推薦列表之后,可能會產生點擊或者忽略推薦結果的反饋。這些反饋都會作為正向或者負向獎勵再反饋給推薦系統。
(4)推薦系統收到獎勵之后,會根據它改變、更新當前的狀態,并進行模型訓練來更新模型。接著,就是推薦系統不斷重復“排序 - 推送 - 反饋”的步驟,直到達成提高新聞的整體點擊率或者用戶留存等目的為止。
具體的應用場景的概念:
三、深度強化學習推薦模型 DRN
在 DRN 框架中,扮演“大腦”角色的是 Deep Q-Network (深度 Q 網絡,DQN)。其中,Q 是 Quality 的簡稱,指通過對行動進行質量評估,得到行動的效用得分,來進行行動決策。
DQN 的網絡結構如圖 2 所示,它就是一個典型的雙塔結構。其中,用戶塔的輸入特征是用戶特征和場景特征,物品塔的輸入向量是所有的用戶、環境、用戶 - 新聞交叉特征和新聞特征。
在強化學習的框架下,用戶塔特征向量因為代表了用戶當前所處的狀態,所以也可被視為
狀態向量
。
物品塔特征向量則代表了系統下一步要選擇的新聞,這個選擇新聞的過程就是智能體的“行動”,所以物品塔特征向量也被稱為
行動向量
。
雙塔模型通過對狀態向量和行動向量分別進行 MLP 處理,再用互操作層生成了最終的行動質量得分 Q(s,a),智能體正是通過這一得分的高低,來選擇到底做出哪些行動,也就是推薦哪些新聞給用戶的。
四、DRN 的學習過程
正是因為可以在線更新,才使得強化學習模型相比其他“靜態”深度學習模型有了更多實時性上的優勢。
4.1 離線部分
DRN 根據歷史數據訓練好 DQN 模型,作為智能體的初始化模型。
4.2 在線部分
在線部分根據模型更新的間隔分成 n 個時間段,這里以 t1 到 t5 時間段為例。
(1)首先在 t1 到 t2 階段,DRN 利用初始化模型進行一段時間的推送服務,積累反饋數據。(2)接著是在 t2 時間點,DRN 利用 t1 到 t2 階段積累的用戶點擊數據,進行模型微更新(Minor update)。
(3)t2、t3 時間點提到的模型微更新操作,用到 DRN 使用的一種新的在線訓練方法,Dueling Bandit Gradient Descent algorithm(競爭梯度下降算法)。
(4)最后在 t4 時間點,DRN 利用 t1 到 t4 階段的用戶點擊數據及用戶活躍度數據,進行模型的主更新(Major update)——可以理解為利用歷史數據的重新訓練,
用訓練好的模型來替代現有模型
。時間線不斷延長,我們就不斷重復 t1 到 t4 這 3 個階段的操作。
五、DRN 的在線學習方法:競爭梯度下降算法
5.1 添加隨機擾動
第一步,對于已經訓練好的當前網絡 Q,
對其模型參數 W 添加一個較小的隨機擾動
(具體公式如下),得到一個新的模型參數,這里稱對應的網絡為探索網絡 Q~。
在這一步中,由當前網絡 Q 生成探索網絡 ,產生隨機擾動的公式 1 如下: Δ W = α ? r a n d ( ? 1 , 1 ) ? W ΔW=α?rand(?1,1)?W ΔW=α?rand(?1,1)?W其中,α 是一個探索因子,決定探索力度的大小。rand(-1,1) 產生的是一個[-1,1]之間的隨機數。
5.2 組合推薦列表
第二步,對于當前網絡 Q 和探索網絡 Q~,分別生成推薦列表 L 和 L~,再將兩個推薦列表用間隔穿插(Interleaving)的方式融合,組合成一個推薦列表后推送給用戶。
5.3 實時收集用戶反饋
最后一步是實時收集用戶反饋。如果探索網絡 Q~生成內容的效果好于當前網絡 Q,我們就用探索網絡代替當前網絡,進入下一輪迭代。反之,我們就保留當前網絡。
5.4 總結
DRN 的在線學習過程利用了“探索”的思想,其調整模型的粒度可以精細到每次獲得反饋之后,這一點很像隨機梯度下降的思路:
雖然一次樣本的結果可能產生隨機擾動,但只要總的下降趨勢是正確的,我們就能夠通過海量的嘗試最終達到最優點
。
DRN 正是通過這種方式,讓模型時刻與最“新鮮”的數據保持同步,實時地把最新的獎勵信息融合進模型中。模型的每次“探索”和更新也就是我們之前提到的模型“微更新”。
在這個過程中,需要一個架構師一樣的角色來通盤協調,就成為了整個落地過程的關鍵點。有一個環節出錯,比如說模型在做完實時訓練后,模型參數更新得不及時,那整個強化學習的流程就被打亂了,整體的效果就會受到影響。
六、作業
(1)DRN 的微更新用到了競爭梯度下降算法,這個算法有沒有弊端?你還知道哪些可以進行模型增量更新或者實時更新的方法嗎?
【答】算法相比于隨機梯度下降算法的弊端是:每個參數的更新方向是隨機的,而不是像隨機下降算法一樣,是沿著梯度更新的。隨機更新可能導致的結果就是:
1.收斂是緩慢的。2.很難收斂到全局最優值。
DRN的微更新,弊端是隨機更新收斂太慢,沒有方向性。可以參考double DQN,用target net和action net結果之間的差值作為loss,然后隔一段時間將action net 賦值給target net,直至兩者完全一致,收斂。而action net的更新采用了experience replay的技術,隨機選取歷史數據再訓練,同時有小概率采用隨機方向的探索,也許這樣比DBGD更有方向性。
DRN 的微更新用到了
競爭梯度下降算法,理解上可以近似我們的遺傳算法/進化算法
。
小的擾動可以理解為“網絡offspring的變異”,然后根據反饋選擇優秀的“子代”模型替代“上一代模型”。
另外一個思路就是,可以考慮集成學習的策略(Ensemble Learning)。建立合適的模型群,設計增加或者減少模型的策略,例如基于contribution scores 或者添加基于時間的權重等。
因為線上推薦系統的數據流是變化的,所以
不存在一個“當前vs所有”或者歷史意義上的最優模型, 只要用戶對推薦效果的反饋不發生大幅度變差
,就可以算是成功了。
七、課后答疑
(1)競爭梯度下降算法需要比較探索網絡和當前網絡的推薦效果,但是在模型結構圖中,微更新的參考只有上階段的推薦反饋,這里的推薦反饋只有一個,那么如何去更新競爭梯度下降算法呢?探索網絡和當前網絡的推薦效果是在圖示的哪個階段進行實現的呢?
【答】在實際實現中肯定不是只用一個效果就更新網絡,而是做一小段實踐的數據收集,再根據這個batch的效果進行探索網絡和當前網絡的選擇。這部分在實際的工程中一般是在flink等流計算平臺上實現的。
(2)主更新的訓練策略使用的也是競爭梯度下降算法嗎?使用歷史數據重新訓練,這里指的是從零訓練,還是說從離線階段輸出的模型進行fine-tune呢?
【答】主更新不使用梯度下降算法。實際工程中可視為一次正常的模型更新,使用的是全量歷史樣本,當然這其中包括了最近收集到的樣本。
(3)按照論文,首先對原網絡進行隨機擾動,那么需要保存隨機擾動之后的模型W’,然后用W和W’產生的結果進行交織,根據結果選取好的保留。因為這里最后推薦是一個列表。要評估整個列表的推薦結果,至少需要等到用戶手動刷新推薦或者離開推薦頁。這個過程,按照我的現有知識,整個過程從生成推薦列表到獲取列表反饋,完成下來可能需要幾分鐘。請問一次更新真的一般都是這么長時間嗎?是否業界有其他辦法?
如果真的像我所想,那么DBGD的弊端就是在這幾分鐘內網絡權重只能迭代一次,而且探索方向只有一個。
如果增加要增加網絡更新頻率,可以用反向傳播計算梯度,在線更新模型,這就和一般的神經訓練一樣,只是根據實時樣本流訓練。
增加探索方向可以使用Evolution Strategy。從當前網絡權重為中心按照高斯分布采樣,根據每個子網絡的用戶反饋計算梯度,用梯度上升更新網絡。
【答】不可能完成秒級別的更新,應該是以分鐘為級別,而且應該是收集少量的mini batch數據之后進行一次梯度更新。
因為像你說的,列表展示、用戶反應和交互最好需要幾十秒到幾分鐘的時間,更別提整個數據流的延遲了。這篇論文其實已經做了大量的工程妥協,我們也主要理解思路即可,不用太多糾結于具體的思路。
(4)微更新部分主要是學習用戶的實時反饋,直接使用梯度下降也可以學習到,為什么要采用競爭梯度下降呢?
【答】基于SGD的online learning確實可以做實時學習。但它的整個工程難度比競爭梯度下降難非常多,可以從整個框架的角度去思考這個問題,為什么落地難度大非常多。
(5)增加實時性上采用FTRL進行在線學習和強化學習在最終結果上有什么區別,如何判斷選擇?
【答】online learning其實可以看作強化學習的一個子集,或者說是子類。所以FTRL做在線學習本質上就是強化學習的一種。
(6)在線更新應該不是區別強化學習DRN的核心。
DRN 的核心在于 DQN 把 狀態 和 行動建立起評分聯系
。Q是Q learning 的意思,即 在這個狀態下 可能的行動的評分預計。這個DQN的學習 才應該是核心,是區別傳統的監督學習 輸入輸出pair 的關鍵。畢竟評分標準 不是直接的label.
【答】其實理論上DQN也沒有非常大的創新,因為所謂的狀態就是用戶所處的當前特征集合,所謂行動就是物品的特征。需要建立強化學習中狀態的和行動的概念和思想,看看能否應用到推薦系統之中。
其實寬泛的意義上,mutli-bandit,online learning都屬于強化學習的范疇。
典型的強化學習的最大功夫就在于如何進行這里的微調,一般來說mutli-bandit中的exploration策略會粗放一些,偏global的調整,但RL一般會通過進行新樣本的學習,調整智能體也就是這里的模型來實現不斷的學習。
Reference
(1)https://github.com/wzhe06/Reco-papers
(2)《深度學習推薦系統實戰》,王喆
(3)美團技術團隊:強化學習在美團“猜你喜歡”的實踐
(4)spinningup中文文檔:https://spinningup.qiwihui.com/zh_CN/latest/
推薦系統 機器學習 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。