引言
前面已经介绍了两种bandit算法—
- 两种算法在每一轮选择时,默认都是选择到目前为止最好的臂;
除此之外,算法会尝试去探索一些目前看起来不是最好的臂:
-ϵ -greedy算法探索的时候完全是随机的。
-softmax算法探索是基于到当前时刻臂的收益概率。收益概率越高,选择的概率越高。-
两种算法都能够通过随着时间动态修改基本参数来实现更好的性能。
这种随机性,或者仅仅考虑收益回报的算法有一个很明显的缺点就是健壮性比较差,很容易受噪音数据影响。本篇要介绍的UCB算法,是一种完全不同的算法。首先,它是完全不使用随机性的;其次,它除了要考虑收益回报外,还要考虑一点,这个收益回报的置信度有多高。
问题来了,怎么来定义这个置信度呢?这是UCB算法的核心(UCB实Upper Confidence Bounds的首字母缩写)。实际UCB算法包括很多种。本文介绍的只是其中一种。现在,让我们来正式定义这个置信度以及整个UCB算法。
首先,考虑置信后定义的收益回报为:
其中rs 为在s时刻观察到的收益;ni,t 为当当前t时刻,臂i被选中的次数。用一句话来描述这个新的收益就是,臂被选中的总次数中,有收益的占比。或者也可以说是收益的一个平均值。
然后,给每个臂赋予一个最终的取值:
其他t为摇臂次数;
最后的UCB算法流程如下:
算法是不是很好理解?
参考:
【1】bandit_algorithms_for_website_optimization
【2】Learning and Optimization for Sequential Decision Making Lecture 3: UCB Algorithm, Worst-Case Regret Bound