• 强化学习学习笔记:Q-learning无模型算法


    强化学习按理解环境的程度可以划分为无模型和有模型,Q-Learning算法是典型的无模型强化学习算法,与有模型的强化学习算法的区别是它的后继状态([S'])未知,只能通过与环境交互以试验和采样的方法得到一个后继状态([S'])。所以Q-Learning算法仅由元组([left( {S,A,R,gamma } ight)])来描述。
    强化学习是智能体从状态到动作的映射,通常使用Q表来表示状态-动作值函数,智能体通过不断与环境进行交互,以此来更新Q表,并通过Q表来进行目标和行为决策。Q-Learning算法的目标函数是最大化Q值函数,智能 体每次与环境交互,都会根据当前的状态选择动作,即在状态([{S_t}])做出动作a,并抵达状态([{S_{t + 1}}]),将动作a,获得的奖励R与折扣后续最大奖励([{R_t} + gamma max Qleft( {{s_{t + 1}},a} ight)])的和称为:

    ([{Q_{real}} = {R_t} + gamma max Qleft( {{s_{t + 1}},a} ight)])

    而之前学习的得到的([Qleft( {{s_t},{a_t}} ight)])称为Q的估计值。

    Q-Learning算法是时序差分的强化学习方法,其中有一个很重要的概念就是TD error,表示的是在该时刻估计的误差。Q-Learning算法通过Q现实与Q估计之间的时序差分误差(temporal difference error, TD error)来更新Q表,以此来逼近目标函数。该算法的目标策略为贪婪策略即,
    ([Qleft( {{s_t},{a_t}} ight) = Qleft( {{s_t},{a_t}} ight) + alpha left[ {{R_t} + gamma max Qleft( {{s_{t + 1}},a} ight) - Qleft( {{s_t},{a_t}} ight)} ight]])

    行为策略为([varepsilon - greedy]),即
    ( [{a_t} = left{ {egin{array}{*{20}{c}} {random,egin{array}{*{20}{c}} {} & {Pleft( varepsilon ight)} \ end{array}} \ {arg max Qleft( {{s_t},{a_t}} ight),egin{array}{*{20}{c}} {} & {Pleft( {1 - varepsilon } ight)} \ end{array}} \ end{array}} ight.] )
    式中,e为策略参数,智能体以e的概率在动作空间中随机选择行为,以1-e的概率在动作空间中选择会得到最大Q值的贪婪动作。

    由此可以看出看出目标策略与行为策略不同,因此Q-Learning算法算法的策略为异策略'其优势在于寻求最优的同时保证充分的探索性。
    Q-Learning算法相关参数选取原则如下:
    S:选取的状态空间一定要包含智能体学习过程中的所有状态;
    A:动作空间的选择一定要考虑智能体所有可能做出的所有动作;
    R:奖励函数的设计一定要与所要优化的目标相关;
    ([alpha ]):学习率是R表更新的速率'一般取值为0.01左右;
    ([gamma ])折扣率是未来经验对当前状态执行动作的重要程度,一般取值;
    e:表示动作选择的随机性'在学习初期设置为1,保证探索性,在学习过程中不断衰减,最终衰减到0。

  • 相关阅读:
    zookeeper 是如何保证事务的顺序一致性的?
    Hibernate的一级缓存和二级缓存有什么区别?
    写出Hibernate中核心接口/类的名称,并描述他们各自的责任?
    请说说你对Struts2的拦截器的理解?
    什么是MVC模式?   
    JDBC中的Statement 和PreparedStatement的区别?
    说说数据库连接池工作原理和实现方案?
    如何删除表中的重复数据,只保留一条记录?
    Where和having都是条件筛选关键字,它们有什么分别?
    JSP和Servlet有哪些相同点和不同点?
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/13567770.html
Copyright © 2020-2023  润新知