Q-learning智能体
Q-learning算法是一种无模型、在线、非策略的强化学习方法。Q-learning算法是一种基于价值的强化学习算法,它训练一个评价网络去估计回报或未来奖励。对于给定的观测值,智能体选择并输出估计收益最大的动作。
注:Q-learning算法不支持循环网络。
Q-learning智能体可以在具有以下观察和动作空间的环境中进行训练。
Q-learning使用如下的评价网络:
在训练过程中,智能体使用贪心策略探索来探索动作空间。在每个控制区间内,agent随机选择一个概率为
ϵ
\epsilon
ϵ的动作,否则选择值函数最大的动作,概率为
1
−
ϵ
1-\epsilon
1−ϵ。
评价函数逼近器
为了估计值函数,一个Q-learning智能体维持一个评价函数
Q
(
S
,
A
;
ϕ
)
Q(S,A;\phi )
Q(S,A;ϕ),它是一个带参数
ϕ
\phi
ϕ的函数逼近器。评价网络将观察S和行动A作为输入,并返回对长期回报的相应期望。
对于使用基于表的值函数的评价网络,
ϕ
\phi
ϕ中的参数是表中实际的
Q
(
S
,
A
)
Q(S,A)
Q(S,A)值。
在训练过程中,智能体调整参数值
ϕ
\phi
ϕ。训练后,参数保持在它们的调整值和训练值函数逼近器的参数被存储在评价网络
Q
(
S
,
A
)
Q(S,A)
Q(S,A)中。
创建智能体
创建一个Q-learning智能体:
- 使用
rlQValueFunction
对象创建评价网络。 - 使用
rlQAgentoptions
对象指定代理选项。 - 使用
rlQAgent
对象创建代理。
训练算法
Q-learning智能体使用如下的训练算法。要配置训练算法,请使用rlQAgentOptions
对象指定选项。
-
用随机参数值 ϕ \phi ϕ初始化评价网络 Q ( S , A ; ϕ ) Q(S,A;\phi ) Q(S,A;ϕ).
-
对于每一个训练集:
1.从环境中得到初始观测值 S S S.
2. 对于迭代的每一步重复以下步骤,直到S是最终状态。
a. 对于当前观测值S,选择概率为 ϵ \epsilon ϵ的随机动作A。否则,选择评价值函数最大的动作。 y = R + γ max A Q ( S ′ , A ; ϕ ) y=R+\gamma \max _{A} Q\left(S^{\prime}, A ; \phi\right) y=R+γAmaxQ(S′,A;ϕ)要指定 ϵ \epsilon ϵ及其衰减率,请使用EpsilonGreedyExploration
选项。
b.确定动作A,观察奖励 R R R和下一个观测值 S ′ S' S′。
c.如果 S ′ S' S′ 是一个最终的状态,将值函数目标设置成R,否则,设置它为 y = R + γ max A Q ( S ′ , A ; ϕ ) y=R+\gamma \max _{A} Q\left(S^{\prime}, A ; \phi\right) y=R+γAmaxQ(S′,A;ϕ)要设置折扣因子 γ \gamma γ,请使用DiscountFactor
选项。
d.计算值函数目标和当前$Q(S,A;\phi )值的差值。
Δ Q = y − Q ( S , A ; ϕ ) \Delta Q=y-Q(S, A ; \phi) ΔQ=y−Q(S,A;ϕ)
e.使用学习率 α \alpha α更新critic,在创建critic时,通过在智能体选项对象的rlCriticoptimizerOptions
属性中设置LearnRate
选项来指定学习率。- 对于基于表的评价网络,更新表中相应的
Q
(
S
,
A
)
Q(S,A)
Q(S,A)值。
Q ( S , A ) = Q ( S , A ; ϕ ) + α ⋅ Δ Q Q(S, A)=Q(S, A ; \phi)+\alpha \cdot \Delta Q Q(S,A)=Q(S,A;ϕ)+α⋅ΔQ - 对于所有其他类型的评价网络,计算损失函数相对于参数 φ φ φ的梯度 Δ φ Δφ Δφ。然后,根据计算得到的梯度更新参数。在这种情况下,损失函数是 Δ Q ΔQ ΔQ的平方。 Δ ϕ = 1 2 ∇ ϕ ( Δ Q ) 2 ϕ = ϕ + α ⋅ Δ ϕ \begin{array}{c}\Delta \phi=\frac{1}{2} \nabla_{\phi}(\Delta Q)^{2} \\ \phi=\phi+\alpha \cdot \Delta \phi\end{array} Δϕ=21∇ϕ(ΔQ)2ϕ=ϕ+α⋅Δϕ
f. 将观测值 S S S设置成 S ′ S' S′。
- 对于基于表的评价网络,更新表中相应的
Q
(
S
,
A
)
Q(S,A)
Q(S,A)值。