n-armed bandit problem的ε-greedy算法
1、实验的目的
这个实验的目的是想说明,只要一个action被选择的次数足够多,其Qt(a)就会收敛到Qt*(a),即,该action的action value。而使用ε-greedy算法,能够最终找到action value最大的那个action。
2、仿真实验过程
首先要明白,凡是仿真,都是要重复实验的,最主要的目的是降低随机性的影响,尽管这个n-armed bandit problem本身就是个随机性问题,但也要通过多次实验求出统计值,消除初值的随机性。因此,选择2000组实验同时进行,每一步计算都取2000组的平均值,就可以看出总体趋势。如果只做一次实验,很有可能由于初始随机选择了一个action,随后就以该值为中心选择,最后可能无法收敛到均值最大的那个action。
本实验假设n=10,经过1000步action选择,统计2000个实验的数据。实验过程如下:
1)首先,生成2000组(0,1)正态分布的随机数,每组10个,即为每个实验所设定的Qt*(ai)值,并选出每组中的最大值(一个检查策略成功与否的指标就是从统计角度看,是否越往后选择这个最大值的action的概率越大,大到什么程度)。
2)然后开始选择action。初始化的各个action的Qt(a)都是0,因此,第一次选择是随机的。被选择的action(例如a)的reward是服从(Qt*(a),1)正态分布的随机产生的一个值。Q1(a)就等于reward(a)。
3)然后根据ε值选择下一步action。随机产生一个数,小于ε就随机选择一个action;大于ε的话,就选择Qt-1(a)最大的一个action,如果有几个action的Qt-1(a)同样最大,最好随机选择一个。同样,被选择的action的reward是服从(Qt*(a),1)正态分布的随机产生的一个值。
4)根据Qt-1(a)估值公式更新被选择的action的Qt-1(a),可采用average_reward(action, 1, j) = average_reward(action, 1, j)+(reward-average_reward(action, 1, j))/average_reward(action, 2, j),即:Qt(a)*Tt-1= Qt-1(a)*(Tt+1)+reward来计算。
5)上述过程对2000组分别计算,并对Qt(a)取平均,这里,a不是同一个a,分别是各自组中max(Qt(a))对应的a。因为本身2000组实验是同分布的,所要验证的只是能否获取最大均值的这个趋势,因此是对等的。
6)计算2000组中已经取得最大值的组数,这个指标应该是递增趋势的,表明行为选择将会收敛到这些最大值。