Bandit算法
? ? ? ?在生活中,每個人都會面臨各種各樣的選擇問題,簡單的來說中午吃什么有很多種可能性,怎么樣能提供一種比較好的辦法來解決選擇難的問題,那就是Bandit算法
? ? ? 說到Bandit算法,我起初剛看到這個算法的時候是出現在強化學習里面,這個算法主要來源于賭博的問題,主要是這么回事,一個人去賭場搖老虎機,你不知道老虎機是什么可以理解為就是一臺機器你搖它的手臂它會往出吐錢,賭場有一排老虎機,外表沒有區分,但是每個老虎機吐錢的概率不一樣,也不知道每個老虎機吐錢的規律是什么樣,每次怎么選擇老虎機可以做到最大化收益,這個就是多臂賭博機問題。
? ?注:推薦系統中也會出現這個問題,如何平衡準確性和新穎性評價指標,就是那個Double E問題(Exploitation&Exploration),Exploitation:選擇現在可能最佳的方案,Exploration:選擇現在不確定的一些方案,但未來可能會有高收益方案;在做兩類決策的過程中,不斷更新對所有決策的不確定性的認知,優化長期的目標函數
下面說一下幾種Bandit算法:
算法原理
1、Epsilon-Greedy:以1-epsilon的概率選取當前收益最大的臂,以epsilon的概率隨機選取一個臂
2、Upper Confidence Bound:均值越大,標準差越小,被選中的概率會越來越大(相對慢一點,確定性高)
3、Thompson Sampling:每個臂維護一個beta(wins,lose)分布,每次用現有的beta分布產生一個隨機數,選擇隨機數最大的臂(較快,隨機性高)
算法實現
幾種算法效果比較:
greedy表示貪婪;egreedy表示給一個e的概率進行探索新的內容;egreedy_decay表示探索一定程度大部分都已知,所以添加一個衰減因子控制,ucb和thompson算法都是bandit算法的幾種算法
Bandit算法應用
? ? 1、興趣探索
? ? 2、冷啟動探索
參考:
? ? ? ?如何理解beta分布:https://blog.csdn.net/hrbeuwhw/article/details/79554256
注:Bandit算法實現的詳細代碼詳見git:https://github.com/wangtao666666/code/blob/master/Bandits_.py
總結
- 上一篇: Hierarchical Attenti
- 下一篇: 推荐系统中的召回算法--协同过滤