本文为Thomas Simonini增强学习系列文章笔记或读后感,原文可以直接跳转到medium系列文章。

主要概念为:

Q-Learning,探讨其概念以及用Numpy实现

我们可以将二维游戏想象成平面格子,每个格子代表一个状态,并且对应了不同的动作,例如下图:

Q函数接收状态和动作两个参数并输出Q值,即在一个状态下各种动作各自未来的期望奖励。公式如下:

这里的未来期望奖励,就是当前状态下一直到结束状态(成功或失败)所获取的奖励。

Q-learning算法伪代码

其中,更新Q值为bellman等式,如下描述:

这篇文章总体来说,非常简单,各种步骤也特别详细,告诉了我们如何计算Q-table的算法过程。但是为什么能迭代到最优,并没有给出一个比较明确的证明过程。主要也是因为采用的EE平衡问题,这个过程采用了greedy episolon的启发式算法,每次直接选取的是最大概率的action,而多次重复episode, 其实计算的是对未来的奖励积累的期望。所以从bellman等式到Q(s, a) state-value function 定义如何连接的呢?推导的公式如下:

Numpy具体实现

# -*- coding: utf-8 -*-# pkg need
import numpy as np
import gym
import random
import time# step 1. create the environment
env = gym.make("Taxi-v2")
env.render()  # tick and run it to see# this game enviroment could be found detail documented at:
# https://gym.openai.com/envs/#toy_text
# pick and drop off the passenger right for -20 points,
# fail for either one will lose 10 points
# every step will decrease 1 points# step 2. create the q-table and initialize it.
state_size = env.observation_space.n
action_size = env.action_space.n
qtable = np.zeros((state_size, action_size))
print("state size: %d, action size: %d" % qtable.shape)   # tick and run# step 3. create the hyperparameters
total_episodes = 50000
total_test_episodes = 100
max_steps = 99learning_rate = 0.7
gamma = 0.618# exploration parameter
epsilon = 1.0                # exploration rate
max_epsilon = 1.0            # exploration probability at start
min_epsilon = 0.01           # minumum exploration probability
decay_rate = 0.01            # exponential rate to decay exploration rate# step 4. The Q learning algorithm
# 2 For life or until learning is stopped
for episode in range(total_episodes):# reset the environmentstate = env.reset()step = 0done = False # start the gamefor step in range(max_steps):# 3 choose an action a in the current world state (s)# first random a numberee_tradeoff = random.uniform(0, 1)# exploitation, taking the biggest Q value for this stateif ee_tradeoff > epsilon:action = np.argmax(qtable[state, :])else:action = env.action_space.sample()    # exploration, randomly sample a action# take action and observe the outcomenew_state, reward, done, info = env.step(action)# Update the Q(s, a)qtable[state, action] += learning_rate * (reward + gamma * np.max(qtable[new_state, :]) - qtable[state, action])# update statestate = new_state# if done: finish episodeif done:break # reduce epsilon -> we want less and less explorationepsilon = min_epsilon + (max_epsilon - min_epsilon) * np.exp(-decay_rate * episode)print(qtable)# use q table to play taxidef play(env, qtable, show=True, sec=None):state = env.reset()step = 0done = False total_rewards = 0for step in range(max_steps):# see agent to playif show:env.render()action = np.argmax(qtable[state, :])new_state, reward, done, info = env.step(action)total_rewards += reward if done:breakif sec:time.sleep(sec)state = new_state return total_rewards# play one test episode
play(env, qtable)env.reset()
rewards = []
for episode in range(total_test_episodes):total_rewards = play(env, qtable, show=False)rewards.append(total_rewards)env.close()
print("Score over time: " + str(sum(rewards) / total_test_episodes))

参考文献:

1. bellman equation to state value function,berkeley的增强学习课程,讲的真详细。

转载于:https://www.cnblogs.com/bpup/p/9649576.html

【读书笔记】2_增强学习中的Q-Learning相关推荐

  1. 读书笔记:深度学习中的正则化

    声明:读书笔记,未完成梳理,不值得参考. 阅读书籍:<深度学习>花书,第7章 正则化:对学习算法的修改--旨在减小泛化误差而不是训练误差. 个人描述:正则化项的目的是为了提升模型的泛化能力 ...

  2. Deep Learning读书笔记3---深度学习中的正则化

    1.概念 正则化定义为"对学习算法的修改--旨在减少泛化误差而不是训练误差". 目前有许多正则化策略. 有些策略向机器学习模型添加限制参数值的额外约束. 有些策略向目标函数增加额外 ...

  3. 读书笔记1|深度学习入门:Machine Learning Yearning

    Machine Learning Yearning中文版 有一段时间有点摸不着头脑,因为是自学python,深度学习,分类太多,人脸识别,对象检测,对象追踪,图像处理,语义分割等.有点眼花缭乱,太多细 ...

  4. 冯·诺伊曼奖得主Jorge Nocedal:增强学习中零阶优化方法及其应用(附演讲视频和PPT)

    2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...

  5. (swing读书笔记)JTree简介(中)

    (swing读书笔记)JTree简介(中) By cszhao1980 三.TreeModel(树模型) 同JTable相比,TreeModel接口显得不那么重要.这是Tree的特殊性造成的--Tre ...

  6. (swing读书笔记)JTable简介(中)

    (swing读书笔记)JTable简介(中) by cszhao1980 五.TableCellRenderer JTable将Cell的绘制工作委托给CellRenderer来完成--如果我们没有显 ...

  7. [PARL强化学习]Sarsa和Q—learning的实现

    [PARL强化学习]Sarsa和Q-learning的实现 Sarsa和Q-learning都是利用表格法再根据MDP四元组<S,A,P,R>:S: state状态,a: action动作 ...

  8. (转) ML笔记:字典学习1(Dictionary Learning)

    原 ML笔记:字典学习1(Dictionary Learning) 2019年02月27日 16:08:42 KaifangZhang 阅读数:215更多 <div class="ta ...

  9. 《联邦学习实战》杨强 读书笔记十一——联邦学习在智能物联网中的应用案例

    目录 案例的背景与动机 历史数据分析 出行时间预测模型 问题定义 构造训练数据集 模型结构 联邦学习在智慧城市建设中的一个应用,即用户的出行预测,帮助用户更好地规划出行安排. 人工智能物联网(以下简称 ...

  10. 《联邦学习实战》杨强 读书笔记十七——联邦学习加速方法

    目录 同步参数更新的加速方法 增加通信间隔 减少传输内容 非对称的推送和获取 计算和传输重叠 异步参数更新的加速方法 基于模型集成的加速方法 One-Shot联邦学习 基于有监督的集成学习方法 基于半 ...

最新文章

  1. Linux环境下的堆栈--调试C程序
  2. IBM之alphablox 数据源定义问题解决
  3. CF #737(div2)C. Moamen and XOR 与和异或-找规律
  4. 【项目管理】ITTO-资源管理
  5. oracle快速备份全库,做了两次rman 全库备份,如何快速删除第一次的备份?
  6. ubuntu中安装wmware-tools
  7. 【转】增强 scite 编辑器的代码提示功能
  8. android 不同型号的终端的UI适配--一种解决方法
  9. 如何在 SAP Spartacus 产品明细页面添加自定义 UI
  10. [JavaWeb-HTML]HTML特殊字符表
  11. amtemu v0.9.2下载_悦剪辑安卓版下载-悦剪辑app下载v2.2
  12. 人生每一件事都是为自己而做
  13. switchhost提示没有切换权限
  14. 如何在 CentOS 7 上使用 RoundCube 管理邮箱
  15. srs流媒体服务器简单应用与实现
  16. 3D相机技术 | 立体视觉传感器+TOF相机
  17. Google I/O 大会强势回归!2021 中文直播全攻略看这里
  18. 不同网络下 一台电脑连接另一台电脑的mysql数据库
  19. Bsgrid表格插入日期表头
  20. phpcms富文本框上传图片去除水印

热门文章

  1. OpenJDK8-u302-b03哪里去也?
  2. LINUX出错解决办法:无法定位软件包 libX11-dev
  3. 南半球左撇子的人是否多一些
  4. 介绍一些预言性质的梦
  5. 管理感悟:方案能力与解决问题能力
  6. JDK+Eclipse安装
  7. 从小到大排列组合 php,求一个一维数组中,n个元素的不同组合,并返回该数组
  8. 恐龙机器人钢索恐龙形态_恐龙有的四脚行走有的两脚行走,有的会飞有的会游,差别咋这么大...
  9. 抽离css以及公共js
  10. 详解animate.css动画插件用法