UCB算法
UCB在做EE(Exploit-Explore)的時候表現不錯,但是一個不關心組織的上下文無關(context free)bandit算法,它只管埋頭干活,根本不觀察一下面對的都是些什么樣的arm。
UCB算法要解決的問題是:
面對固定的K個item(廣告或推薦物品),我們沒有任何先驗知識,每一個item的回報情況完全不知道,每一次試驗要選擇其中一個,如何在這個選擇過程中最大化我們的回報?
UCB解決這個Multi-armed bandit問題的思路是:用置信區間。置信區間可以簡單地理解為不確定性的程度,區間越寬,越不確定,反之亦反之。
每個item的回報均值都有個置信區間,隨着試驗次數增加,置信區間會變窄(逐漸確定了到底回報豐厚還是可憐)。
每次選擇前,都根據已經試驗的結果重新估計每個item的均值及置信區間。
選擇置信區間上限最大的那個item。
“選擇置信區間上界最大的那個item”這句話反映了幾個意思:
- 如果item置信區間很寬(被選次數很少,還不確定),那么它會傾向於被多次選擇,這個是算法冒風險的部分;
- 如果item置信區間很窄(備選次數很多,比較確定其好壞了),那么均值大的傾向於被多次選擇,這個是算法保守穩妥的部分;
- UCB是一種樂觀的算法,選擇置信區間上界排序,如果時悲觀保守的做法,是選擇置信區間下界排序。
UCB1算法
這里我們介紹一個最常見的bandit策略--UCB1算法,該算法的精神被認為是樂觀地面對不確定性:我們首先猜測各臂可能給出的獎勵,然后選擇那個最高臂,如果實際的獎勵較少,我們會盡快地降低對該臂的猜測,反之,我們就盡量多選擇這個臂. 這里面的猜測,其實就是對各臂的獎勵建立了一個指數,通過動態調整這個指數,我們最終將確定那個期望獎勵最高的臂.
UCB1算法: 在前K輪,每臂各選擇一次, 在\(t=K,K+1...\)輪:
- 選擇指數\(I_i\)最大的臂,其中\(I_i=\bar{x}_i+\sqrt{2\frac{\log t}{n_i}}\),其中\(\bar{x}_i\)是均值,\(n_i\)是臂\(i\)當前累積被選擇的次數
- 記錄獲得的獎勵,並更新\(\bar{x}_i\)和\(n_i\)
當UCB1算法被執行時,我們可以確定如下定理,其中\(\Delta_i=\mu^{*}-\mu_i\):
定理: UCB1累積遺憾的期望不超過
\[8\sum_{i:\mu_i\lt \mu^{*}}\frac{\log T}{\Delta_i}+(1+\pi^2/3)(\sum_{j=1}^K \Delta_j) \]
定理的證明我就不在這里列出了,具體可以參考Finite-time Analysis of the Multiarmed Bandit Problem
.
我們發現UCB1算法的累積遺憾期望是\(O(\log T)\)的,這是不是就足夠了呢? 當然不是,如果最壞情況下的累積遺憾過高,該算法其實是沒有意義的.
UCB1最壞情況
定理: 最壞情況下的UCB1累積遺憾不超過\(O(\sqrt{KT\log T})\)
我們通過累積遺憾期望函數分析對其進行簡單的證明: 首先,我們對累積遺憾期望進行偏微分,得到
讓它等於0,則有\(\Delta_i=\sqrt{\frac{8\log T}{1+\pi^2/3}}=O(\sqrt{\log T})\),但是這時是\(R\)的一個極小值點\(R=O(K\sqrt{\log T})\).同時,如果我們讓\(\Delta_i\)盡可能小的話,\(R\)將變得任意大,但是這時所有的獎勵都差不多,所以些時還是極小值. 如果我們讓\(\Delta_i\)等於1的話,我們還是得到\(R=O(K\sqrt{\log T})\)
其實,如果我們讓\(\Delta_i=\Delta\),這時,累積遺憾期望將會是\(\Delta T\),代入公式可得最壞情況下的累積遺憾為\(O(\sqrt{KT\log T})\)
論文:Finite-time Analysis of the Multiarmed Bandit Problem
Let be independent, identically distributed random variables, such that
and
. If
, then:
有了先驗系數分布和釆樣個數就定下后驗系數分布,從這來看,另種方法說明為什么總樣本數無所謂。
因為我們有\(P(\beta)\) ,有\(P(x_i, i\in [1,n] | \beta), P( \beta | x)\)不就知道了么;
並且決定\(P( \beta | x)\)的interval 的是x(釆樣)長度而非總樣本長度