强化学习之Q-learning

Q-learning算法

Q-learning算法其实就是在Agent与环境的交互过程中建立了一张状态-动作的Q值表,整个训练过程即不断优化这张表的过程。Q-learning算法的优势在于他不顾依赖环境模型。

Q-learning算法描述

在一个有限的马尔科夫过程中有一个智能体Agent;一个状态集S;一个动作集A。Agent在初始状态s下通过动作选择策略选择并执行一个动作a,a ∈ \in A,在Agent与环境交互完成后 s → s ′ s\to{s'} ss,同时会得到一个即时奖励r,之后再更新相应的Q值。更新Q值的方法如下:
Q ( s , a ) = r + γ max ⁡ a ′ Q ( s ′ , a ′ ) \begin{align} Q(s,a)=r+\gamma{\max_{a'}Q(s',a')} \end{align} Q(s,a)=r+γamaxQ(s,a)
Q ( s , a ) = ( 1 − α ) Q ( s , a ) + α [ r + γ max ⁡ a ′ Q ( s ′ , a ′ ) ] \begin{align} Q(s,a)=(1-\alpha)Q(s,a)+{\alpha}[r+{\gamma}\max_{a'}Q(s',a')] \end{align} Q(s,a)=(1α)Q(s,a)+α[r+γamaxQ(s,a)]
这里为什么要 m a x Q ( s ′ , a ′ ) maxQ(s',a') maxQ(s,a)呢,是因为我们也要去评价下一步这个状态好不好就要看在下一步这个状态里我能获得的最大收益是多少,所以需要用Q表里下一状态里所有动作里Q值最大的那个来估计。此公式完全可以写成上一节讲到的TD算法,即:
Q ( s , a ) = Q ( s , a ) + α [ r + γ max ⁡ a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] \begin{align} Q(s,a)=Q(s,a)+{\alpha}[r+{\gamma}\max_{a'}Q(s',a')-Q(s,a)] \end{align} Q(s,a)=Q(s,a)+α[r+γamaxQ(s,a)Q(s,a)]
其中 α \alpha α是学习率, γ ∈ [ 0.1 ] {\gamma}\in[0.1] γ[0.1]是折扣因子. α \alpha α影响未来学到的新值置换原值的比例。当 α \alpha α=0时,表示Agent学不到新知识;当 α \alpha α=1时,表示不存储学到的知识,全部用新的知识置换。折扣因子 γ \gamma γ代表的是Agent的远见,它的大小影响未来的动作的预测回报所占的权重, γ \gamma γ=0表示Agent只看重眼前动作的回报; γ \gamma γ=1时,Agent将会把未来所有动作的回报值跟眼前的回报看的同等重要;即因为有 γ \gamma γ的存在使得越往后的动作对当前的动作的影响越小。

Q-learning算法流程

初始化Q表(也就是一个行为所有动作,列为所有状态的表格。),设置好学习率 α \alpha α、折扣因子 γ \gamma γ
重复执行每一个情节;
给定初始状态s;
  重复执行每一个情节中的每一步;
  根据动作选择策略 ϵ \epsilon ϵ-greedy选择一个动作 a t a_t at执行并获得奖赏 r t r_t rt,使得Agent状态由 s t → s t + 1 s_t{\to}s_{t+1} stst+1
  根据Q值更新公式(2)更新Q( s t , a t s_t,{a_t} st,at);
  判断 s t s_t st是否处于终止状态,若是,结束当前情节;否则 s t ← s t + 1 s_t{\leftarrow}s_{t+1} stst+1(这里的意思是赋值,不是状态跳转)
  判断是否达到提前设置好的最大训练次数,若是,结束当前情节;否则继续训练;

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值