无界增加Q值,在Q学习重复同样动作后复发奖励的后果(Unbounded increase in Q-

2019-07-03 11:36发布

我是在一个普通的应用一个简单的Q学习实现的发展过程,但有件事情,一直百思不得其解。

让我们考虑一下Q学习的标准制定

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

让我们假设有这种状态K有两种可能的行动,无论是授予我们的代理商奖励RR'AA'

如果我们按照一个几乎完全贪婪的方法(比方说,我们假定一个0.1小量),我会在第一随机选择的行动之一,例如A 。 接下来的时间,我可能会(90%的时间),再选择A ,这将导致该Q(K,A)持续增长和不断增长的,是真实的情况下,即使偶然我尝试A' ,因为可能它的回报是在相同幅度为A的,我们已经得到了进入的情况下这是几乎不可能从我们第一次的猜测“恢复”,学习的其余时间。

我想这一定不能是这样的,否则代理将基本上不学习 - 它会只是遵循一个简单的食谱:做任何事情都是你做你的第一次。

我缺少的东西吗? 我知道我可以调整阿尔法值(通常,它随时间减少),但丝毫没有改善我们的状况。

Answer 1:

从这个 ,我们知道:

Q学习的收敛持有使用任何勘探的政策,只要求每个国家行为对(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 。 我们开始对电网的随机位置。 当我们到达左上角,我们重新启动了随机位置一次。

下面是运行20万个移动模拟的结果。 最左边的块直观地显示在每个单元格的当前贪婪政策。

  • -->向右移动
  • <--向左移动
  • ^向上移动
  • 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) ,我们能够为中支持20000个步骤达到最佳的策略(如下图所示)。 此外,我们参观了每个单元的次数更均匀虽然不是完美的分布。

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

对于具有多种状态,例如,10×10格一个更大的问题,我觉得这是更好地使用较大的epsilon 。 例如,下面是后80000个上10×10网格移动与模拟的结果epsilon=0.5 。 这是除了右下角几乎最优的。 还有一个想法有关使用模拟退火,以帮助改善Q学习的收敛速度。

 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线)是在这里 。



Answer 2:

Q(K, A)不只是保持无限增长,由于minus Q(S, A)项。 如果你重写更新规则,这是更加明显:

Q(S, A) <-- Q(S, A)(1 - a) + a(R + maxQ(S', A'))

这表明, Q(K, A)朝着其“实际”值缓慢地移动R + maxQ(S', A') Q(K, A)只生长于可接近; 不是无限。 当它停止增长(已接近其实际值), Q(K, A)为其他A S能追上。

无论如何,小量的整点是控制你是否要学习过程更加贪婪(启发式)或探索性的(随机),因此增加,如果在学习过程过于狭窄。

另外请注意,对于QL收敛的正式条件之一是,每对(S, A)被访问的无数次(转述)! 所以,是的,在训练过程结束,你想每对已被访问的次数像样的数目。

祝好运!



Answer 3:

正如在评论中提及了,伽马值小于一个就是担保,该款项将不会漂移到正无穷大(假定回报本身是有界的)。

但它确实可以卡住了一会儿一个不错的选择。 有一些事情是可以做的:

乐观初始化:如果你乐观地开始了所有的Q值,然后每次尝试新的东西,你会得到一个“幻灭”,这样,下一次你会想别的尝试一些。 继续这样跌下去,直到你有每个动作的价值的现实意义。

与优势功能的工作:在每一个动作是好的,但有些人比别人更好的情况下,它是利用优势功能(也就是这个动作如何更好地对这种状态的预期回报)来更新您的参数是个好主意。 这是政策的梯度特别有用。



文章来源: Unbounded increase in Q-Value, consequence of recurrent reward after repeating the same action in Q-Learning