贝尔曼方程是强化学习中的核心概念,它描述了一个状态的价值与其后续状态价值之间的关系。下面我用一种直观的方式来解释它的推导过程。高中生都能看懂~
关键概念
想象一个智能体在环境中做决策,比如玩一个棋盘游戏。有两个关键概念 回报 和 价值
回报
它从当前时刻 开始,直到游戏结束,获得的所有 奖励 用 表示 集合起来,形成一个总收益,这就是 回报 , 用 表示。由于未来的奖励不如眼前的奖励“实在”,我们会用一个 折扣因子 ( ,通常取一个小于1的数,比如0.9 ) 给未来的奖励打折。所以,折扣回报的计算公式是
可以理解为,每一步都存在一个奖励,当前状态下总回报是所有后续步骤奖励的总和,并且通过折扣因子反应及时奖励最“值钱”,越往后奖励价值越低。
价值函数
一局游戏的胜负有时靠运气,单次游戏的回报(总收益)偶然性很大。要客观衡量一个状态(比如棋盘上的某个局面)的 真正价值,我们需要看很多次游戏,计算这个状态出发所能获得的回报 期望,用高中知识来讲就是 当前状态 下,所有策略中能获得的 平均回报 。这个 期望(平均值) 就是该 状态 的 价值 。用公式表示就是:
其中:
:表示价值函数
:表示期望
:表示在 状态下的回报
建立状态间的联系
贝尔曼方程的巧妙之处在于,它把一个大问题(计算整个游戏的总价值)分解成了眼前的一步和之后的所有步。这就像把整盘棋的价值,看作是你走下一步棋立刻得到的分数,加上你走完这步棋后新局面的价值(但新局面的价值要打点折)
- 分解回报
我们把总回报 拆为两部分
- 带入价值函数
价值函数是回报的期望(平均值),所以我们将上面这个关系式代入价值函数的定义中
根据期望的运算法则,和的期望等于期望的和,所以上式可以拆开:
- 理解等号右边两项
- 第1项: 这是在状态 下,能获得的即时奖励的期望,即时奖励的期望正是奖励函数的输出,即
- 第2项:,这一项有点 tricky。它的意思是:在当前状态是 的前提下,下一个状态 的价值是多少? 这需要考虑从 出发,所有可能到达的下一个状态 ,以及到达每个 的概率。然后,对每个可能的 ,乘以它本身的价值 ,最后再求平均。这个过程可以借助 全概率公式 来理解。
- 利用马尔可夫性质
为了简化计算,我们假设环境具有“马尔可夫性”,即未来只取决于现在,与过去无关。这意味着,从 转移到 的概率只取决于 本身,和我们之前是怎么走到 的没关系。这个假设使得第二项可以清晰地写成
即对所有可能的下一个状态,用转移概率加权其价值
最终结论:贝尔曼方程
将上面的分析组合起来,我们就得到了著名的贝尔曼方程:
这个公式非常直观地告诉我们:
任何一个状态 的价值,都由两部分组成 :
1. 即时奖励:离开这个状态时立刻能获得的平均收益 。
2. 未来奖励的折扣价值:考虑所有可能到达的下一个状态 ,用到达 的概率 进行加权,再乘以 本身的价值 。因为这是未来的收益,所以整体要乘以一个折扣因子
矩阵形式
若一个马尔可夫奖励过程一共有 个状态,即 ,当我们考虑所有状态
我们将所有状态的价值表示成一个列向量 ,同理,将奖励函数写成一个列向量 。于是我们可以将贝尔曼方程写成矩阵的形式:
展开矩阵形式
得到
其中 是 的单位矩阵。如果 可逆,则价值向量的解析解为:
以上解析解的计算复杂度是 ,其中是状态个数,因此这种方法只适用很小的马尔可夫奖励过程
求解较大规模的马尔可夫奖励过程中的价值函数时,可以使用动态规划(dynamic programming)算法、蒙特卡洛方法(Monte-Carlo method)和时序差分(temporal difference)
一个简单例子
假设一个状态 的即时奖励是 2(),折扣因子 。从 出发,有 70% 的概率去到一个价值为 10 的状态 ,有 30% 的概率去到一个价值为 1 的状态 。
那么状态 的价值计算如下: