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