对于一个强化学习 agent,它可能有一个或多个如下的组成成分:
-
策略函数(policy function)
,agent 会用这个函数来选取下一步的动作。 -
价值函数(value function)
,我们用价值函数来对当前状态进行估价,它就是说你进入现在这个状态,可以对你后面的收益带来多大的影响。当这个价值函数大的时候,说明你进入这个状态越有利。 -
模型(model)
,模型表示了 agent 对这个环境的状态进行了理解,它决定了这个世界是如何进行的。
1 policy
Policy 是 agent 的行为模型,它决定了这个 agent 的行为,它其实是一个函数,把输入的状态变成行为。这里有两种 policy:
从 Atari 游戏来看的话,策略函数的输入就是游戏的一帧,它的输出决定你是往左走或者是往右走。
如果是随机性策略的话,那么通过模型,得到的就是向左/向右的概率
如果是确定性策略的话,那么通过模型,得到的就是,通过向左向右的概率,最大的那个决策
1.1 随机性策略的优点
通常情况下,强化学习一般使用随机性策略
。随机性策略有很多优点:
-
在学习时可以通过引入一定随机性来更好地探索环境;
-
随机性策略的动作具有多样性,这一点在多个智能体博弈时也非常重要。采用确定性策略的智能体总是对同样的环境做出相同的动作,会导致它的策略很容易被对手预测。
2 价值函数
价值函数是未来奖励的一个预测,用来评估状态的好坏。
价值函数里面有一个 discount factor(折扣因子)
,我们希望尽可能在短的时间里面得到尽可能多的奖励。
如果我们说十天过后,我给你 100 块钱,跟我现在给你 100 块钱,你肯定更希望我现在就给你 100 块钱,因为你可以把这 100 块钱存在银行里面,你就会有一些利息。
所以我们就通过把这个折扣因子放到价值函数的定义里面,价值函数的定义其实是一个期望,如下式所示:
s表示状态
表示一个策略函数
表示状态是s的时候,使用策略
的价值函数
表示t时刻的状态是s
表示t时刻的收益
指t时刻状态是s的时候,使用 策略
的期望收益
其中
也就是说,是t之后时刻的reward经过折扣之后的总和
这里的γ表示折现因子,t+1时刻的1等于t时刻的γ
所以这里的期望相当于,t+1时刻的收益折算到t时刻的收益(乘以一阶折现因子γ);加上t+2时刻的收益折算到t时刻的收益(乘以二阶折现因子
);一直加到∞时刻的收益折算到t时刻的收益
注:这里的期望,是action的期望。每个状态选取的action都不是确定的,相反,各个action都是以一定的概率选取的。(同时每一步进入的state,在很多情况中,也是不确定的,这两个因素是Gt的不确定性因素)
2.1 Q函数
我们还有一种价值函数:Q 函数。Q 函数里面包含两个变量:状态和动作,其定义如下式所示:
大体上的参数和前面的V类似,唯一的区别是,V只考虑了状态s这一个因素;Q考虑了当前状态s和当前的行为a两个因素。
你未来可以获得多少的奖励,它的这个期望取决于你当前的状态和当前的行为。这个 Q 函数是强化学习算法里面要学习的一个函数。因为当我们得到这个 Q 函数后,进入某一种状态,它最优的行为就可以通过这个 Q 函数来得到。
2.1.1 V函数与Q函数的关系
3 model
第三个组成部分是模型,模型决定了下一个状态会是什么样的(以及如果你选择了这个状态的话,你会得到多大的奖励),就是说下一步的状态取决于你当前的状态以及你当前采取的行为。它由两个部分组成,
当我们有了这三个组成部分过后,就形成了一个 马尔可夫决策过程(Markov Decision Process)
4 以走迷宫为例
我们来看一个走迷宫的例子。
- 要求 agent 从 start 开始,然后到达 goal 的位置。
- 每走一步,你就会得到 -1 的奖励。
- 可以采取的动作是往上下左右走。
- 当前状态用现在 agent 所在的位置来描述。
如果采取的是
基于策略的(policy-based)RL
,当学习好了这个环境过后,在每一个状态,我们就会得到一个最佳的行为。比如说现在在第一格开始的时候,我们知道它最佳行为是往右走,然后第二格的时候,得到的最佳策略是往上走,第三格是往右走。通过这个最佳的策略,我们就可以最快地到达终点。
如果换成
基于价值的(value-based)RL
这个算法,利用价值函数来作为导向,我们就会得到另外一种表征,这里就表征了你每一个状态会返回一个价值。比如说你在 start 位置的时候,价值是 -16,因为你最快可以 16 步到达终点。因为每走一步会减一,所以你这里的价值是 -16。
当我们快接近最后终点的时候,这个数字变得越来越大。在拐角的时候,比如要现在在第二格 -15。然后 agent 会看上下,它看到上面值变大了,变成 -14 了,它下面是 -16,那么 agent 肯定就会采取一个往上走的策略。所以通过这个学习的值的不同,我们可以抽取出现在最佳的策略。