强化学习基础
强化学习简介
- 强化学习类似试错法,让计算机从错误中学习最后找到规律。例子,Alpha Go
- 监督学习对具有标签的数据进行学习,强化学习对没有标签的数据进行学习,
但在环境的一次次尝试中获取这些标签学习到规律。 - 强化学习分类:1)通过价值选则行为:Q Learning,Sarsa,Deep Q Network
2)直接选行为:Policy Gradients 3)想象环境从中学习:Model based Rl - 强化学习方法:
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%概率随机选择状态,防止初始化值影响
- 例子:tabular,maze,cartpole
Sarsa
- Sarsa与Q Learning的唯一区别在更新公式diff(差距)=现实-估计=R+r*Q(s2,a2)-Q(s1,a2)
不是选取最大利益的动作,而是践行上一次动作。
Q Learning总是选取最近的一条通向成功的道路,Sarsa总是选取一条最安全的通向成功的道路。 - Sarsa(Lambda)
单步更新:每一步都进行更新
回合更新:走完一个回合进行更新
如果只有获取到目标值才获得Reward,那么回合更新更有效率。
那么对于单步更新,使用Lambda参数定义衰变值,距离奖励越近的步骤越加重视。
Lambda=(0,1),0-1之间的衰减值,0:只关注最后一步,1:没一步同等关注
Lambda=0:单步更新
Lambda=1:回合更新
DQN
- DQN
使用神经网络来代替Q表,1)输入状态和动作,输出Q值 2)输入状态,输出各个动作的Q值
神经网络更新:使用Q现实代表真实Q值,使用当前神经网络输出作为Q估计
Experience replay:离线学习,每次DQN更新,使用之前的一些经历进行学习
Fixed Q-targets:Q估计使用最新网络参数的神经网络,Q现实使用很久以前参数的神经网络。
Tkinter
- Python GUI
Tkinter:Python 标准GUI工具包
wxPython:开源软件
Jython:可以和Java无缝继承,可以被编译成Java字节码 - Tkinter工作流
tk=Tkinter.Tk()->添加组件->tk.mainloop() - 可以使用Tkinter开发强化学习可视化环境