【RL系列】SARSA算法的基本结构
SARSA算法严格上来说,是TD(0)关于状态动作函数估计的on-policy形式,所以其基本架构与TD的$v_{\pi}$估计算法(on-policy)并无太大区别,所以这里就不再单独阐述之。本文主要通过两个简单例子来实际应用SARSA算法,并在过程中熟练并总结SARSA算法的流程与基本结构。
强化学习中的统计方法(包括Monte Carlo,TD)在实现episode task时,无不例外存在着两层最基本的循环结构。如果我们将每一个episode task看作是一局游戏,那么这个游戏有开始也有结束,统计方法是就是一局接着一局不停的在玩,然后从中总结出最优策略。Monte Carlo与TD的区别在于,Monte Carlo是玩完一局,总结一次,而TD算法是边玩边总结。所以这两层基本结构的外层是以游戏次数为循环,内层则是以游戏过程为循环。

SARSA作为TD算法下的on-policy control算法,只需边进行游戏边更新动作值函数和Policy即可,所以SARSA算法的内层可以由TD算法细化为如下结构:

NumOfGames = 500
while(index < NumOfGames)
[Q, Policy] = PlayGame(Q, Policy);
end function [Q, Policy] = PlayGame(Q, Policy)
while(1)
% Begin Game
while(1)
Action = ChooseAction(Policy(State));
NextState = State + Action + windy(State);
try
Grid(NextState) % Check for exception
catch
break;
end
NextAction = ChooseAction(Policy(NextState));
Q(State, Action) = Q(State, Action) + alpha*(R + gamma*Q(NextState, NextAction)...
- Q(State, Action));
Policy = UpdatePolicy(Policy);
State = NextState;
if(State == Target)
return;
end
end
end
【RL系列】SARSA算法的基本结构的更多相关文章
- 【RL系列】马尔可夫决策过程——状态价值评价与动作价值评价
请先阅读上两篇文章: [RL系列]马尔可夫决策过程中状态价值函数的一般形式 [RL系列]马尔可夫决策过程与动态编程 状态价值函数,顾名思义,就是用于状态价值评价(SVE)的.典型的问题有“格子世界(G ...
- 【RL系列】从蒙特卡罗方法步入真正的强化学习
蒙特卡罗方法给我的感觉是和Reinforcement Learning: An Introduction的第二章中Bandit问题的解法比较相似,两者皆是通过大量的实验然后估计每个状态动作的平均收益. ...
- 【RL系列】Multi-Armed Bandit笔记——UCB策略与Gradient策略
本篇主要是为了记录UCB策略与Gradient策略在解决Multi-Armed Bandit问题时的实现方法,涉及理论部分较少,所以请先阅读Reinforcement Learning: An Int ...
- 【RL系列】Multi-Armed Bandit笔记补充(一)
在此之前,请先阅读上一篇文章:[RL系列]Multi-Armed Bandit笔记 本篇的主题就如标题所示,只是上一篇文章的补充,主要关注两道来自于Reinforcement Learning: An ...
- openssl之EVP系列之7---信息摘要算法结构概述
openssl之EVP系列之7---信息摘要算法结构概述 ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成 (作者:Dragon ...
- CRL快速开发框架系列教程十(导出对象结构)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 【RL系列】马尔可夫决策过程中状态价值函数的一般形式
请先阅读上一篇文章:[RL系列]马尔可夫决策过程与动态编程 在上一篇文章里,主要讨论了马尔可夫决策过程模型的来源和基本思想,并以MAB问题为例简单的介绍了动态编程的基本方法.虽然上一篇文章中的马尔可夫 ...
- 【RL系列】On-Policy与Off-Policy
强化学习大致上可分为两类,一类是Markov Decision Learning,另一类是与之相对的Model Free Learning 分为这两类是站在问题描述的角度上考虑的.同样在解决方案上存在 ...
- 增强学习--Sarsa算法
Sarsa算法 实例代码 import numpy as np import random from collections import defaultdict from environment i ...
随机推荐
- 用js计算自己从出生到现在生活了多长时间(x天零x小时零x分钟零x秒) 初学者,大家多多包涵,有不足的地方请多包涵。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 执行 sql 报错未缓冲查询,错误码 2014
sql语句为 SELECT COUNT(id) AS tp_count FROM `tableName` WHERE `status` = 0 AND `source` = 1 AND ( `end_ ...
- js数组定义和方法 (包含ES5新增数组方法)
数组Array 1. 数组定义 一系列数据的集合成为数组.数组的元素可以为任何类型的数据(包括数组,函数等),每个元素之间用逗号隔开,数组格式:[1,2,3]. 2. 数组创建方式 (1) 字面量方法 ...
- python 文件读取方法详解
话不多说直接码 # 绝对路径 # f = open('/Users/fangxiang/Downloads/我的古诗.text', mode='r', encoding='utf-8') # cont ...
- vue相关理论知识
es6常用语法简介 es是js的规范标准 let 特点: 1.有全局和函数作用域,以及块级作用域(用{}表示块级作用域范围) 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.有块级 ...
- jinjia2的使用
模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强.并且更加容易理解和维护. 模板简单来说就是一个其中 ...
- LFS搭建第一天补充
1.选择lfs的iso 2.启动虚拟机,进入以下界面直接按回车键 3. 选择下面的时间 4.直接默认本地时间 5.语言格式选择UTF-8 6.默认 7.直接回车,进入系统 8.对hda盘进行分区,我分 ...
- 20155207 2016-2017-2《Java程序设计》课程总结
20155207 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总: 预备作业一:一路风景---我期待的是师生关系 预备作业二:学习情况的相关调查 预备作业三:安装虚拟 ...
- 20155330 2016-2017-2 《Java程序设计》第三周学习总结
20155330 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 学习目标 区分基本类型与类类型 理解对象的生成与引用的关系 掌握String类和数组 理解封 ...
- 服务端调用接口API利器之HttpClient
前言 之前有介绍过HttpClient作为爬虫的简单使用,那么今天在简单的介绍一下它的另一个用途:在服务端调用接口API进行交互.之所以整理这个呢,是因为前几天在测试云之家待办消息接口的时候,有使用云 ...