首页 > 其他分享 >强化学习笔记(1.0)

强化学习笔记(1.0)

时间:2022-11-23 15:40:41浏览次数:49  
标签:状态 1.0 动作 s1 笔记 学习 更新 learning 强化


1.强化学习

强化学习是一类算法,是让计算机实现从一开始什么都不懂,通过不断地尝试并更新自己的行为准则。从错误中学习,最后找到规律,最终达到目的的方法。

在计算机中,可以为每一次的行为进行打分。分为高分和低分,有了打分的经验,就可以尽量去选择高分,而避免选到低分。所以强化学习具有分数导向性。

强化学习的算法:

(1)通过价值选行为:Q learning、Sarsa(使用表格学习)、Deep Q Network(使用神经网络学习)

(2)直接选行为:Policy Gradients(基于概率)

(3)想象环境并从中学习:Model based RL

2.强化学习方法汇总

Model free 和Model based

强化学习的方法分为不理解所处环境的model-free方法和理解model-based方法。

在Model-free中,Q-learning、Sarsa、Policy Gradients都是从环境中得到反馈然后学习。

而Model-based多出了一个虚拟环境,且比model-free多了想象力。

Model-free中,机器人智能等待真实世界的反馈,然后根据反馈做出行动。

Model-based,能够通过想象来判断接下来发生的状况,然后选择想象情况中最好的,然后采取下一步的策略。

【1】将强化学习分为基于概率和基于价值(分类方式)

基于概率是强化学习中最直接的一种,能通过感官分析所处环境,输出下一步要采取行动概率,然后根据概率采取行动,所以每种动作都有可能被选中。

基于价值的方法是输出所有动作的价值,它会直接选择价值最高的。

动作一般是不连续的,对于连续的动作,就能体现出基于概率的优势,而基于价值确实无能为力的。

通过基于概率的方法和基于价值的方法,又创造出了Actor-Critic.actor会基于概率做出动作,而critic会对动作给出价值,在原有的基于概率的policy gradients上加速了学习过程。

【2】另一种分类方式,回合更新和单步更新

类比于玩游戏,回合更新是在一局游戏结束后进行总结,一局游戏中所有的转折点,然后更新行为准则。

单步更新,游戏中每一步都在更新。边玩边学习。

Monte-Carlo learning和基础版的policy gradients等是回合更新

Qlearning,Sarsa,升级版的policy gradients等是单步更新。

现在大多数方法采用单步更新,因为单步更新更有效率。

【3】另一种分类方式,在线学习和离线学习

在线学习:本人在场,本人边玩边学习(on-policy)比如:Sarsa

离线学习:本人可以不在场,本人或者其他人玩,不必边玩边学习(off-policy)

Sarsa--在线学习

Q learning,Deep-Q-Network--离线学习

3.为什么要用强化学习

强化学习(Reinforcement Learning)是一个机器学习大家族的分支,由于近些年的技术的突破,和深度学习(Deep Learning)的整合,使得强化学习有了进一步的运用。强化学习是让我们的程序从对当前环境完全陌生,成长为一个在环境中游刃有余的高手。

Q-learning

为了得到最优策略policy,我们考虑估算每一状态下每一种选择的价值value有多大。然后我们通过分析发现,每一个时间片的Q(s,a)和当前得到的Reward以及下一个时间片的Q(s,a)有关。Q-learning建立在虚拟环境下无限次的实验。这意味着可把上一次实验计算得到的Q值进行使用。这样,就可以根据当前的r,reward以及上一次实验中下一个时间片的Q值来更新当前Q值。下面来具体分析。

Q-learning的算法过程:
初始化Q(s,a),任意s属于S,a属于A(s),任意的数值,并且Q(terminal-state,.)=0

重复(对每一节episode):
初始化状态S

重复(对episode的每一步):
使用某一个policy比如(伊布西龙-greedy)根据状态S选取一个动作执行

执行完动作后,观察reward和新的状态S'

Q(St,At)<--Q(St,At)+alpha(R(t+1)+lanmdamax(a)Q(S(t+1),a)-Q(St,At))

S<--S'

循环直到S终止

对于Q-learning,首先就是要确定如何存储Q值,最简单的想法就是矩阵,一个s一个a对应一个Q值,所以可以把Q值想象为一个很大的表格,横列代表S(STATE),纵列代表a(ACTION),里面的数字代表Q值,如下所示:

Q(1,1)

Q(1,2)

Q(1,3)

Q(2,1)

Q(2,2)

Q(2,3)

Q(3,1)

Q(3,2)

Q(3,3)

这样就可以知道Q值是怎样的了,下面就是看Q表是如何更新的。

(1)初始化Q矩阵,比如说都设置为0

(2)开始实验。根据当前Q矩阵及伊布西龙-greedy方法获取动作。比如当前处在状态s1,那么在s1一列每一个Q值都是0,那么这个时候随便选择就可以。

0(s1,a1)

0

0

0

0

0

0

0

0(s3,a3)

假设为选择a2动作,然后得到的reward是1,并且进入到s3状态,接下来我们要根据

Q(St,At)<--Q(St,At)+alpha(R(t+1)+lanmdamax(a)Q(S(t+1),a)-Q(St,At))

来更新Q值,这里我们假设alpha=1,lamda=1,也就是每一次都把目标Q值赋给Q。那么公式变成:

Q(St,At)=R(t+1)+max(a)Q(S(t+1),a)

所以在这里,就是

Q(s1,a2)=1+max(a)Q(S(3),a)

那么对应的s3状态,最大值是0,所以Q(s1,a2)=1+0=1,Q表格就变成:

0(s1,a1)

1(s1,a2)

0

0

0

0

0

0

0(s3,a3)

(3)接下来就是进入下一次动作,这次的状态是s3,假设选择动作a3,然后得到1的reward,状态变成s1,那么我们同样进行更新:

Q(s3,a3)=2+max(a)Q(s1,a)=2+1=3

所以Q表格就变成:

0(s1,a1)

1(s1,a2)

0

0

0

0

0

0

3(s3,a3)

(4)重复上面的方法。

就是这样,Q值在实验的同时反复更新。直到收敛。

DQN

为什么会产生DQN呢,那当然是因为Q-learning也有他的不足之处。我们已经知道,Q表是用表格来表示的Q(s,a),但是这只适合于少量的状态空间和行为空间,如果出现大量的数据的话,用表格就显得格外不妥。所以我们需要对状态的维度进行压缩,解决办法就是价值函数近似。

价值函数近似(Value Function Approximation)

什么是价值函数近似,其实很简单,就是用一个函数来表示Q(s,a).即

Q(s,a)=f(s,a)

这里的f可以是任意类型的函数,比如线性函数:

Q(s,a)=w1s+w2a+b   其中w1,w2,b就是函数f的参数

通过函数的表示,我们就可以无所谓s到底是多大的维度,反正最后都会通过矩阵运算输出为单值的Q。这就是价值函数近似的思路。

如果我们就用w来统一便是函数f的参数,那么就有

Q(s,a)=f(s,a,w)

为什么叫近似,因为我们并不知道Q值的实际分布情况,本质上就是一个函数来近似Q值的分布,所以,也可以说是Q(s,a)≈f(s,a,w)

高维状态输入,低维动作输出的表示问题

对于海量(state,action)数据来说,这是一个高维状态输入,低维动作输出。那么怎么来表示这个函数f呢。最简单的尝试,把高维s和低维a加在一起作为输入。但实际确有一些不妥。我们只需要对高维的状态进行降维,而不需要对动作也进行降维处理。

Q(s)≈f(s,w),只把状态s作为输入,但是输出的时候输出每一个动作的Q值,也就是输出一个向量[Q(s,a1),Q(s,a2),Q(s,a3),...,Q(s,an)],记住这里输出是一个值,只不过是包含了所有动作的Q值的向量而已。这样我们就只要输入状态s,而且还同时可以得到所有的动作Q值,也将更方便的进行Q-learning中动作的选择与Q值更新。

标签:状态,1.0,动作,s1,笔记,学习,更新,learning,强化
From: https://blog.51cto.com/u_15888443/5881356

相关文章

  • 深入理解css 笔记(9)
    模块化CSS是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系。最终目的是,当我们修改其中一部分css时,不会对其他部分产......
  • 支持安卓11.0操作系统——《XY6853ZA 5G AI安卓核心板》!
        产品结构概括:《XY6853ZA5GAI安卓核心板》基于联发科最新5G手机芯片自主研发MT6853(天玑720)平台,支持AI/SA/NSA双模5G全网通。内构性能结构为研发人员自主研发的......
  • unity学习笔记03-渲染管线
    图形数据在GPU上经过运算处理,最后显示在显示器上的过程游戏→图形API→cpu→(DRAWCALL)交给GPU→顶点处理→图元装配→光栅化→像素处理→缓存减少DRAWCALL 增加性能O......
  • SAP笔记-SD 销售订单 收入 和 成本 对应科目的逻辑
    销售订单收入和成本对应科目的逻辑(2009-02-19)一.收入:1.      销售订单类型->单据定价过程  2.      单据定价过程->定价过程sorg:销售组织,dc......
  • SAP笔记-FI-多家客户同时收款问题
    多客户收款问题(2009-02-17) 问题:使用配置的收款凭证类型dZ,同时收多家客户款,系统提示只能选择一个客户或供应商./原因:DZ凭证类型在配置时,设定了客户/供应商检查......
  • SAP笔记-工作中心主数据-成本中心设置错误
    这两天后勤再测试时出现一个很奇怪的问题,co11n完工确认时,会出现下面的错误.百思不和其解,找配置都没有相关的东西,最终找到原因是工作中心主数据中设置的成本中心不是同一......
  • git-book笔记
    记住,在Git中任何已提交的东西几乎总是可以恢复的。甚至那些被删除的分支中的提交或使用--amend选项覆盖的提交也可以恢复(阅读数据恢复了解数据恢复)。然而,任何你......
  • 系统辨识课程笔记
    第一次课现代控制理论有哪些部分组成辨识、状态估计、控制理论辨识方法主要采用什么技术数理统计的技术系统辨识的定义系统辨识是根据系统的输入/输出时间函数,确定系统行为......
  • Vue3学习笔记(七)—— 状态管理、Vuex、Pinia
    一、状态管理1.1、什么是状态管理?理论上来说,每一个Vue组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例:<scriptsetup>import{re......
  • Jupyter笔记[3]-词向量
    自然语言处理-词向量[https://www.paddlepaddle.org.cn/tutorials/projectdetail/3578658]在自然语言处理任务中,词向量(WordEmbedding)是表示自然语言里单词的一种方法,即......