强化学习入门 Q-learning与SARSA
1. Q-Learning是强化学习算法中Value-based中的一种算法,Q即为Q(s,a)就是在某一时刻的s状态下(s∈S),采取动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。
更简单的理解就是我们基于状态s利用ε−greedy法进行贪婪选择出动作a,然后执行动作a,得出下一状态s'以及reward r,有了这些值就可以做Q-table的更新了,更新公式如下:
对应的参考代码部分如下:
# 更新S
def chose_direction(s, q_table):if np.random.uniform() > EPSILON or q_table.iloc[s, :].all() == 0:direction = np.random.choice(ACTIONS)else:direction = ACTIONS[q_table.iloc[s, :].argmax()]return direction# 学习过程
s = 0
is_terminal = False
step_count = 0
while not is_terminal:a = chose_direction(s, q_table)s_, r = update(s, a)q_predict = q_table.loc[s, a]if s_ != "terminal":q_target = r + GAMA*q_table.iloc[s_, :].max()else:q_target = ris_terminal = Trueq_table.loc[s, a] += ALPHA*(q_target-q_predict)a = s_
其中:看到Q-learning算法的行为策略和目标策略不同,因此为异策略(off-policy)。
2. Sarsa的行为策略部分和Q-Learning一模一样,都是采用Q表的方式进行决策,我们会在Q表中挑选values比较大的动作实施在环境中来换取奖赏。但是Sarsa的更新是不一样的。'sarsa'五个字母的含义即s(当前在状态),a(当前行为),r(奖励),s(下一步状态),a(下一步行为),也就是说我们在进行这一步操作时已经想到当前s对应的a,并且想好了下一个s'和a'。
Sarsa的公式如下:
以下是Sarsa更新的主要代码:
s = 0
is_terminal = False
step_count = 0
a = chose_direction(s, q_table)
while not is_terminal:s_, r = update(s, s)q_predict = q_table.loc[s, a]if s != "terminal" and s_ != "terminal":a_ = chose_direction(s_, q_table)q_target = r + GAMA*q_table.loc[s_, a_]else:q_target = ris_terminal = Trueq_table.loc[s,a] += ALPHA*(q_target-q_predict)s = s_a = a_
可以看到行为策略和目标策略使用同一个函数,因此SARSA为同策略(on-policy)。
代码参考:强化学习中,Q-Learning与Sarsa的差别有多大? - 知乎 (zhihu.com)
强化学习入门 Q-learning与SARSA相关推荐
- RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(复杂迷宫)的宝藏位置
RL之Q Learning:利用强化学习之Q Learning实现走迷宫-训练智能体走到迷宫(复杂迷宫)的宝藏位置 目录 输出结果 设计思路 实现代码 测试记录全过程 输出结果 设计思路 实现代码 f ...
- RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(简单迷宫)的宝藏位置
RL之Q Learning:利用强化学习之Q Learning实现走迷宫-训练智能体走到迷宫(简单迷宫)的宝藏位置 目录 输出结果 设计思路 实现代码 测试记录全过程 输出结果 设计思路 实现代码 f ...
- mdp框架_强化学习中q learning和MDP的区别是什么?
MDP通常是指一种用转移概率描述连续不确定概率过程的数学框架,是强化学习中最基础的概念,很多强化学习的算法都是在把问题抽象为一个MDP之后再想办法求解的. 而q-learning是求解强化学习问题的算 ...
- 强化学习之Q学习与SARSA
** Q学习路径规划与SARSA法路径规划 ** Q学习与SARSA学习简介 强化学习的历史可以用两条各自独立但丰富多彩的主线来追溯..一条主线聚焦 于研究最优化控制,以及使用价值函数动态规划等算法来 ...
- 强化学习入门 : 一文入门强化学习 (Sarsa、Q learning、Monte-carlo learning、Deep-Q-Network等)
最近博主在看强化学习的资料,找到这两个觉得特别适合入门,一个是"一文入门深度学习",一个是"莫烦PYTHON". 建议:看资料的时候可以多种资料一起参考,一边调 ...
- Q学习(Q learning) 强化学习
Q学习(Q learning) 强化学习的简单例子 Matlab实现 可视化_Morty 的挖坑记录-CSDN博客 强化学习(MATLAB) - 叮叮当当sunny - 博客园
- 多智能体强化学习入门
参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...
- 第七章 深度强化学习-深度Q网络系列1(Deep Q-Networks,DQN)
获取更多资讯,赶快关注上面的公众号吧! 文章目录 第七章 深度强化学习-深度Q网络 7.1 学习目标 7.2 深度学习和强化学习的区别 7.3 DQN原理 7.4 DQN算法 7.4.1 预处理 7. ...
- 强化学习入门8—深入理解DDPG
文章目录 Deep Deterministic Policy Gradient 简介 网络结构 算法流程 小结 本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG.DD ...
最新文章
- Soldier and Badges
- Android控件ActionBar浅析及适配2.x的方法介绍
- hdu 1055(贪心)
- [svc]visio绘制模具
- [BZOJ 4916]神犇和蒟蒻
- 基于机器学习方法的POI品类推荐算法
- powerquery加载pdf_pdf转换为excel,你不会,同事点点鼠标2分钟就搞定了
- 一文掌握关于Java数据结构所有知识点(欢迎一起完善) 1
- OpenCV3学习(11.6) ORB特征检测器及BRIEF描述符
- iphone分辨率_AppStore今日推荐 iphone放大分辨率减少白噪点的照片处理工具
- cocos-2d iphone入门(二) cocos2d源代码生成查询文档
- JAVA 导出 Excel, JS 导出 Excel
- GJB150A-2009军用装备实验室环境试验标准目录
- c语言双人贪吃蛇-基于图形库实现
- 新版谷歌地图的好处和优点
- 计算机网络知识总结(韩立刚老师视频)
- 带有资源混淆的打补丁过程
- 鼠标悬停显示滚动条,移出不显示
- MongoDB4.0 配置文件
- 局域网共享打印机无反应故障