【问题标题】:Unbounded increase in Q-Value, consequence of recurrent reward after repeating the same action in Q-LearningQ-Value 的无限增加,在 Q-Learning 中重复相同动作后重复奖励的结果
【发布时间】:2012-10-20 09:06:11
【问题描述】:

我正在通过一个简单的应用程序开发一个简单的 Q-Learning 实现,但有些事情一直让我感到困惑。

让我们考虑一下 Q-Learning 的标准公式

Q(S, A) = Q(S, A) + alpha * [R +  MaxQ(S', A') - Q(S, A)]

让我们假设这个状态K 有两个可能的动作,通过AA' 给我们的代理奖励RR'

如果我们遵循几乎完全贪婪的方法(假设我们假设 0.1 epsilon),我将首先随机选择其中一个操作,例如 A。下一次,我可能(90% 的时间)会再次选择A,这将导致 Q(K, A) 不断增长,即使我偶然尝试A' 也是如此。 ,因为它的奖励可能与 A 的量级相同,所以在接下来的学习过程中,我们将陷入几乎不可能从第一次猜测中“恢复”的情况。

我想肯定不是这样,否则代理基本上不会学习——它只是遵循一个简单的方法:像第一次那样做所有事情。

我错过了什么吗?我知道我可以调整 alpha 值(通常,随着时间的推移降低它),但这绝不会改善我们的情况。

【问题讨论】:

    标签: machine-learning artificial-intelligence reinforcement-learning q-learning


    【解决方案1】:

    this,我们知道:

    Q-learning 的收敛使用任何探索策略都成立,并且只需要每个状态动作对 (s,a)无限频繁地执行

    epsilon-greedy policy 是探索和利用之间的平衡,既保证了收敛性,又保证了良好的性能。但在实际问题中,我们往往需要一些启发式来改变学习速度alpha,以代表更好的回报。否则,很难满足infinite often 的要求。

    我在下面列出一个例子。这是一个经典问题,其中您有一个网格,并且每个单元格中可能有不同的奖励金额。例如,下面显示了一个 4x4 网格,其中每个单元格都包含 1 的奖励,除了左上角的单元格(您有更大的奖励,数量为 10)。一个机器人在网格中移动。法律行动是移动LEFTRIGHTUPDOWN,但机器人无法移出网格。

    所以我们的状态空间包含 16 个不同的状态,对应于 16 个单元格。由于边界限制,每个州都有不同数量的法律行动。我们的目标是计算最优策略(给定任意状态s,输出最优动作a)。

    +++++++++++++++++++++
    + 10 +  1 +  1 + 1  +
    +++++++++++++++++++++
    + 1  +  1 +  1 + 1  +
    +++++++++++++++++++++
    + 1  +  1 +  1 + 1  +
    +++++++++++++++++++++
    + 1  +  1 +  1 + 1  +
    +++++++++++++++++++++
    

    假设我们使用epsilon-greedy policyepsilon=0.1,一个恒定的学习率alpha=0.1。我们从网格上的随机位置开始。每当我们到达左上角时,我们就会再次从一个随机位置重新开始。

    以下是运行 200,000 次移动的模拟结果。最左边的块直观地显示了每个单元格的当前贪婪策略。

    • -->向右移动
    • <--向左移动
    • ^向上移动
    • v向下移动

    因此,您会发现这远非最佳策略。显然,在最优策略中,每个单元格都应该指向左或上,因为我们在位置 (0,0) 处有更大的奖励。

     v   v   v   v   |      2      9      5      4   
     v   v   v   v   |     14     98     75     14   
    -->  v   v  <--  |    258   3430   3312    245  
    --> --> <-- <--  |   3270  93143  92978   3191  
    

    右侧的块显示到目前为止我们访问每个单元格的次数。您会看到我们大部分的访问都在底部,但我们很少访问顶行。这就是为什么我们还没有达到最优策略的原因。

    如果我们将学习率更改为alpha=1/(number of times you visited (s,a) so far),我们能够在 20,000 步内达到最优策略(如下所示)。此外,我们访问每个单元格的次数虽然不完美,但分布更均匀。

     --> <-- <-- <--  |     34   7997   7697    294 
      ^   ^   ^  <--  |    731    898    524    132 
      ^   ^   ^   ^   |    709    176     88     94 
      ^   ^   ^   ^   |    245    256     96     77  
    

    对于具有更多状态的更大问题,例如 10x10 网格,我发现使用更大的epsilon 会更好。例如,下面是使用epsilon=0.5 在 10x10 网格上移动 80,000 次后的模拟结果。除了右下角之外,它几乎是最佳的。还有idea关于使用模拟退火来帮助提高Q-learning的收敛速度。

     v  <-- <-- <-- <-- <-- <-- <-- <-- <--  |     19   2500   1464    716    386    274    216    159    121     71 
     ^  <-- <-- <-- <--  v  <-- <-- <-- <--  |   9617  11914   3665   1071    580    410    319    225    207    131 
     ^   ^   ^  <-- <-- <-- <--  v  <-- <--  |   5355   5716   2662   1675   1465    611    302    183    162    101 
     ^   ^   ^   ^   ^  <-- <-- <-- <-- <--  |   1604   1887   1192    621   1056    882    693    403    206    100 
     ^   ^   ^   ^   ^   ^   ^  <-- <-- <--  |    639    735    731    333    412    399    480    294    172    114 
     ^   ^   ^  <--  ^   ^   ^  <-- <--  ^   |    373    496    640    454    272    266    415    219    107     98 
     ^   ^   ^   ^   ^   ^   ^   ^  <--  ^   |    251    311    402    428    214    161    343    176    114     99 
     ^   ^   ^   ^  <-- -->  ^  <-- <-- <--  |    186    185    271    420    365    209    359    200    113     70 
     ^   ^   ^   ^   ^   ^   ^   ^   v   v   |    129    204    324    426    434    282    235    131     99     74 
     ^   ^   ^   ^   ^  <--  ^  <-- <-- <--  |    100    356   1020   1233    703    396    301    216    152     78 
    

    顺便说一句,我用于玩具问题的 Python 代码(约 100 行)是here

    【讨论】:

      【解决方案2】:

      Q(K, A) 不仅仅因为minus Q(S, A) 术语而无限增长。如果将更新规则重写为:

      Q(S, A) &lt;-- Q(S, A)(1 - a) + a(R + maxQ(S', A'))

      这表明Q(K, A) 缓慢地向其“实际”值R + maxQ(S', A') 移动。 Q(K, A) 只会越来越接近那个;不是无限的。当它停止增长(已接近其实际值)时,其他As 的Q(K, A) 可以赶上。

      无论如何,epsilon 的全部意义在于控制您希望学习过程更贪婪(启发式)还是探索性(随机),所以如果学习过程太窄,则增加它。

      还要注意,QL 收敛的一个正式条件是每一对(S, A) 被访问了无数次(意译)!所以是的,在训练过程结束时,您希望每一对都被访问了相当多的次数。

      祝你好运!

      【讨论】:

      • 显然,即使是负 Q(S, A) 项也不会限制动作值无限增长。假设如下场景:T(s,a,s) = 1 R(s,a,s) = 1 max(Q(s,a)) = Q(s,a) 这种情况下,动作值会继续向正无穷大漂移。它不会增长到无穷大的真正原因(在没有有限范围的 MDP 中)是因为 gamma 的值(始终小于 1),它对后续动作值的重要性越来越低,这限制了向无限漂移。
      【解决方案3】:

      正如其中一个 cmets 所述,伽马值小于 1 可以保证总和不会漂移到正无穷大(假设奖励本身是有界的)。

      但它确实可能会在一段时间内陷入错误的选择。有一些事情可以做:

      乐观初始化:如果你一开始所有的 Q 值都是乐观的,那么每次你尝试新事物时,你都会得到“幻灭”,这样下次你就会想尝试别的东西.这种情况会一直持续下去,直到您对每个行动的价值有了现实的认识。

      使用优势函数:在每个动作都很好但有些比其他动作更好的情况下,使用优势函数是一个好主意(即这个动作对此状态的预期奖励)以更新您的参数。这对于策略梯度特别有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-17
        • 2018-11-07
        • 1970-01-01
        • 2020-05-16
        相关资源
        最近更新 更多