增强学习--蒙特卡洛方法
蒙特卡洛方法
实例代码
下面代码是constant-α monte carlo,这里有一点介绍
1 import numpy as np 2 import random 3 from collections import defaultdict 4 from environment import Env 5 6 7 # Monte Carlo Agent which learns every episodes from the sample 8 class MCAgent: 9 def __init__(self, actions): 10 self.width = 5 11 self.height = 5 12 self.actions = actions 13 self.learning_rate = 0.01 14 self.discount_factor = 0.9 15 self.epsilon = 0.1 16 self.samples = [] 17 self.value_table = defaultdict(float)#初始化值函数表,0 18 19 # append sample to memory(state, reward, done) 20 def save_sample(self, state, reward, done): 21 self.samples.append([state, reward, done]) 22 23 # for every episode, agent updates q function of visited states 24 def update(self): 25 G_t = 0 26 visit_state = [] 27 for reward in reversed(self.samples):#此处reverse,状态反转 28 state = str(reward[0]) 29 if state not in visit_state:#first-visit MC methods 30 visit_state.append(state) 31 G_t = self.discount_factor * (reward[1] + G_t)#累积回报 32 value = self.value_table[state] 33 self.value_table[state] = (value + 34 self.learning_rate * (G_t - value)) 35 #constant-α monte carlo constant-α蒙特卡洛值函数更新 36 37 # get action for the state according to the q function table 38 # agent pick action of epsilon-greedy policy 39 def get_action(self, state): 40 if np.random.rand() < self.epsilon:#以epsilon概率随机选择,Exploration 41 # take random action 42 action = np.random.choice(self.actions) 43 else: 44 # take action according to the q function table 45 next_state = self.possible_next_state(state) 46 action = self.arg_max(next_state) 47 return int(action) 48 49 # compute arg_max if multiple candidates exit, pick one randomly 50 @staticmethod 51 def arg_max(next_state): 52 max_index_list = [] 53 max_value = next_state[0] 54 for index, value in enumerate(next_state): 55 if value > max_value: 56 max_index_list.clear() 57 max_value = value 58 max_index_list.append(index) 59 elif value == max_value: 60 max_index_list.append(index) 61 return random.choice(max_index_list) 62 63 # get the possible next states 64 def possible_next_state(self, state): 65 col, row = state 66 next_state = [0.0] * 4 #四个方向,Q(s,a) 67 68 if row != 0: 69 next_state[0] = self.value_table[str([col, row - 1])] 70 else: 71 next_state[0] = self.value_table[str(state)] 72 73 if row != self.height - 1: 74 next_state[1] = self.value_table[str([col, row + 1])] 75 else: 76 next_state[1] = self.value_table[str(state)] 77 78 if col != 0: 79 next_state[2] = self.value_table[str([col - 1, row])] 80 else: 81 next_state[2] = self.value_table[str(state)] 82 83 if col != self.width - 1: 84 next_state[3] = self.value_table[str([col + 1, row])] 85 else: 86 next_state[3] = self.value_table[str(state)] 87 88 return next_state 89 90 91 # main loop 92 if __name__ == "__main__": 93 env = Env() 94 agent = MCAgent(actions=list(range(env.n_actions))) 95 96 for episode in range(1000):#episode task 97 import pdb; pdb.set_trace() 98 state = env.reset() 99 action = agent.get_action(state) 100 101 while True: 102 env.render() 103 104 # forward to next state. reward is number and done is boolean 105 next_state, reward, done = env.step(action) 106 agent.save_sample(next_state, reward, done) 107 108 # get next action 109 action = agent.get_action(next_state) 110 111 # at the end of each episode, update the q function table 112 if done: 113 print("episode : ", episode) 114 agent.update() 115 agent.samples.clear() 116 break
转载于:https://www.cnblogs.com/buyizhiyou/p/10250103.html
增强学习--蒙特卡洛方法相关推荐
- 强化学习——蒙特卡洛方法
学习目标 理解Prediction和Control的差别: 理解什么是first-visit和every-visit: 理解什么是on-policy和off-policy: 理解蒙特卡洛方法的Pred ...
- IBM苏中:怎样利用深度学习、增强学习等方法提高信息处理效率
伴随着认知计算时代的到来,如何将我们计算机的信息处理能力与人类的认知能力相结合,从而提高我们的信息处理效率,是我们在目前所要思考的问题.本期清华大数据"技术·前沿"系列讲座我们邀请 ...
- 增强学习系列之(一):增强学习介绍
1. 什么是增强学习 增强学习是机器学习的一种.我们都知道,机器学习主要分监督学习.非监督学习.半监督学习.增强学习 从这个分类中我们就能看到,增强学习和我们平常主要接触的监督和非监督学习不太一样.监 ...
- 干货 | 算法工程师入门第二期——穆黎森讲增强学习(一) 本文作者:大牛讲堂 编辑:刘芳平 2017-07-19 11:38 导语:地平线大牛讲堂算法工程师入门第二期来啦!本期地平线资深算法工程师、增
干货 | 算法工程师入门第二期--穆黎森讲增强学习(一) 本文作者:大牛讲堂 编辑:刘芳平 2017-07-19 11:38 导语:地平线大牛讲堂算法工程师入门第二期来啦!本期地平线资深算法工程师.增 ...
- 干货 | 算法工程师入门第二期——穆黎森讲增强学习(一)
今天我很荣幸有机会在这里,跟大家分享增强学习(Reinforcement Learning,RL)这个话题.这次分享,我希望能达到三方面的目的: 第一,希望没有相关背景的同学能够对RL有一定的了解,所 ...
- (zhuan) 大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习
大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习 2017-07-13 HorizonRobotics ?小广告:去CVPR 2017的小伙伴,点我有惊喜! 编者按:地平线大牛讲堂算法工程师入门第 ...
- 增强学习Reinforcement Learning经典算法梳理2:蒙特卡洛方法
1 前言 在上一篇文章中,我们介绍了基于Bellman方程而得到的Policy Iteration和Value Iteration两种基本的算法,但是这两种算法实际上很难直接应用,原因在于依然是偏于理 ...
- 人工智障学习笔记——强化学习(3)蒙特卡洛方法
上一章我们了解了马尔可夫决策过程的动态规划方法,但是动态要求一个完全已知的环境模型,这在现实中是很难做到的.另外,当状态数量较大的时候,动态规划法的效率也将是一个问题.所以本章我们引用一种不需要完整的 ...
- 深度增强学习(DRL)漫谈 - 信赖域(Trust Region)系方法
一.背景 深度学习的兴起让增强学习这个古老的机器学习分支迎来一轮复兴.它们的结合领域-深度增强学习(Deep reinforcement learning, DRL)随着在一系列极具挑战的控制实验场景 ...
最新文章
- 【转】CEC文件详解
- 代理服务器工作原理是什么?
- 用linux集成电路版图设计,集成电路版图设计教程2012版本
- 解决MAC系统升级导致COCOAPODS失效问题
- UGLY NUMBERS II
- 【Pytorch神经网络实战案例】01 CIFAR-10数据集:Pytorch使用GPU训练CNN模版-方法①
- 《Spark与Hadoop大数据分析》一一1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色...
- 用Barcode生成条形码图片
- 智能安全实验室-全能优化(Guardio)错误解决(1):“出现异常:EXCEPTION_ACCESS_VIOLATION=Access Violation”...
- 【读书笔记】A Swift Tour
- 如何找到电脑自带的浏览器
- 为什么学计算机容易秃顶,为什么程序员更容易脱发?知道答案惊呆了!
- 有线以太网RJ45网口网卡转无线wifi网卡转wifi网口转无线有线转无线方案
- windows打开iis7服务器远程桌面管理器
- 我的世界服务器兑换系统怎么做,Minecraft我的世界村民交易方法及兑换表格
- ElasticSearch-7.5.1集群3master-3data-3client环境搭建
- eclipse打开报错
- 网易我的世界服务器如何装组件,网易我的世界组件包怎么使用-网易我的世界组件包如何使用...
- aria2网页服务器错误,配置aria2服务器错误
- 最优化原理与方法之(一)开篇
热门文章
- 计算机学业水平测试字处理多少分,【计算机应用论文】计算机应用基础学业水平的测试问题(共3624字)...
- 设计模式_2_单例模式
- JavaScript高级之ES5 中的新增方法
- 八、PHP框架Laravel学习笔记——表单伪造和 CSRF 保护
- 逻辑回归(logistic regression)的本质——极大似然估计
- LeetCode MySQL 1127. 用户购买平台 *
- LeetCode 第 25 场双周赛(718/1832,前39.2%)
- 程序员面试金典 - 面试题 17.12. BiNode(BST中序遍历)
- LeetCode 69. x 的平方根(二分查找)
- html悬浮窗口退出,网页中可关闭的漂浮窗口实现