SKG*_*SKG 3 performance reinforcement-learning neural-network q-learning deep-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(由用户选择)开始,然后随着年龄增加达到burnin 步骤并最终变为1?或者 epsilon 是否从 1 左右开始然后衰减到 epsilon_min ?
无论哪种方式,在这个过程之后学习几乎停止。那么,我们是否需要足够仔细地选择 learning_steps_burnin 和 learning_steps_total 呢?关于需要选择什么值的任何想法?
由于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)
Run Code Online (Sandbox Code Playgroud)