强化学习入门: the 10-armed bandit problem,e-greedy 算法

学习强化学习《Reinforcement Learning An Introduction》,2.3节,做了个Matlab的仿真。

问题描述:the 10-armed bandit problem

这是一个重复做选择的问题。一共有10个选择,重复选择1000次。

每次选择都会有奖励,奖励是符合固定的正态分布的。

所以做不同的选择,获得的奖励不同;每次做的选择,尽管选择相同,但奖励也不同。

你的目的是,连续做了1000次选择后,得到的回报总和越高越好。

强化学习入门: the 10-armed bandit problem,e-greedy 算法_第1张图片

这个图是一个特殊的 10-armed bandit problem。特殊之处在于 q ⋆ ( a ) q_\star (a) q(a)的值。

重要:10-armed bandit problem是一个系列问题的总称,每个特殊的10-armed bandit problem之间的不同之处在于 q ⋆ ( a ) q_\star (a) q(a)的值的不同。选择选项 a a a后,获得奖励是符合正态分布的 N ( q ⋆ ( a ) , 1 ) N(q_\star(a),1) N(q(a),1)

算法1: ϵ − g r e e d y \epsilon-greedy ϵgreedy algorithm

你是不知道 q ⋆ ( a ) q_\star(a) q(a)的具体值的,所以首先要对每个选择的行为值做个估计,因为这个估计值是在不断更新的,所以定义为 Q t ( a ) Q_t( a ) Qt(a),意思是在 t t t时刻,选择行为 a a a后,估计得到的奖励值。

这个算法的大概步骤是:每次选择执行的行为是估计值最大的行为,小概率的情况下,随机选择其他的行为。

算法步骤如下:

  1. 初始化:将 Q ( a ) Q(a) Q(a)全部初始化为 0 0 0;将 N ( a ) N(a) N(a)全部初始化为0; R t o t a l ( t ) = 0 R^{total}(t)=0 Rtotal(t)=0;

  2. for t = 1~1000

    1. A = arg ⁡ max ⁡ a Q t ( a ) A=\arg\max_a Q_t(a) A=argmaxaQt(a) with probability 1 − ϵ 1-\epsilon 1ϵ;

      A = A= A= a random action with probability ϵ \epsilon ϵ

    2. 计算回报 R ( t ) = b a n d i t ( A ) = N ( q ⋆ ( A ) , 1 ) R(t)=bandit(A)=N(q_\star(A),1) R(t)=bandit(A)=N(q(A),1)

    3. 计算总回报 R t o t a l ( t ) + = R ( t ) R^{total}(t)+=R(t) Rtotal(t)+=R(t);

    4. N A + = 1 N_A+=1 NA+=1;

    5. Q ( A ) = Q ( A ) + 1 N ( A ) [ R − Q ( A ) ] Q(A)=Q(A)+\dfrac{1}{N(A)}[R-Q(A)] Q(A)=Q(A)+N(A)1[RQ(A)];

仿真

因为存在不确定性,每次的回报都是服从一个正态分布,所以每次做实验的结果也是不一样的。为了说明问题,我们做2000次仿真实验,每次仿真实验都是,然后取平均值。

对于某一$\epsilon $的仿真步骤如下:

  1. for i = 1:2000
    1. 初始化 q ⋆ ( a ) q_\star(a) q(a) N ( 0 , 1 ) N(0,1) N(0,1)的分布,由此确定了一个10-armed bandit problem;
    2. 对刚刚特殊化的问题,运行三次 ϵ − g r e e e d y \epsilon-greeedy ϵgreeedy算法;
      1. for j = 1~3​
        1. ϵ ( j ) = 0 ; 0.01 ; 0.1 \epsilon(j)=0;0.01;0.1 ϵ(j)=00.010.1
        2. 运行 ϵ − g r e e e d y \epsilon-greeedy ϵgreeedy算法
        3. 得出 R i j t o t a l ( t ) R^{total}_{ij}(t) Rijtotal(t)
  2. for t = 1:1000
    1. for i = 1:2000
      1. i i i求均值 R ˉ j t o t a l ( t ) \bar{R}_j^{total}(t) Rˉjtotal(t);
  3. 作图,在一个图中,画出三个 R ˉ j t o t a l ( t ) \bar{R}_j ^{total}(t) Rˉjtotal(t)与时间的曲线图

你可能感兴趣的:(理论类,强化学习,the,10-armed,bandit,e-greedy)