|
在此之前,请先阅读上一篇文章:【RL系列】Multi-Armed Bandit笔记
本篇的主题就如标题所示,只是上一篇文章的补充,主要关注两道来自于Reinforcement Learning: An Introduction 的课后习题。
第一题为Exercise 2.5 (programming),主要讨论了Recency-Weighted Average算法相较于Sample Average算法的优点所在。练习内容大致为比较这两种算法在收益分布为非平稳分布的情况下的表现情况,主要的评价指标依照Figure 2.2,也就是Average Reward和Optimal Action Rate两个。
先前我们在上一篇文章中讨论的所有情况都是假设收益分布为一个固定的不变的正态分布,比如N(1, 1),这里可以称其为平稳分布(Stationary Distribution)。那么如何制造一个非平稳分布呢?在练习中,已经给出了提示:在每一步的实验中,在实际收益均值上加一个服从标准差差为0.01,均值为0的正态分布的随机数即可,举个例子,N(1 + N(0, 0.01), 1)。那么在原先的Matlab程序中需要做出如下的修改:
% 10-Armed Bandit K = 10; AverReward = randn([1 K]); % Reward for each Action per experiment % Reward(Action) = normrnd(AverReward(Action) + normrnd(0, 0.01), 1);
学习过程的参数设定为epsilon = 0.1,最终step数设为10000。可以计算出,在step = 10000时,Sample Average的OAR在0.8左右,而Constant Step Size算法(Recency-Weighted Average)的OAR值约为0.8820.
第二题为Exercise 2.6,这个问题是关于初值优化的,主要讨论了初值优化后的OAR图像为何会在实验次数较少时出现突然的尖峰,这个问题也被称作Mysterious Spike:
假设我们将初值Q1设为5,最终step数设为1000,epsilon = 0。左图的greedy策略是直接求解Q值中的最大值所对应的动作,如下将其转化为Matlab
[MAX i] = max(Q); if(rand(1) < 1 - epsilon) CurrentA = i; else CurrentA = unidrnd(RandK); end
而右图也同样是将初值设为5,但并未出现Spike现象,给出右图的greedy选择策略:
[MAX i] = max(Q); if(MAX ~= 5 & rand(1) < 1 - epsilon) CurrentA = i; else CurrentA = unidrnd(RandK); end
出现Spike现象的原因其实很简单,如果一向量或序列存在两个或两个以上相同的最大值时,计算机在计算最值所在位置的返回值一定是第一个最大值的位置。举个例子(Matlab)
x = [1 2 5 5 5 1] [MAX n] = max(x); >> MAX = 5 >> n = 3
这个例子中一定不会出现n = 4或n= 5,这就造成了一个问题,我们总是会在有限的步数内不断的去逼近那个真实的收益均值最大值所在的位置。那么在计算Optimal Action Rate时,我们可以举个例子,假设现在是10-Armed Bandit问题,而step数只有不到十次,我们就只看5次的情况吧,假设我们的真实收益最大均值就在向量的第五个位置,且每次reward值是固定的。
N = 7 K = 10 Reward = [1 2 3 4 5 4.5 3.5 2.5 1.5 0.5]; [MAX i] = max(Reward); >> MAX = 5 >> i = 5 Q = zeros(1, K) + 5; % First step [MAXQ i] = max(Q); >> i = 1 >> Q = [4.6 5 5 5 5 5 5 5 5 5] >> OAR = 0 % Second step [MAXQ i] = max(Q); >> i = 2 >> Q = [4.6 4.7 5 5 5 5 5 5 5 5] >> OAR = 0 ..... % 5th step [MAX i] = max(Q); >> i = 5 >> Q = [4.6 4.7 4.8 4.9 5 5 5 5 5 5] >> OAR = 1/5 %Notice that here's a Spike!
所以依据上面的推断,我们可以推测出,Spike的发生大概率出现在初始时的K次实验内(K为K-Armed中的K),而且Spike的最高值取决于真实的收益均值所在的位置与实验次数N值之比,假设其所在位置为第M位,则Spike的值可以粗略估计为(N - M + 1)/N。当实验次数大于K时,OAR则会从1/K开始逐步增加。
右图没有Spike的原因也很简单,当最大值为初始值时,则考虑随机学选择动作。也就是说当实验次数小于K的时候,实行完全随机策略,则很好的避免的Spike的出现。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 23:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社