Q值的无限增加,是在Q-Learning中重复相同操作后重复奖励的结果

时间:2012-10-30 23:11:33

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

我正在开发一个简单的Q-Learning实现而不是一个简单的应用程序,但有些东西让我感到困惑。

让我们考虑Q-Learning的标准配方

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

我们假设这种状态K有两种可能的行动,包括RR'授予我们的座席奖励AA'

如果我们遵循几乎完全贪婪的方法(假设我们假设0.1 epsilon),我首先会随机选择其中一个动作,例如A。下一次,我可能(90%的时间)再次选择A,这将导致Q(K,A)不断增长和成长,即使我偶然尝试{ {1}},可能它的奖励与A的奖励相同,我们将进入这样一种情况:在剩下的学习过程中,几乎不可能从我们的第一次猜测中“恢复”。

我想这绝对不是这样,否则代理人基本上不会学习 - 只需遵循一个简单的方法:像第一次那样做一切。

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

3 个答案:

答案 0 :(得分:7)

来自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 policy epsilon=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后的模拟结果。除了右下角之外,它几乎是最佳的。关于使用模拟退火来帮助提高Q学习的收敛速度也有idea

 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 
BTW,我的玩具问题的Python代码(~100行)是here

答案 1 :(得分:5)

由于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)的{​​{1}}可以赶上。

无论如何,epsilon的重点是控制你是否希望学习过程更贪婪(启发式)或探索式(随机),所以如果学习过程太窄,就要增加它。

另请注意,QL收敛的正式条件之一是每对A被无限次访问(释义)!所以,是的,在培训过程结束时,您希望每一对都被访问了相当多的时间。

祝你好运!

答案 2 :(得分:0)

正如其中一条评论中所提到的,伽玛值小于1是保证总和不会漂移到正无穷大(假设奖励本身有界)。

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

乐观的初始化:如果你乐观地开始所有的Q值,那么每次你尝试新的东西,你都会得到一个“幻灭”,以便下次你想尝试别的东西。这种情况一直存在,直到你对每个动作的价值有了真实的认识。

使用优势函数:如果每个操作都很好但有些操作比其他操作更好,那么使用优势函数是个好主意(这个操作对这个操作有多好)此状态的预期奖励)更新您的参数。这对政策梯度特别有用。