Q学习 - epsilon贪心更新

时间:2018-02-02 13:06:50

标签: performance neural-network deep-learning reinforcement-learning q-learning

我试图理解DQN中的epsilon - 贪婪方法。我正在学习https://github.com/karpathy/convnetjs/blob/master/build/deepqlearn.js

中提供的代码

以下是epsilon的更新规则,它随着年龄的变化而变化如下:

$ this.epsilon = Math.min(1.0,Math.max(this.epsilon_min,1.0-(this.age - this.learning_steps_burnin)/(this.learning_steps_total - this.learning_steps_burnin)));

这是否意味着epsilon值以min开始(由用户选择)然后随着年龄的增加而逐渐增加,最终变为1?或者,epsilon是从1开始然后衰减到epsilon_min吗?

无论哪种方式,在此过程之后学习几乎停止。那么,我们是否需要仔细选择learning_steps_burnin和learning_steps_total?有关需要选择什么价值的任何想法?

1 个答案:

答案 0 :(得分:2)

由于epsilon表示您的政策中的随机性数量(操作贪婪概率为1-epsilon,随机概率为epsilon),因此您希望从一个相当随机的政策开始慢慢走向确定性政策。因此,您通常从较大的epsilon开始(如代码中的0.9或1.0)并将其衰减为较小的值(如0.1)。最常见和最简单的方法是线性衰减和指数衰减。通常,您可以了解要执行的学习步骤数(代码中的内容称为learning_steps_total)并调整衰减因子(您的learning_steps_burnin),以便在此时间间隔内epsilon从0.9到0.1。

您的代码是线性衰减的示例。 指数衰减的一个例子是

epsilon = 0.9
decay = 0.9999
min_epsilon = 0.1
for i from 1 to n
    epsilon = max(min_epsilon, epsilon*decay)