文章目录
- 参考
- 强化学习基础
- 强化学习特点
- reward函数
- 两种强化学习
- 两种策略:探索(Exploration) vs. 利用(Exploitation)
- gym库的使用
- 马尔可夫
- 马尔可夫过程
- 马尔可夫奖励过程(Markov Reward Process, MRP)
- 折扣因子
- 贝尔曼方程
- 计算马尔可夫奖励过程价值的迭代算法
- 马尔可夫决策过程(MDP)
- 马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别
- 马尔可夫决策过程中的价值函数
- 备份图
- 策略评估/预测/控制
- 马尔可夫决策过程控制办法
- 关键词/习题/面试题
参考
李宏毅老师讲的【强化学习】
蘑菇书EasyRL
个人觉得直接看磨菇书就好了,如果遇到实在看不懂,再看对应部分的李宏毅老师的课程就行
强化学习基础
- 根据当前得到的环境返回一个reward
- 根据当前的环境得到一个行动
- 行动更新环境
- 上面三步反复循环,统计得到的reward总和,目标要使得reward总和最大
但只如果只做使得返回的reward最大的行为,可能会忽略可能导致未来reward更大但当前reward比较小的行为
强化学习特点
强化学习和监督学习的区别如下。
(1)强化学习输入的样本是序列数据,而不像监督学习里面样本都是独立的。
(2)学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来 最多的奖励,只能通过不停地尝试来发现最有利的动作。
(3)智能体获得自己能力的过程,其实是不断地试错探索(trial-and-error exploration)的过程。探索 (exploration)和利用(exploitation)是强化学习里面非常核心的问题。其中,探索指尝试一些新的动作, 这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习里面没有的情况。
(4)在强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(reward signal),并且奖励信号是延迟的,即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得 到即时反馈,所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后,如果我们使用监督学习,我们就可以立刻获得一个指导,比如,我们现在采取了一个错误的动作,正确的动作应该是什么。而在强化学习里面,环境可能会告诉我们这个动作是错误的,但是它并没有告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。
reward函数
第一个价值函数:代表在某个策略下,当前状态开始到未来结束各种可能情况,各种结束的累积奖励并分别加权对应的折扣因子的对应次方,并对各种情况求平均
第二个价值函数:代表在某个策略下,当前状态,采取某个动作开始到未来结束各种可能情况,各种结束的累积奖励并分别加权对应的折扣因子的对应次方,并对各种情况求平均
(一种情况代表就是当前状态开始到未来结束,这期间可能会采取不同动作,得到不同情况,多步累积起来就得到这个期望)
两种强化学习
根据智能体学习的事物不同,我们可以把智能体进行归类。基于价值的智能体(value-based agent)显式地学习价值函数,隐式地学习它的策略。策略是其从学到的价值函数里面推算出来的。基于策略的智能体(policy-based agent)直接学习策略,我们给它一个状态,它就会输出对应动作的概率。基于策略的智能体并没有学习价值函数。把基于价值的智能体和基于策略的智能体结合起来就有了演员-评论员智能体(actor-critic agent)。这一类智能体把策略和价值函数都学习了,然后通过两者的交互得到最佳的动作。
Q: 基于策略和基于价值的强化学习方法有什么区别?
A: 对于一个状态转移概率已知的马尔可夫决策过程,我们可以使用动态规划算法来求解。从决策方式来看,强化学习又可以划分为基于策略的方法和基于价值的方法。决策方式是智能体在给定状态下从动作集合中选择一个动作的依据,它是静态的,不随状态变化而变化。 在基于策略的强化学习方法中,智能体会制定一套动作策略(确定在给定状态下需要采取何种动作),并根据这个策略进行操作。强化学习算法直接对策略进行优化,使制定的策略能够获得最大的奖励。 而在基于价值的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,并通过这个价值表格或价值函数来选取价值最大的动作。基于价值迭代的方法只能应用在不连续的、离散的环境下(如围棋或某些游戏领域),对于动作集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果(此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)。 基于价值的强化学习算法有Q学习(Q-learning)、 Sarsa 等,而基于策略的强化学习算法有策略梯度(Policy Gradient,PG)算法等。此外,演员-评论员算法同时使用策略和价值评估来做出决策。其中,智能体会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,取得更好的效果。
两种策略:探索(Exploration) vs. 利用(Exploitation)
索即我们去探索环境,通过尝试不同的动作来得到最佳的策略(带来最大奖励的策略)。
利用即我们不去尝试新的动作,而是采取已知的可以带来很大奖励的动作。
gym库的使用
马尔可夫
S是状态,A是行为,R是奖励值
马尔可夫过程
只包含状态(或者说状态转移矩阵)
马尔可夫奖励过程(Markov Reward Process, MRP)
多了个多了奖励函数(reward function)。奖励函数 R 是一个期望,表示当我们到达某一个状态的时候,可以获得多大的奖励。这里另外定义了折扣因子
γ 。如果状态数是有限的,那么 R 可以是一个向量(就是向量的不同标量值表示不同状态的奖励值)
奖励函数 R(s) 表示在状态 s 中获得的期望奖励。
状态价值函数:就是当前状态的未来的各种可能的回合对应的汇报的平均值
折扣因子
- 避免无穷奖励
在某些马尔可夫过程中,智能体可能会陷入循环状态,导致累积奖励无限大。例如,假设智能体在一个环境中可以无限期地获得小的正奖励,而没有终止状态。如果没有折扣因子,累积奖励将趋向于无穷大,这在数学上是不可处理的。通过引入折扣因子 γ(其中 0≤γ<1),未来的奖励会被逐渐减少,从而避免累积奖励无限大的问题。 - 处理不确定性
在实际应用中,我们通常无法完全准确地模拟环境。未来的奖励可能受到多种因素的影响,包括环境的随机性、模型的不准确性和智能体的决策误差。通过引入折扣因子,我们可以更注重当前的奖励,而不是过于依赖对未来的预测。这反映了我们对未来的不确定性,希望尽快获得奖励,而不是在未来某个不确定的时间点获得奖励。 - 反映奖励的实际价值
在许多实际场景中,即时奖励比未来的奖励更有价值。例如,一笔钱现在的价值通常比未来某个时间点的相同金额更有价值,因为现在的钱可以立即使用,而未来的钱可能会受到通货膨胀等因素的影响。类似地,在强化学习中,智能体可能更倾向于获得即时奖励,而不是未来的奖励。 - 鼓励即时奖励
折扣因子还可以用来调整智能体的行为策略。通过设置不同的折扣因子,我们可以鼓励智能体更关注即时奖励或未来奖励。例如:
γ=0:智能体只关注当前的奖励,完全忽略未来的奖励。这适用于那些只需要关注即时效果的场景。
γ=1:智能体对未来的奖励和当前的奖励同等重视,不进行任何折扣。这适用于那些未来奖励和当前奖励同等重要的场景。
0<γ<1:智能体在即时奖励和未来奖励之间进行平衡。折扣因子越小,智能体越倾向于即时奖励;折扣因子越大,智能体越倾向于未来奖励。
贝尔曼方程
具体证明见
https://datawhalechina.github.io/easy-rl/#/chapter2/chapter2?id=_222-%e8%b4%9d%e5%b0%94%e6%9b%bc%e6%96%b9%e7%a8%8b
注意价值函数和奖励函数是不同的东西!!!
贝尔曼方程就是当前状态与未来状态的迭代关系,表示当前状态的价值函数可以通过下个状态的价值函数来计算。
计算马尔可夫奖励过程价值的迭代算法
N是轨迹数量(轨迹就是未来各种状态的连续可能)
这里就是计算未来各种轨迹的回报,最后求和取平均作为价值
另外方法是一直迭代贝尔曼方程,直到价值函数没多大变化,我们就可以得到某个状态的价值
马尔可夫决策过程(MDP)
马尔可夫决策过程在马尔可夫奖励过程的基础上增加了动作。它描述了智能体在每个状态下可以采取的动作,以及这些动作如何影响状态转移和奖励。
简单来书就是:状态到动作有个概率,动作到下一个状态也有个概率
此时每个状态和行为都有一个奖励函数(确定的),对于状态的奖励函数是要将该状态和对应各种行为的奖励函数和该状态下对应行为的发送概率加权求和
马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别
马尔可夫过程/马尔可夫奖励过程:直接状态转移,状态转移概率
马尔可夫决策过程:还有一个动作概率和状态和动作转移到下一个状态的概率
马尔可夫决策过程中的价值函数
价值函数
动作的价值函数也叫Q 函数(Q-Function)表示在状态 s 下采取动作 a 后所能获得的期望累积奖励。它考虑了状态和动作的组合,提供了一个更细粒度的期望回报估计。
二者关系如下
之前说过Q 函数(Q-Function)表示在状态 s 下采取动作 a 后所能获得的期望累积奖励,也可以理解为当前即使奖励+下一个状态的价值函数(即累积期望),当然这里的下一个状态价值函数又可以拆解为各个状态动作价值函数和每个动作的概率加权和
备份图
就是一种图表示状态动作更迭方式,空心圆圈代表状态,实心圆圈代表状态-动作对。
可以看出s的状态价值函数等于两个状态动作价值函数合对应动作价值的奖励的和的加权和
策略评估/预测/控制
马尔可夫决策过程控制办法
寻找最佳策略的过程就是马尔可夫决策过程的控制过程
策略搜索:
策略迭代:
第一个步骤是策略评估,当前我们在优化策略 π(一个具体策略比如每一步应该怎么走),在优化过程中得到一个最新的策略。我们先保证这个策略不变,然后估计它的价值,即给定当前的策略函数来估计状态价值函数。
第二个步骤是策略改进,得到 状态价值函数后,我们可以进一步推算出它的 Q 函数。得到 Q 函数后,我们直接对 Q 函数进行最大化,通过在 Q 函数做一个贪心的搜索来进一步改进策略。
这两个步骤一直在迭代进行。
价值迭代:
就是初始化各个价值函数,然后不停迭代价值函数,没有策略评估这一过程
关键词/习题/面试题
https://datawhalechina.github.io/easy-rl/#/chapter2/chapter2_questions&keywords?id=%e5%85%b3%e9%94%ae%e8%af%8d