强化学习算法,奖励函数,环境和智能体的关系是什么?
什么是强化学习?马尔科夫决策过程
首先我将介绍强化学习的基本框架——马尔科夫决策过程,这是所有强化学习算法的基础,可以说,没有马尔科夫决策过程,也就没有强化学习。
在马尔科夫过程中,学习与决策者被称为智能体,与智能体交互的部分则称为环境。智能体与环境不断进行交互,具体而言,这一交互的过程可以看做是多个时刻,每一时刻,智能体根据环境的状态,依据一定的策略选择一个动作(这里的策略指的是从环境状态到智能体动作或者动作概率之间的映射),然后环境依据一定的状态转移概率转移到下一个状态,与此同时根据此时状态的好坏反馈给智能体一个奖励。智能体可以根据环境的反馈调整其策略,然后继续在环境中探索,最终学习到一个能够获得最多奖励的最优策略。完整的马尔科夫决策过程可以用一个由每时刻的状态、动作以及奖励组成的序列来表示,这一序列的核心特点是环境下一时刻的状态与奖励均只取决于当前时刻的状态与智能体的动作,也就是说,环境的状态转移概率是不变的,这一特性被称为马尔科夫特性。
为什么需要要求强化学习的任务符合马尔科夫特性呢,因为在实际场景中,环境状态概率通常是未知的,只有符合马尔科夫特性,智能体才有可能通过与环境的不断交互,学习到环境的变化规律,这样才能根据当前的状态,以及要采取的动作,推理出下一步的状态,从而方便智能体在训练过程中清晰地推理出每一步的状态变化,这是强化学习能够学习出来的关键所在,如果在训练过程中我们连每一步的状态变化都推理不出来,那么也无从训练。
以上就是马尔科夫决策过程的完整概念,而强化学习的目标就是在环境的变化规律未知的情况下对智能体的最佳策略进行学习。
收益与价值函数
那么什么是最佳策略呢?在上一张PPT中我们提到的奖励表示了智能体在某状态下采取某动作的好坏,这是智能体在环境中获得的短期利益,这一评价指标只考虑了动作对当前状态的影响。但由于马尔科夫决策过程是一个序列决策过程,每一时刻的动作不仅会影响当前状态,还会对后续的环境状态产生影响。也就是说,当前时刻能够获得较多奖励的动作从长远来看也许并不是最佳的,而短期来看不太好的动作却也许能在未来带给智能体更多的奖励。因此智能体在决策时不能单单考虑这一时刻的奖励,而应该考虑到动作对未来的长期影响。为此,我们需要在奖励的基础上定义另一个评价指标来度量智能体所能获得的长远利益。
在强化学习中,这一评价指标被称为收益,它的定义为未来时刻里智能体所能获得的折扣奖励之和。在求和公式中,我们需要对未来每一时刻的奖励乘上一个折扣因子,并且越往后,衰减越大。为什么要这样做呢?直觉上来看,时间上越远,存在的不确定越多,对当前时刻的贡献也就越小,因此需要用一个折扣因子来描述不同时刻奖励对当前时刻的贡献程度。
在收益的基础上,我们可以为每一个状态-动作对定义一个价值,这个价值表示了在给定状态-动作对的条件下未来依据某策略做决策所能获得的平均收益,因此,它依据未来能获得的平均收益大小对某一策略下,给定状态-动作对的好坏进行了评价。这里的价值实际上也就对应着强化学习中经常提到的Q值。
最终智能体的目标就是学习到一个最优策略,使得智能体在任意状态下的价值最优,定义最佳策略下的动作价值函数为最优价值函数,也就是最优Q值。很显然,当我们已知了最优Q值时,每一状态下对应Q值最大的动作就是最佳动作。
因此,我们可以得出这样一个结论:求解最优策略也就等价于求解最优Q值。
强化学习算法分类
基于这样一个结论,最终,在强化学习中,求解最优策略的算法可以分为三大类。
基于价值估计的强化学习算法
第一类算法被称为基于价值估计的算法,刚刚我们提到求解最优策略等价于求解最优Q值,因此这一类算法的目标就是对所有状态-动作对下的最优Q值进行估计,最终任意状态下令最优Q值最大的动作即为最优动作。
Q-learning算法是最经典的强化学习算法,它针对的是离散状态、离散动作的情况,这里的离散指的是马尔科夫决策过程中状态和动作的数量都是有限的,在这种情况下,Q-learning直接用一个表格来描述所有的最优Q值。这里最优Q值的估计方法主要基于强化学习中一个重要的理论公式——贝尔曼方程,这个方程描述了不同状态-动作对的Q值之间的确定性等式关系。具体这个公式是怎么推导得到的,我就不细说了,总之根据这个公式,我们可以在智能体与环境交互的过程中,不断对表格中的值进行迭代更新,最终达到收敛状态。最后,针对每一个状态,我们只需要选择每一行最大Q值对应的动作就可以了。这种方法的局限性在于状态空间和动作空间都必须是离散的,当状态和动作数量变多时,表格会越来越大,最终导致Q值难以学习出来。
Deep-Q learning在Q-learning的基础上用一个神经网络来拟合状态到Q值之间的映射关系,此时,状态作为神经网络的输入,可以在连续范围内取值,最终输出得到的是该状态下对应每个动作的Q值,然后我们可以在其中选择一个令Q值最大的作为最优动作。在Deep Q-learning中,我们不需要像Q-learning一样把所有的Q值学习出来,而只需要学习一个神经网络,解决了Q-learning中状态必须连续且表格随状态数量增大这一问题。但是在deep Q-learning算法中,动作依然要求是离散的,并且当动作维度增大时,神经网络的规模会指数增加,这是基于价值估计算法的主要缺陷。
基于策略优化的强化学习算法
第二类算法被称为基于策略优化的强化学习算法,基于价值估计的算法是对最优Q值进行估计,而策略优化算法则直接对最优策略进行估计。
在强化学习中,策略分为两种,一种是随机性策略,此时我们需要对状态到最优动作概率分布之间的映射进行估计,然后从该概率分布中进行采样得到输出动作。
第二种策略为确定性策略,此时我们直接对状态到最优动作之间的映射进行估计。为了对策略进行优化,我们需要定义一个策略的性能函数作为优化目标,在强化学习中,这个性能函数通常被定义为一定策略下的平均收益。然后我们只需要依据优化目标对策略函数进行梯度上升,最终就可以得到最优策略。策略优化算法的特点是,神经网络的输出即为最优动作,因此这里的动作空间既可以是离散的也可以是连续的。在优化过程中,这里的性能函数通常通过一定的估计方法得到。
基于演员-评论家的强化学习算法
http://pic3.zhimg.com/v2-2185a5937bf905a4cf15e909b884aa9b_r.jpg?source=1940ef5c
第三类算法被称为基于演员-评论家的强化学习算法,这一类算法结合了价值估计方法与策略优化方法的特点,同时对最优Q值以及最优策略进行学习,最终策略网络的输出即为最优动作。
在这一类算法中存在两个网络,第一个网络被称为Actor网络,该网络对智能体的策略,也也就是状态到最优动作之间的映射关系进行学习,因此也被称为策略网络,Actor网络的输出即为智能体的动作。第二个网络被称为Critic网络,这个网络的作用是对智能体的策略进行评价,它的网络输出为任意状态-动作对的Q值。
可以看出,Actor网络就像是一个执行者,用来输出动作,而Critic网络则对Actor输出的动作进行评价,然后Actor再根据Critic的评价不断地修正自己的策略,Critic则通过贝尔曼方程对自身网络进行迭代更新,最终我们就可以得到一个较好的Actor网络作为智能体最终的策略。
与策略优化方法一样,该类方法中包含一个策略网络,因此可以直接输出最优动作,动作空间既可以是离散的,也可以是连续的。
其他分类方法
刚刚我提到的三类算法是按照智能体的学习内容而划分的,实际上,强化学习算法还有许多种分类方法,例如按照策略类型可以分为随机策略算法和确定性策略算法,而按照训练样本的产生方式又可以分为同策略算法和离策略算法,按照网络的更新频率还可以分为蒙特卡洛方法和时间差分方法。我这里列举了几种比较常见的强化学习算法,每一种都同时属于多种类别,这些不同类别的区别在于训练方式的不同,但是他们的目标和希望得到的结果都是一样的,我们一般无法直接说哪一种类别的算法更好,如果我们只在乎训练结束后的策略,那么理论上这些算法都是可以用的,但是由于每种算法还包含了许多其他训练或者网络设计上的技巧,所以不同算法的性能有所区别。那么在实际应用时,我们要怎么从几十上百种算法中进行选择呢。我个人的理解是,在刚入门的时候,我们可以先用最基础的算法,例如DQN或者DDPG,来搭起自己的任务框架,同时加深对强化学习的理解。但两种算法比较简单,可能无法完成较复杂的任务,所以当我们真正需要解决一个任务时,我们就需要根据自身任务的特点,结合主流讨论中性能较好并且调参难度低的算法作为我们主要使用的算法进行学习。 什么是强化学习?
马尔科夫决策过程
首先我将介绍强化学习的基本框架——马尔科夫决策过程,这是所有强化学习算法的基础,可以说,没有马尔科夫决策过程,也就没有强化学习。
在马尔科夫过程中,学习与决策者被称为智能体,与智能体交互的部分则称为环境。智能体与环境不断进行交互,具体而言,这一交互的过程可以看做是多个时刻,每一时刻,智能体根据环境的状态,依据一定的策略选择一个动作(这里的策略指的是从环境状态到智能体动作或者动作概率之间的映射),然后环境依据一定的状态转移概率转移到下一个状态,与此同时根据此时状态的好坏反馈给智能体一个奖励。智能体可以根据环境的反馈调整其策略,然后继续在环境中探索,最终学习到一个能够获得最多奖励的最优策略。完整的马尔科夫决策过程可以用一个由每时刻的状态、动作以及奖励组成的序列来表示,这一序列的核心特点是环境下一时刻的状态与奖励均只取决于当前时刻的状态与智能体的动作,也就是说,环境的状态转移概率是不变的,这一特性被称为马尔科夫特性。
为什么需要要求强化学习的任务符合马尔科夫特性呢,因为在实际场景中,环境状态概率通常是未知的,只有符合马尔科夫特性,智能体才有可能通过与环境的不断交互,学习到环境的变化规律,这样才能根据当前的状态,以及要采取的动作,推理出下一步的状态,从而方便智能体在训练过程中清晰地推理出每一步的状态变化,这是强化学习能够学习出来的关键所在,如果在训练过程中我们连每一步的状态变化都推理不出来,那么也无从训练。
以上就是马尔科夫决策过程的完整概念,而强化学习的目标就是在环境的变化规律未知的情况下对智能体的最佳策略进行学习。
收益与价值函数
那么什么是最佳策略呢?在上一张PPT中我们提到的奖励表示了智能体在某状态下采取某动作的好坏,这是智能体在环境中获得的短期利益,这一评价指标只考虑了动作对当前状态的影响。但由于马尔科夫决策过程是一个序列决策过程,每一时刻的动作不仅会影响当前状态,还会对后续的环境状态产生影响。也就是说,当前时刻能够获得较多奖励的动作从长远来看也许并不是最佳的,而短期来看不太好的动作却也许能在未来带给智能体更多的奖励。因此智能体在决策时不能单单考虑这一时刻的奖励,而应该考虑到动作对未来的长期影响。为此,我们需要在奖励的基础上定义另一个评价指标来度量智能体所能获得的长远利益。
在强化学习中,这一评价指标被称为收益,它的定义为未来时刻里智能体所能获得的折扣奖励之和。在求和公式中,我们需要对未来每一时刻的奖励乘上一个折扣因子,并且越往后,衰减越大。为什么要这样做呢?直觉上来看,时间上越远,存在的不确定越多,对当前时刻的贡献也就越小,因此需要用一个折扣因子来描述不同时刻奖励对当前时刻的贡献程度。
在收益的基础上,我们可以为每一个状态-动作对定义一个价值,这个价值表示了在给定状态-动作对的条件下未来依据某策略做决策所能获得的平均收益,因此,它依据未来能获得的平均收益大小对某一策略下,给定状态-动作对的好坏进行了评价。这里的价值实际上也就对应着强化学习中经常提到的Q值。
最终智能体的目标就是学习到一个最优策略,使得智能体在任意状态下的价值最优,定义最佳策略下的动作价值函数为最优价值函数,也就是最优Q值。很显然,当我们已知了最优Q值时,每一状态下对应Q值最大的动作就是最佳动作。
因此,我们可以得出这样一个结论:求解最优策略也就等价于求解最优Q值。
强化学习算法分类
基于这样一个结论,最终,在强化学习中,求解最优策略的算法可以分为三大类。
基于价值估计的强化学习算法
第一类算法被称为基于价值估计的算法,刚刚我们提到求解最优策略等价于求解最优Q值,因此这一类算法的目标就是对所有状态-动作对下的最优Q值进行估计,最终任意状态下令最优Q值最大的动作即为最优动作。
Q-learning算法是最经典的强化学习算法,它针对的是离散状态、离散动作的情况,这里的离散指的是马尔科夫决策过程中状态和动作的数量都是有限的,在这种情况下,Q-learning直接用一个表格来描述所有的最优Q值。这里最优Q值的估计方法主要基于强化学习中一个重要的理论公式——贝尔曼方程,这个方程描述了不同状态-动作对的Q值之间的确定性等式关系。具体这个公式是怎么推导得到的,我就不细说了,总之根据这个公式,我们可以在智能体与环境交互的过程中,不断对表格中的值进行迭代更新,最终达到收敛状态。最后,针对每一个状态,我们只需要选择每一行最大Q值对应的动作就可以了。这种方法的局限性在于状态空间和动作空间都必须是离散的,当状态和动作数量变多时,表格会越来越大,最终导致Q值难以学习出来。
Deep-Q learning在Q-learning的基础上用一个神经网络来拟合状态到Q值之间的映射关系,此时,状态作为神经网络的输入,可以在连续范围内取值,最终输出得到的是该状态下对应每个动作的Q值,然后我们可以在其中选择一个令Q值最大的作为最优动作。在Deep Q-learning中,我们不需要像Q-learning一样把所有的Q值学习出来,而只需要学习一个神经网络,解决了Q-learning中状态必须连续且表格随状态数量增大这一问题。但是在deep Q-learning算法中,动作依然要求是离散的,并且当动作维度增大时,神经网络的规模会指数增加,这是基于价值估计算法的主要缺陷。
基于策略优化的强化学习算法
第二类算法被称为基于策略优化的强化学习算法,基于价值估计的算法是对最优Q值进行估计,而策略优化算法则直接对最优策略进行估计。
在强化学习中,策略分为两种,一种是随机性策略,此时我们需要对状态到最优动作概率分布之间的映射进行估计,然后从该概率分布中进行采样得到输出动作。
第二种策略为确定性策略,此时我们直接对状态到最优动作之间的映射进行估计。为了对策略进行优化,我们需要定义一个策略的性能函数作为优化目标,在强化学习中,这个性能函数通常被定义为一定策略下的平均收益。然后我们只需要依据优化目标对策略函数进行梯度上升,最终就可以得到最优策略。策略优化算法的特点是,神经网络的输出即为最优动作,因此这里的动作空间既可以是离散的也可以是连续的。在优化过程中,这里的性能函数通常通过一定的估计方法得到。
基于演员-评论家的强化学习算法
第三类算法被称为基于演员-评论家的强化学习算法,这一类算法结合了价值估计方法与策略优化方法的特点,同时对最优Q值以及最优策略进行学习,最终策略网络的输出即为最优动作。
在这一类算法中存在两个网络,第一个网络被称为Actor网络,该网络对智能体的策略,也也就是状态到最优动作之间的映射关系进行学习,因此也被称为策略网络,Actor网络的输出即为智能体的动作。第二个网络被称为Critic网络,这个网络的作用是对智能体的策略进行评价,它的网络输出为任意状态-动作对的Q值。
可以看出,Actor网络就像是一个执行者,用来输出动作,而Critic网络则对Actor输出的动作进行评价,然后Actor再根据Critic的评价不断地修正自己的策略,Critic则通过贝尔曼方程对自身网络进行迭代更新,最终我们就可以得到一个较好的Actor网络作为智能体最终的策略。
与策略优化方法一样,该类方法中包含一个策略网络,因此可以直接输出最优动作,动作空间既可以是离散的,也可以是连续的。
其他分类方法
刚刚我提到的三类算法是按照智能体的学习内容而划分的,实际上,强化学习算法还有许多种分类方法,例如按照策略类型可以分为随机策略算法和确定性策略算法,而按照训练样本的产生方式又可以分为同策略算法和离策略算法,按照网络的更新频率还可以分为蒙特卡洛方法和时间差分方法。我这里列举了几种比较常见的强化学习算法,每一种都同时属于多种类别,这些不同类别的区别在于训练方式的不同,但是他们的目标和希望得到的结果都是一样的,我们一般无法直接说哪一种类别的算法更好,如果我们只在乎训练结束后的策略,那么理论上这些算法都是可以用的,但是由于每种算法还包含了许多其他训练或者网络设计上的技巧,所以不同算法的性能有所区别。那么在实际应用时,我们要怎么从几十上百种算法中进行选择呢。我个人的理解是,在刚入门的时候,我们可以先用最基础的算法,例如DQN或者DDPG,来搭起自己的任务框架,同时加深对强化学习的理解。但两种算法比较简单,可能无法完成较复杂的任务,所以当我们真正需要解决一个任务时,我们就需要根据自身任务的特点,结合主流讨论中性能较好并且调参难度低的算法作为我们主要使用的算法进行学习。 首先强推一波觉得不错的李宏毅老师, 课程视频在B站:
(强推)李宏毅2021春机器学习课程_哔哩哔哩_bilibili以下的资料都来自李宏毅老师的视频, 关于题主问题的是在上面视频的第73P: 传送门:(强推)李宏毅2021春机器学习课程_哔哩哔哩_bilibili . 我在这里就简单做个整理:
环境(Env)指你想要让机器去交互的一个可互动环境, 交互的方式是函数调用.
环境的观察状态(Observation或state)是从环境提取出来的一组数据, 这组数据反映了Env的所有(能让机器观察)的状态. 能让机器看到多少状态是你来决定的, 一般是尽可能多的信息.
操作(Action)是从智能体发出的对Env的操作指令, 这个指令也是高度抽象过的, 比如小车的例子里的Action就只有一个变量, 0=不动, 1=向前推, 2=向后推.
智能体(Agent)你可以理解为代表人工智能或者算法的整合体, 它包含了神经网络以及和训练过程相关的一些函数. 里面比较复杂, 推荐拿我加过注释的资料看看, 地址在文末.
以上几个概念都是在训练神经网络的过程中抽象出来的, 流程大致是这样, Agent首先去观察环境的状态, 把这个状态交给神经网络就能预测出一个Action, 拿这个Action去和环境交互, 交互的结果就是产生了下一个状态. 如此不断循环. 在这个循环之中, Agent内部就会比对这个Action和产生的下一个状态来学习. 拿DQN举例, 给环境发一个值为1的Action, 看看结果是什么, 记录下来, 学习一下; 在下一次循环, 发一个值为2的Action, 看看结果是什么再记录下来, 学习一下, ....... 一直到学习结束, 这个神经网络及训练出来了. (文字只能解释到这样了, 再具体就要看代码了)
以上内容部分来自我的文章, 拿到资料会有代码和中文注释:
Coollen.MMX:在量化交易中使用神经网络算法(四) DQN初探
页:
[1]