首页 > 技术文章 > 强化学习基础

nrocky 2021-03-07 19:52 原文

强化学习简介

  1. 强化学习类似试错法,让计算机从错误中学习最后找到规律。例子,Alpha Go
  2. 监督学习对具有标签的数据进行学习,强化学习对没有标签的数据进行学习,
    但在环境的一次次尝试中获取这些标签学习到规律。
  3. 强化学习分类:1)通过价值选则行为:Q Learning,Sarsa,Deep Q Network
    2)直接选行为:Policy Gradients 3)想象环境从中学习:Model based Rl
  4. 强化学习方法:
    Model-Free Rl: Q Learning, Sarsa, Policy Gradients
    Model-Based Rl, Policy-Based Rl:直接分析给出动作Policy Gradients,
    Value-Based Rl: Q Learning, Sarsa
    回合更新:一个游戏回合结束后更新模型,policy gradients。
    单步更新:一个步骤结束后更新模型,Q Learning, Sarsa。
    在线学习:On-Policy,本人亲自参与学习,Sarsa
    离线学习:Off-Policy,通过别人经历学习,Q Learning

Q Learning

Q表:状态(state)和行为(action)
更新:Q(s1,a2)=Q(s1,a2)+lrdiff,diff(差距)=现实-估计=R+rmaxQ(s2)-Q(s1,a2)
epsilon=0.9:greedy参数,90%概率使用Q表选择行为,10%概率随机选择状态,防止初始化值影响

  1. 例子:tabular,maze,cartpole

Sarsa

  1. Sarsa与Q Learning的唯一区别在更新公式diff(差距)=现实-估计=R+r*Q(s2,a2)-Q(s1,a2)
    不是选取最大利益的动作,而是践行上一次动作。
    Q Learning总是选取最近的一条通向成功的道路,Sarsa总是选取一条最安全的通向成功的道路。
  2. Sarsa(Lambda)
    单步更新:每一步都进行更新
    回合更新:走完一个回合进行更新
    如果只有获取到目标值才获得Reward,那么回合更新更有效率。
    那么对于单步更新,使用Lambda参数定义衰变值,距离奖励越近的步骤越加重视。
    Lambda=(0,1),0-1之间的衰减值,0:只关注最后一步,1:没一步同等关注
    Lambda=0:单步更新
    Lambda=1:回合更新

DQN

  1. DQN
    使用神经网络来代替Q表,1)输入状态和动作,输出Q值 2)输入状态,输出各个动作的Q值
    神经网络更新:使用Q现实代表真实Q值,使用当前神经网络输出作为Q估计
    Experience replay:离线学习,每次DQN更新,使用之前的一些经历进行学习
    Fixed Q-targets:Q估计使用最新网络参数的神经网络,Q现实使用很久以前参数的神经网络。

Tkinter

  1. Python GUI
    Tkinter:Python 标准GUI工具包
    wxPython:开源软件
    Jython:可以和Java无缝继承,可以被编译成Java字节码
  2. Tkinter工作流
    tk=Tkinter.Tk()->添加组件->tk.mainloop()
  3. 可以使用Tkinter开发强化学习可视化环境

策略

参考

代码

推荐阅读