Q-learning强化学习智能体

174 阅读1分钟

Q-learning智能体

  Q-learning算法是一种无模型、在线、非策略的强化学习方法。Q-learning算法是一种基于价值的强化学习算法,它训练一个评价网络去估计回报或未来奖励。对于给定的观测值,智能体选择并输出估计收益最大的动作。

注:Q-learning算法不支持循环网络。

Q-learning智能体可以在具有以下观察和动作空间的环境中进行训练。

图片.png

Q-learning使用如下的评价网络:

图片.png 在训练过程中,智能体使用贪心策略来探索动作空间。在每个控制区间内,agent随机选择一个概率为ϵ\epsilon的动作,否则选择值函数最大的动作,概率为1ϵ1-\epsilon

评价函数逼近器

  为了估计值函数,一个Q-learning智能体维持一个评价函数Q(S,A;ϕ)Q(S,A;\phi ),它是一个带参数ϕ\phi的函数逼近器。评价网络将观察S和行动A作为输入,并返回对长期回报的相应期望。

  对于使用基于表的值函数的评价网络,ϕ\phi中的参数是表中实际的Q(S,A)Q(S,A)值。

  在训练过程中,智能体调整参数值ϕ\phi。训练后,参数保持在它们的调整值和训练值函数逼近器的参数被存储在评价网络Q(S,A)Q(S,A)中。

创建智能体

创建一个Q-learning智能体:

  • 使用rlQValueFunction对象创建评价网络。
  • 使用rlQAgentoptions对象指定代理选项。
  • 使用rlQAgent对象创建代理。

训练算法

Q-learning智能体使用如下的训练算法。要配置训练算法,请使用rlQAgentOptions对象指定选项。

  • 用随机参数值ϕ\phi初始化评价网络Q(S,A;ϕ)Q(S,A;\phi ).
  • 对于每一个训练集:
  1. 从环境中得到初始观测值SS.

  2. 对于迭代的每一步重复以下步骤,直到S是最终状态。

     a. 对于当前观测值S,选择概率为ϵ\epsilon的随机动作A。否则,选择评价值函数最大的动作。

    y=R+γmaxAQ(S,A;ϕ)y=R+\gamma \max _{A} Q\left(S^{\prime}, A ; \phi\right)

    要指定ϵ\epsilon及其衰减率,请使用EpsilonGreedyExploration选项。

     b.确定动作A,观察奖励RR和下一个观测值SS'

     c.如果SS' 是一个最终的状态,将值函数目标设置成R,否则,设置它为

    y=R+γmaxAQ(S,A;ϕ)y=R+\gamma \max _{A} Q\left(S^{\prime}, A ; \phi\right)

    要设置折扣因子γ\gamma,请使用DiscountFactor选项。

     d.计算值函数目标和当前$Q(S,A;\phi )值的差值。

    ΔQ=yQ(S,A;ϕ)\Delta Q=y-Q(S, A ; \phi)

     e.使用学习率α\alpha更新critic,在创建critic时,通过在智能体选项对象的rlCriticoptimizerOptions属性中设置LearnRate选项来指定学习率。

    • 对于基于表的评价网络,更新表中相应的Q(S,A)Q(S,A)值。
Q(S,A)=Q(S,A;ϕ)+αΔQQ(S, A)=Q(S, A ; \phi)+\alpha \cdot \Delta Q
    • 对于所有其他类型的评价网络,计算损失函数相对于参数φφ的梯度ΔφΔφ。然后,根据计算得到的梯度更新参数。在这种情况下,损失函数是ΔQΔQ的平方。
    Δϕ=12ϕ(ΔQ)2ϕ=ϕ+αΔϕ\begin{array}{c}\Delta \phi=\frac{1}{2} \nabla_{\phi}(\Delta Q)^{2} \\ \phi=\phi+\alpha \cdot \Delta \phi\end{array}
     f. 将观测值SS设置成SS'