【问题标题】:Q learning - epsilon greedy updateQ学习——epsilon贪婪更新
【发布时间】:2018-07-12 23:55:27
【问题描述】:

我正在尝试了解 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 呢?关于需要选择什么值的任何想法?

【问题讨论】:

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


    【解决方案1】:

    由于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)
    

    【讨论】:

    • 在相同的时间步长上执行线性或指数衰减有什么不同吗?
    • @AleB 没有经验法则,这真的取决于算法和环境。都是超参数优化。
    • 我认为这是幂律衰减,实际上,不是指数衰减。
    猜你喜欢
    • 2019-06-15
    • 2021-03-08
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多