有多个臂的游戏机器,摇动不同的臂会不同概率的产生不同数量的金币,一共N次机会,采用不同的策略来获得最多的金币。
—greedy策略
greedy策略
也就是贪心策略,以一定的次数去试验每一个臂,选择吐出金币最多的臂,然后一直摇下去,这样朴素的策略,也可以说属于朴素探索。
编程思路
初始化每个动作的回报和摇动该动作的次数。
每个臂都尝试n次,计算每个摇臂总的金币数。
比较出总回报最大的那个臂,一直摇动它。
缺陷
可能测试后,金币数多的臂的出币量会变小,一直摇一个臂,就要接受出币量小的区间,应该随时选择出币量最大的臂,而不是选择一次。使用除了要关注比较出的那个臂外,还要保留一定的概率去摇动其他的臂。使用引入—greedy策略
—greedy策略
取一个概率记为,每次动作以概率随机选择一个臂,再以1-的概率选择摇动出币量最多的那个臂。
编程思路
初始化总回报,每个动作的回报和摇动动作的次数。
利用上述概率策略选择一个臂a
臂a的摇动次数+1
根据动作a和环境返回的回报,更新动作a的平均回报。
计算总收益
Boltzmann策略
上述的策略概率分布并不合理,因为贪婪动作被选择的概率是,而非贪婪动作的概率都为。但是非贪婪动作也有好坏之分,不能被这样统一处理。而玻尔兹曼策略对动作采样的概率进行了软处理。
策略表达式为:
越小,越接近贪婪策略,越大,越接近均匀策略。
UCB策略
如图所示,假设多臂赌博机已知的几个拉杆动作-奖励分布曲线,我们会发现对应绿色曲线动作可以达到最大收益,但我们并不会去选择它,而是优先选择跨度最大的动作(蓝色曲线),从置信区间角度讲,其置信区间大,从概率统计角度讲,这种分布跨度越大,方差越大,说明对应的采样样本数量相对少,不确定性越大,而UCB正是一种偏向于对不确定性大的动作进行试探的算法。
UCB值主要包括两项,为
表示动作a 被选择的次数,表示选择动作总次数的对数,c 是一个权值。
简单地说,代表着开发,代表着探索。当当前动作被采样的次数很低时,不变,而在增加,值变大,不确定性越高,使得其被选择的概率越大;反之亦然。