网站进入,贵金属企业网站源码,SEO案例网站建设,全国网站建设汇编强化学习笔记#xff08;一#xff09;——Q-learning和DQN算法核心公式 文章目录 强化学习笔记#xff08;一#xff09;——Q-learning和DQN算法核心公式前言#xff1a;Q-learning算法DQN算法 前言#xff1a;
强化学习领域#xff0c;繁冗复杂的大段代码里面#…强化学习笔记一——Q-learning和DQN算法核心公式 文章目录 强化学习笔记一——Q-learning和DQN算法核心公式前言Q-learning算法DQN算法 前言
强化学习领域繁冗复杂的大段代码里面核心的数学公式往往只有20~40行剩下的代码都是为了应用这些数学公式而服务的
这可比遥感图像难太多了乱七八糟的数学公式看得头大 鸡煲救我 本文初编辑于2024.10.5
CSDN主页https://blog.csdn.net/rvdgdsva
博客园主页https://www.cnblogs.com/hassle
博客园本文链接 Q-learning算法
需要先看
Deep Reinforcement Learning (DRL) 算法在 PyTorch 中的实现与应用【Q-learning部分】
7个最流行的强化学习算法实战案例附 Python 代码)【Q-learning部分】【不要看这个的DQN部分里面用的是单网络】 q [ c u r r e n t ‾ s t a t e , a c t i o n ] q [ c u r r e n t ‾ s t a t e , a c t i o n ] l e a r n i n g ‾ r a t e × ( r e w a r d g a m m a × m a x ( q [ n e x t ‾ s t a t e ] ) − q [ c u r r e n t ‾ s t a t e , a c t i o n ] ) q[current\underline{~}state, action] \\q[current\underline{~}state, action] learning\underline{~}rate \times (reward gamma\times max(q[next\underline{~}state]) - q[current\underline{~}state, action]) q[current state,action]q[current state,action]learning rate×(rewardgamma×max(q[next state])−q[current state,action])
上述公式为Q-learning算法中的Q值更新公式 Q-learning算法中的Q值更新公式参数解释 Q[CurrentState, Action]: 这是在当前状态CurrentState下采取特定动作Action所对应的Q值。Q值代表了在给定状态下采取该动作的预期累积回报。 LearningRate (α): 学习率是一个介于0和1之间的参数用来控制新信息即当前的经验和估计的未来回报对Q值更新的影响。较高的学习率会使得新经验更快速地影响Q值而较低的学习率则会使得Q值更新更加平滑减小波动。 reward: 这是在执行动作Action后获得的即时奖励。它用于衡量该动作的好坏与环境的反馈直接相关。 gamma (γ): 折扣因子是一个介于0和1之间的参数用于确定未来奖励的重要性。γ越接近1智能体越重视未来的奖励γ越接近0智能体则更关注眼前的即时奖励。 max(Q[NextState]): 这是在下一个状态NextState中所有可能动作的Q值中的最大值。它表示在下一个状态下预计能获得的最大未来回报。 A c t i o n a r g m a x ( Q [ C u r r e n t S t a t e ] ) Action argmax(Q[CurrentState]) Actionargmax(Q[CurrentState])
通过上述公式进行Action的选择 个人理解Q-learning是off-policy算法。reward是现在的行为可见的确定的收益**gamma*max(Q[NextState])**是预计的未来的总收益不包括现在即reward**Q[CurrentState, Action]**是预计的现在的总收益包括现在即reward此点参考【强化学习】 时序差分TD error的通俗理解方程的右侧表示Q值的更新。它使用了目前的Q值加上基于当前获得的奖励和预计的未来奖励的调整。这个调整部分是基于时序差分即 TD-errors学习的原则。
DQN算法
需要先看
Deep Reinforcement Learning (DRL) 算法在 PyTorch 中的实现与应用【DQN部分】【代码中有take_action函数】
【深度强化学习】(1) DQN 模型解析附Pytorch完整代码【代码实现部分】【代码中DQN网络缺少take_action函数结合上文看吧】 q ‾ v a l u e s q ‾ n e t w o r k ( s t a t e ) n e x t ‾ q v a l u e s t a r g e t ‾ n e t w o r k ( n e x t ‾ s t a t e ) q ‾ t a r g e t r e w a r d ( 1 − d o n e ) × g a m m a × n e x t ‾ q v a l u e s . m a x ( ) l o s s M S E L o s s ( q ‾ v a l u e s , q ‾ t a r g e t ) q\underline{~}values q\underline{~}network(state)\\ next\underline{~}qvalues target\underline{~}network(next\underline{~}state)\\q\underline{~}target reward (1 - done) \times gamma \times next\underline{~}qvalues.max()\\loss MSELoss(q\underline{~}values, q\underline{~}target) q valuesq network(state)next qvaluestarget network(next state)q targetreward(1−done)×gamma×next qvalues.max()lossMSELoss(q values,q target)
上述公式为深度 Q 网络DQN算法中的Q值更新公式 q ‾ v a l u e s q ‾ n e t w o r k ( s t a t e ) q\underline{~}values q\underline{~}network(state) q valuesq network(state)
通过上述公式进行Action的选择注意这里用的是q_network而不是target_network 大白话解释
state和action为经验池里面提取的batch不是某一时刻的state和action DQN实例化为q_network,输入state对应输出q_valuesaction也是这个网络给出的 DQN实例化为target_network输入next_state对应输出next_q_values next_q_values实例化为q_targets q_values和q_targets进行q_network的参数更新 深度 Q 网络DQN算法中的Q值更新公式参数解释
target[action]: 这是当前状态下执行特定动作 action 的目标 Q 值。我们希望通过更新这个 Q 值来使其更接近真实的 Q 值。reward: 这是在当前状态下执行 action 所得到的即时奖励。done: 这是一个布尔值表示当前状态是否是终止状态。如果 done 为 1或 True表示已经到达终止状态那么后续不再有奖励如果为 0或 False则表示还有后续状态和奖励。self.gamma: 这是折扣因子通常在 0 到 1 之间用于控制未来奖励对当前决策的影响。较高的折扣因子意味着更关注未来的奖励。next_q_values.max(): 这是在下一个状态中所有可能动作的 Q 值的最大值表示在下一个状态下能获得的最佳期望奖励。 个人理解DQN采用双网络是off-policy算法。一个训练网络仅使用当前数据对一种state采取最优的action需要频繁更新。一个目标网络使用历史数据采取总体最优action不需要频繁更新。相较于Q-learning使用Q函数代替了Q矩阵的作用在状态很多时Q矩阵难以处理Q函数擅长对复杂情况进行建模。