一文读懂强化学习!

一.了解强化学习

1.1基本概念

强化学习是考虑智能体(Agent)与环境(Environment)的交互问题:智能体处在一个环境中,每个状态为智能体对当前环境的感知;智能体只能通过动作来影响环境,当智能体执行一个动作后,会使得环境按某种概率转移到另一个状态;同时,环境会根据潜在的奖赏函数反馈给智能体一个奖赏。

举个例子:

智能体

机器人

环境

4*3的方格

状态

当前所在位置(初始位置为[1,1])

策略

在当前状态下,我向上走的概率为0.8,向左向右分别是0.1

行为(动作)

向上走一步

奖励

走到绿色方格奖励10,走到红色方格奖励-10,其他方格奖励-1

状态转移概率

采取向上走一步,实际上有0.9的概率到达上面一格,有0.1概率到达右边一格


  • 回报:定义当前时刻后的累积奖赏为回报(Return)

在上述场景下,回报是指机器人从当前位置走到终点(红色或者绿色方格)的奖励之和

针对一些自然场景(比如无人驾驶),到达终端状态的时间很长或者不存在终端状态,提出了折扣因子的概念,γ<1

  • 状态价值函数:智能体处于不同状态时的价值,即在状态s下的期望回报

针对上述场景:机器人处于每个状态下的不同价值,可以看到,当机器人越靠近绿色方格时,机器人的状态价值越大。(状态价值的具体计算方法后面会详细介绍,这里的具体数据无实际意义,仅仅用来参考)

  • 动作价值函数:在当前状态下,执行动作a获得的期望回报

以上图为例,在经过求解动作价值函数以后(假设已经完成了求解),在[1,1]状态,

那么选取向上的行为会比采取向右的行为更有价值。


Q:为什么要引入状态价值函数或者动作价值函数呢?

A:强化学习最根本的目的是为了求策略,但是我们并不知道那个策略是最优,因此需要引入评价函数(状态价值函数或者动作价值函数)来给当前状态(策略)进行打分,然后得到最优策略


下面会详细介绍不同的强化学习方法,但是基本思路都是相似的,求解最优值函数,或者求解最优策略。

二.基于模型的强化学习-Model-base

2.1动态规划方法

  • 马尔可夫性:系统的下一个状态仅与当前状态有关,而与历史状态无关。

在1.1节的状态价值函数和动作价值函数的推导过程已经用到了马尔可夫性

  • 贝尔曼方程:

考虑γ=1,当前时刻的状态价值函数=当前状态的奖励+到达下一状态的价值的期望。

在状态有限的情况下,本质上是解一个方程组,因此贝尔曼方程叫做贝尔曼方程组更加合理!


举例:考虑如下情况,有四个状态,箭头表示状态转移概率

可以列方程组:

例:

可表示为:

因此就求出了每个状态的价值:

有了状态价值,没有策略怎么办?

得到了每个状态的价值,在当前状态(位置)下,你会怎么走呢?按照常规逻辑,朝着价值大的位置走,对,这就是通过状态价值函数得到了策略

这就是本文的第一个强化学习模型,如果你能够理解上述过程,恭喜你,强化学习已经入门了一丢丢!


上述案例中,状态转移函数以及每个状态的奖励是已知的,也就是模型已知(Model-base),在模型已知的情况下,仅仅通过数学推导就可以完成状态价值函数的求解!而不需要智能体去真实的环境中采取数据!

在现实场景中,模型已知对系统要求过高,通常无法实现,而是通过智能体与环境交互,获得每个状态下的奖励(数据),利用采集的数据+强化学习方法,来更新价值函数或者策略函数。

三.无模型强化学习-Model-free

3.1蒙特卡洛方法

在无模型时,采用随机采样的经验平均来估计期望值,此即蒙特卡罗法。其过程可以总结如下:

  • 智能体与环境交互后得到交互序列

  • 通过序列计算出各个时刻的奖赏值

  • 将奖赏值累积到值函数中进行更新

  • 根据更新的值函数来更新策略

举例:仍然以此模型,机器人并不提前知道每个状态的奖励以及状态转移函数,初始给定一个策略以后,让机器人在里面随便跑,到达红色或者绿色的时候停止,收集每个过程的奖励,来更新状态价值函数

G表示从当前状态下出发,到达终点时的奖励,N表示这个过程进行了N次

也可以采用迭代的方法求均值,如下更新策略,本质上和上述过程是一样的。

总结:动态规划与蒙特卡洛的区别:动态规划是有模型的强化学习方法,并不需要智能体与环境进行作用,而蒙特卡洛方法无模型,通过智能体在环境中收集数据进行学习

  • 动态规划:

  • 蒙特卡洛:

3.2时序差分方法

蒙特卡洛方法需要获取完整的轨迹,效率较低,时序差分法结合了动态规划和蒙特卡罗,即模拟一段轨迹(一步或者几步),然后利用贝尔曼方程进行自迭代更新,如下图所示:

举个例子,假设γ=1,假如你想获取北京到上海的距离V(St),你从北京开车到了天津测量距离为Rt+1=100,并且知道天津到上海的距离为V(St+1)=700,那么你就获取了北京到上海的距离800。

如果你本来就有北京到上海的距离V(St)=790,那么采用上述方法就舍弃了原来的数据,显得过于激进,因此可以采用如下更新方法:

zh

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷茫的桔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值