首页 > 其他分享 >复习强化学习

复习强化学习

时间:2022-08-31 11:55:45浏览次数:82  
标签:复习 gym 环境 agent 学习 dev 强化

https://zhuanlan.zhihu.com/p/374376193

   

首发于机器学习与强化学习

写文章

 

强化学习一:基本原理

 

贺治东

数据挖掘、深度学习、NLP、强化学习

​关注

1 人赞同了该文章

谈到强化学习,大家最直观的印象应该就是2016-2017年AlphaGo大胜世界围棋冠军李世石和柯洁,其实强化学习大牛Richard S. Sutton在1998年就出版了《Reinforcement Learning:An Introduction》,本文章的大部分内容也来自于此。

   

强化学习,也有人称增强学习,是机器学习的一个分支。它与无监督学习和监督学习有本质的区别,无监督学习没有标签,只有特征,根据数据中发现内在关联和相似性,把数据进行聚类,而强化学习是有回报rewards的;监督学习是模型根据指定的输入得到对应的输出,这个输出一般比较明确,而强化学习是根据指定的状态最大化回报,这个回报是不明确的,而且通常是有延时的,与环境紧密相关的。

   

三者的关系,如图所示:

   

 

   

   

一般来说,我认为学习有三种方式:第一种就是灌输式,比如我们上学,一般都是老师直接告诉我们知识,我们来理解并最终记住;第二种是模仿式,比如小孩说话,是根据父母或者其他人的表情和言语来模仿学习的,你对小孩说很多遍"爸爸",小孩就知道这是爸爸了,因为你已经喊了很多遍了;还有就是试错式,也就是在不断的试错中学习,强化学习正是采用这种方式学习的。

   

强化学习是如何在挫折中学习的呢?看下图:

   

 

   

   

首先是大脑通过观察,然后对环境(如图中的地球)执行一个动作action,那么环境会反馈一个reward,同时也得到一个观察值Q,用户再根据这个观察值对环境采用某一个action,最终的目标使得每次循环得到的reward总和最大。

   

由此看出,强化学习是一个序列决策的问题,它不关心输入的格式,只关心当前的输入应该采用什么样的措施,可以使得整个任务序列的长期回报得到最大。

   

为了更清晰的描述强化学习,我们需要引入几个概念:S、A、P、R、γ。下面以Maze游戏来说明这些概念的含义,游戏界面如下图所示:

   

 

   

   

假设有一只蚂蚁来完成这个游戏,那么蚂蚁就是agent,游戏的目的是蚂蚁从start位置开始沿着白色的方格以最少的步走到goal位置。那么在这个游戏中状态空间S就是agent的位置,动作空间A就是{东,西,南,北},比如下图显示了agent的动作空间形式

   

 

状态转移概率P就表示agent处在一个位置,那么可以走其他位置的概率。其实每走一步都会给单元格一个值,这个值就是回报R(reward),比如下图就是经过n步后的结果。

为了保证模型可以收敛,通常需要一个时间衰减因子γ,γ通常在0-1之间。

   

我们在了解了强化学习的原理和基本概念后,就要问了,自己想要实现一些基本的算法模拟如何实现呢?那么gym(https://github.com/openai/gym)是一个不错的选择,它是openAI的通用的强化学习平台,里面集成了很多仿真环境,比如车摆环境,Atari游戏等等。下面介绍一下它的安装和使用:

step1、需要读者自行安装python3.5以上环境,包括anaconda,虚拟环境(如果需要的话);

step2、git clone https://github.com/openai/gym.git,将gym克隆到本地

step3、cd gym 进入到gym目录

step4、pip install –e '.[all]'进行完全安装

如果报错,需要执行如下命令sutoapt-get install –y python-numpy python-dev cmake zlib1g-dev xvfb libav-toolsxorg-dev python-opengl libboost-all-dev libsdl2-dev swig

至此,gym环境已经安装好了,下面以小车倒立游戏为例,介绍gym的使用

import gym # 导入gym库

env = gym.make('CartPole-v0') #创建小车倒立模型的环境

env.reset # 初始化环境

env.render() # 显示当前环境 需要提前安装matplotlib包

创建好CartPole-v0环境,其中涉及到三个方法,reset()、step()、render()。智能体agent需要不断和环境交互来获得经验,因此每个episode执行后,都需要通过reset()重置环境,下次智能体agent重头开始执行;环境的交互反馈主要依靠step(),它的输入是动作a,输出是下一步的状态s,立即回报r、是否终止、调试。特别注意:输出的顺序不能改变,调试通常使用{}来代替。

发布于 2021-05-22 14:40

AlphaGo

李世石

围棋

​赞同 1​​添加评论

​分享

​喜欢​收藏​申请转载

来自 <https://zhuanlan.zhihu.com/p/374376193>

标签:复习,gym,环境,agent,学习,dev,强化
From: https://www.cnblogs.com/libxing/p/16642567.html

相关文章

  • RL 学习曲线怎么看?
    https://zhuanlan.zhihu.com/p/342919579      好用的强化学习算法是? 超参数很容易调整或确定。SAC的rewardscaling可以在训练前直接推算出来。PPO超......
  • 学习:python进阶 内置排序
    列表sort()方法原地排序  内置函数sorted(),复制一份新数据  高级用法     ......
  • 学习 Python进阶 选择排序
    【原理】循环列表,每次循环找到列表中的最小数,放到一个位置上再次循环找到剩下列表中的最小数,放在之前找到的最小数下一个位置最后,实现升序排列 思考   多次......
  • 学习偏态分布的相关知识和原理的4篇论文推荐
    偏态分布(skewnessdistribution)指频数分布的高峰位于一侧,尾部向另一侧延伸的分布。偏态分布是与“正态分布”相对,分布曲线左右不对称的数据次数分布,是连续随机变量概率分......
  • Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】(2022/8/30)
    插槽Vue.js官网介绍:https://vuejs.org/guide/components/slots.html会牵涉到template的用法、占位、实际不渲染到页面中1、默认插槽:1.1基本结构及介绍个人理解:在A......
  • 学习 python进阶 defaultdict
    defaultdict也是dict的一个子类它的好处是,可以同工一个初始值,避免出现因为是用不存在的Key时造成KeyErrordefaultdict初始化可以传递参数default_factory(默认是None),......
  • python基础知识学习
    基础知识学习——两周时间视频教程:https://time.geekbang.org/course/intro/100008801?tab=catalog辅助网站教程:https://www.runoob.com/python3/python3-basic-syntax.h......
  • 机器学习和 Python 中的贷款偿还预测(决策树算法)。
    机器学习和Python中的贷款偿还预测(决策树算法)。资源→我需要了解我的客户是否会归还他们从我的银行获得的贷款。问题陈述:-使用python中的决策树算法预测客户是否......
  • vue3源码学习2-创建和渲染vnode
    创建vnode我们在第一节中在packages/runtime-core/src/apiCreateApp.ts文件的createAppAPI方法中,app.mount()时://通过createVNode方法创建了根组件的vnodeconstvnod......
  • 学习:python进阶 OrderedDict
    python3.6之前字典插入的key的顺序是不能保证的此时如果想要保证key是按照插入时的顺序,只能使用OrderDictOrderdeDict是dict的子类,兼容dict的方法,且还有扩展方法  ......