一、动态回归核心思想和原理
1. 核心思想:将原始问题划分成若干个重叠的子问题,递归求解子问题来推导出原问题的最优解。
强调:第一是复杂问题简单化的分解思想,大问题分解为小规模子问题,不是所有的问题都能用动态规划来解决,能分解是使用它的前提条件之一,并且分解过程必须符合最优性原理,也就是说它们自身是最优的,并且可以组合成整体问题的最优解。第二就是子问题之间必须存在重叠性,也就是说问题的求解过程中,同一个子问题可能会被多次计算,为了避免重复,动态规划会使用一种存储机制,比如数组或者表格来保存问题的最优解,以便进行查找和复用,这样就大大减小了计算量,提高了算法的效率,这是使用动态规划来求解问题的另一个前提条件。第三就是递归性,问题的分解往往采用递归的方式,递归是指在定义一个函数或者算法时调用自身的过程,基本问题是不断缩小问题的规模将复杂的问题转换为简单的情况或基本情况来求解,就像俄罗斯套娃一样,每个套娃里边都有一个更小的套娃。
2. 最优性原理(Principle of Optimality):也称为最优化原理,由贝尔曼提出用来解决多阶段决策的理论。一个过程的最优策略具有这样的性质,无论其初始状态及初始决策如何,对于前面决策所造成的某一状态而言,其后各阶段的决策序列必须构成最优策略。比如:一家人要想达到整个家庭的最佳状态,其中每个孩子的表现都应该是最佳的行为,换句话说每个孩子的最佳选择都是为了整个家庭的最佳利益,这样每个孩子的最佳决策就是子问题的最优解,整个家庭的最佳状态就是整个问题的最优解。
3. 动态规划的主要步骤:划分子问题、定义状态、构建状态转移方程、递归求解、存储中间结果。
3.1 划分子问题:将原来的问题划分为规模较小且互相重叠的子问题
3.2 定义状态:确定子问题的状态表示,这里的状态更加广义,与强化学习中环境的状态是有所区别的,这里的状态更加强调问题的一种情况。
3.3 构建状态转移方程:描述当前状态和下一状态之间的关系。
3.4 递归求解:通过递归的方式,从规模较小的子问题开始求解,逐步扩展到规模较大的问题,直到解决原来的问题。
3.5 存储中间结果:使用数据结构,比如数组、表格等来存储已经计算过子问题的解,以便能在后续计算中进行复用。
类比上台阶或者下台阶这种情形,想象你站在一个楼梯上,每次只能迈一步或者两步,你想直到到达楼梯的顶部有多少种不同的方式,首先可以把这个问题分解为子问题,到达第n阶台阶方式的数量取决于到达第n-1个台阶和到达第n-2台阶方式的数量。这是我们再来定义状态,假设f(n)表示到达第n阶台阶方式的数量。接着构建状态转移方程,根据分解的子问题,可以得到f(n)=f(n-1)+f(n-2)最后使用递推求解的方法,从已知的状态开始,逐步计算出到达每个台阶方式的数量,直到达到目标的台阶。
4. 动态规划和强化学习的关系
动态规划的发展历史比强化学习要早,范围要广。强化学习早期大量借鉴了动态规划的思想。动态规划方法通常假设环境模型已知,比较理想化。强化学习着力解决在不确定性环境中的决策问题。
5. 动态规划主要分类:
5.1 考虑时间步数是按照更新价值函数或策略函数时考虑的。单步更新是指只考虑当前时间步的奖励和下一时间步的状态。多步更新则可以考虑未来多个时间步的奖励和状态。
二、策略迭代
根据动态规划的思想,把一个复杂的问题分解为子问题,对于强化学习这样一个马尔科夫决策过程而言,在环境假定已知的情况下,也就是在下图这个PGM模型当中已知,两个子问题,一个是求策略价值函数或者动作价值函数,第二个就是求策略π。在策略迭代算法中这两个子问题有两个特殊的名字分别为,策略评估:求价值函数 策略改进:求更新策略
两个问题的本质及时在求价值函数和策略,还是在马尔科夫决策过程和PGM模型图中。策略迭代作为动态规划的一种常用方法,就是通过进行反复策略评估和策略改进两个步骤来逐步实现策略π的优化。
1. 算法步骤
1.1 初始化:为整个马尔科夫决策过程定义初始化策略,可以是随机策略或者是确定性策略。其指定了在每个状态下应该采取的动作。
1.2 迭代循环:
1.2.1 策略评估:通过求解贝尔曼方程来求解价值函数或动作价值函数。
1.2.2 策略改进:根据前一步计算得到的价值函数来更新策略,以便改善性能。具体来说每个状态选择可以最大化价值函数的动作作为新的策略。这个新的策略将再次用于策略评估,不断重读评估和改进两个步骤直到价值函数收敛为止。
1.3 最优策略:算法最终会找到一个最优的策略使得agent获得最大的累计奖励。
2. 策略评估:就是计算当前策略下的策略价值函数或动作价值函数,根据贝尔曼期望方程,我们可以得到在考虑动作影响的状态转移情况下,策略价值函数和动作价值函数如下:
2.1 示例
假设agent在一个4×4的网格世界中上下左右移动,状态空间是离散的,每个网格代表一个状态,每个状态下可以采取四个动作之一,除去起点和终点之后一共还有14个状态,转移概率方面通常假设agent执行一个动作之后,状态转移到下一个状态的概率是确定的。比如:如果在当前状态下选择向上移动,那么转移到上方的概率是1,转移到其他方向的概率是0。此外网格世界中的边界通常需要特殊的处理,如果agent在边界的时候执行越界的动作时候需要保持在原地。折扣因子在0-1之间,重视即时奖励则选择接近0的因子,如果重视长期回报则选择接近1的因子。假设初始策略实在任何状态下都采取随机的动作,也就是说选择上下左右的概率都是0.25。奖励值通常是由人为设定的,比如到达终点+10,为了鼓励agent能够尽快到达目标状态,可以对每个步骤施加一个负的奖励值,比如-1,如果在网格世界中存在障碍物,可以对障碍物的碰撞施加负的奖励值,然后使用策略评估公式,就可以计算当前策略下每个状态的价值函数。
3. 策略改进:目的是根据前面得到的价值函数来更新策略,进而提高agent的性能。由于价值函数有两种:策略价值函数和动作价值函数,因此改进的方法也有两类,不过总的来说都是去最大化操作,也叫贪心操作。在强化学习中,可以根据实际的需求和问题的性质,选择使用状态价值函数的策略改进还是动作价值函数的策略改进。通常情况下,我们关注整体的状态价值,而不是每个动作的价值,此时可以使用状态值函数的策略改进。如果关注每个状态下的具体动作价值时,可以选择Q函数来最大化。需要注意的是策略价值函数的策略改进和动作价值函数的策略改进并不是互斥的,某些情况下两种方法可以同时存在结合使用。
4. Q表格
是一种常用的强化学习算法中的数据结构,用于存储和更新动作价值函数。每个单元格表示一个状态和动作的组合,并存储相应的Q值。代表了在给定状态下采取特定动作的预期累计奖励。如果我们得到了Q函数、Q表格,也就得到了对于某个状态选取每行中的最大值对应的动作就是需要采取的动作。Q表格往往用于基于表格形的强化学习算法。需要注意的是,如果任务的状态空间和动作空间比较大的时候,Q表格的大小会迅速增加,可能会导致存储和计算上的挑战。因此对于复杂问题一般会使用函数逼近,比如神经网络来替代Q表格,近似Q函数。
5. 贝尔曼最优方程
把最大化操作与贝尔曼方程相结合,就是贝尔曼最优方程。
6. 迭代过程:通过反复策略评估和策略改进,直到收敛。
策略迭代通常适用于以下条件:环境模型已知,要求对环境有完整的了解,包括状态转移概率和即时奖励函数。状态空间和动作空间较小,规模大储存和计算开销高。迭代的次数要可以接受,每次都要更新价值函数和策略,并在环境中交互。最优策略要求准确,能够保证收敛。
三、价值迭代
价值评估:求价值函数
价值更新:更新价值函数,进而印象动作选择
策略迭代强调的是策略π,价值迭代中是以价值为中心,虽然每一步迭代中也会有动作更新,但是是直接根据价值选择更新动作,这个过程是确定性的,而没有去更新一个策略函数。要知道在策略更新中π是带有随机性的概率分布函数,换句话说都是更新动作,但策略迭代中是显式地更新策略,而价值迭代中是隐式更新策略。策略迭代中策略的更新是全局性的,价值迭代中策略的更新是局部的。
1. 算法步骤
1.1 初始化:状态值函数V(s)为任意初始值,可以是全0或者随机值。
1.2 迭代循环
1.2.1 价值评估贝尔曼期望方程计算价值函数
1.2.2 价值更新:最大化操作更新状态价值函数
重复以上两个步骤,直到收敛。
1.3 提取最优策略
2. 价值函数估计:在价值迭代中,价值函数的计算和策略评估的过程是相同的,都是使用贝尔曼期望方程来计算每个状态的价值函数。价值函数的更新就是直接找到Q函数的最大值,然后替换掉状态价值函数V(s)
3. 价值迭代和策略迭代的对比
价值迭代计算效率高,但收敛速度较慢,尤其状态空间较大时。
策略迭代更耗时,但能更快地收敛到最优策略
4. 价值迭代的适用条件
环境模型已知:每个状态转移的概率和奖励信号要求已知。
离散状态和离散动作空间:要求状态和动作都是可枚举的
长期累计奖励的优化:需要考虑未来回报,而不仅是即时奖励