【强化学习纲要】4 价值函数近似
作者:互联网
【强化学习纲要】4 价值函数近似
周博磊《强化学习纲要》
学习笔记
课程资料参见:https://github.com/zhoubolei/introRL.
教材:Sutton and Barton
《Reinforcement Learning: An Introduction》
4.1 价值函数近似基本原理
4.1.1 Introduction: Scaling up RL
之前我们遇到的都是状态很少的小规模问题,然后实际生活中很多问题都是大规模问题,如象棋( 1 0 47 10^{47} 1047states),围棋( 1 0 170 10^{170} 10170states),那么怎么用model-free的方法去估计和控制这些大规模问题的价值函数呢?
- 用查表的方式展现
- Q table,横轴是所有状态,纵轴是所有的action,通过查表,我们找到某列最大值的action是需要采取的action。但是如果状态非常多,table会非常大。
- 挑战:状态或者action太多;很难单独学习每个状态
- 怎样避免用一个table表征每个状态的模式?
- reward function or dynamics function
- value function, state-action function
- policy function
都是需要表示每一个状态的。
- 解决方案:用函数近似的方法估计
给定一个价值函数,我们可以用带参数的近似函数去近似它,如式子中用 w w w来拟合真实的价值函数。 - 好处:可以把见到的状态泛化到没有见到的状态,如果状态非常多,我们采样的状态是非常有限的。因此我们引入一个近似函数,通过插值的方法,把中间没有见到的函数估计出来。
- 用MC或TD learning的方法近似估计参数 w w w
价值函数的类别
类别1:输入是一种状态,输出是价值函数的值
类别2:对于q函数,将state和action作为输入,然后输出是给定状态和action的价值是多少
类别3:对于q函数,输入是状态,输出是对于所有哦action可能的q值,然后再输出后取argmax,就可以把最可能的action选出来
函数估计
多种表示形式:
- Linear combinations of features。把特征用线性的形式叠加出来。
- 神经网络。
- 决策树
- Nearest neighbors
主要使用前两类,因为是可微分的,我们可以很方便的优化近似函数里面的参数。
4.1.2 梯度下降法
- 有一个objective function J ( w ) J(w) J(w),怎样优化参数 w w w能够极小化 J ( w ) J(w) J(w)
- 定义
J
(
w
)
J(w)
J(w)关于参数
w
w
w的梯度:
- Adjust
w
w
w in the direction of the negative gradient,
α
\alpha
α是step-size(步长),得到极小值
Value Function Approximation with an Oracle
价值函数估计的时候也是用的梯度下降法。如果已知每个状态,应该如何优化价值函数?
- Oracle真值函数,假设我们知道真实的价值函数 v π ( s ) v^{\pi}(s) vπ(s)是多少,就可以去拟合逼近它。
- 因此可以把
J
(
w
)
J(w)
J(w)写成通过优化
w
w
w可以使得mean squared error极小化。
- 直接计算gradient,通过gradient descend可以迅速迭代然后找到可以极小化对应客观函数的
w
w
w
用特征向量描述状态
比如:
- Mountain Car
特征:车的位置,和速度 - Cart Pole
特征:位置,速度,木杆的角度,旋转的角度 - AlphaGo
特征:棋子位置,…每一个特征都是19*19的feature map,48个feature map叠加起来作为alphago的输入特征,传给价值函数
4.1.3 线性价值函数近似
- 用特征的线性叠加表示价值函数
状态转化成特征向量 x ( s ) x(s) x(s),参数为 w w w - 优化objective function,使得线性加和的函数和真实的函数尽量的接近,mean square loss尽量的小
- 取一个gradient
Update = StepSize × PredictionError × FeatureValue
这个形式只有线性模型近似价值函数的时候才有 - Stochastic gradient descent(随机梯度下降SGD)可以达到一个global optimum(全局优化)的值,因为是线性的,得到的local optimum(局部优化)接近global optimum(全局优化)。因此可以找到一个最佳的拟合价值函数 v π ( s ) v^{\pi}(s) vπ(s)的模型。
Linear Value Function Approximation with Table Lookup Feature
-
Table lookup feature是one-hot vector。
向量基本上都是0,只有一个元素是1,当前状态等于某一个状态,对应的那个元素会变成1,除了那个状态其他都是0. -
one-hot vector用线性模型来表示
参数向量 w 1 w_1 w1… w n w_n wn乘以状态state的feature -
由于是one-hot vector,可以得到拟合价值函数就等于当前对应于某个位置的 w k w_k wk;因此现在优化的就是去估计 w k w_k wk
4.2 价值函数近似for prediction
- 实际上,如果没有oracle(真值函数)如何去拟合价值函数呢?
- 回顾model-free prediction
- 给定一个policy,估计每个状态它的价值是多少。
- 使用MC或TD的方法来优化价值函数
- 可以再model-free的过程中,把函数近似放到loop里面去,同时进行优化:一边优化价值函数,一边利用优化好的价值函数优化价值函数的近似。
4.2.1 Incremental VFA(价值函数近似) Prediction Algorithms
- 假设我们有真值
v
π
(
s
)
v^{\pi}(s)
vπ(s)的话,可以计算gradient:
- 但是实际情况是并没有真值,并没有oracle,只有reward
- 因此我们直接用target来替代真值
- 对于MC,用
G
t
G_t
Gt去替代
- 对于TD(0),用TD target来替代,由两部分组成:实际走完这一步的reward;bootstrapping估计得到下一个状态的近似价值函数
- 对于MC,用
G
t
G_t
Gt去替代
4.2.2 Monte-Carlo Prediction with VFA
- 因为MC是采样得到的,因此 G t G_t Gt是unbiased无偏值的,但是对于真值是noisy sample
- unbiased的意思是:取
G
t
G_t
Gt的期望是可以直接等于真值的,是noisy的,要采样很多次。
- 因此可以通过MC的方法得到很多状态,每一个状态得到对应的return,这样就得到很多的training pair
- 得到training pair后,使用类似于监督的方法产生gradient;如果是线性的话,可以提出特征
x
(
s
t
)
x(s_t)
x(st)
- 利用MC产生的gradient可以对价值函数估计参数进行优化,这样就可以得到一个近似的价值函数。
4.2.3 TD Prediction with VFA
- TD target是biased偏置的
- 因为如果取target的期望的话是不等于
v
π
(
s
t
)
v^{\pi}(s_t)
vπ(st)的,因为TD target是包含了正在优化的参数
w
w
w的
- 也可以产生一些training pair
- 同样放入gradient里面
也叫做semi-gradient,不是真实的gradient,因为它包含优化的参数 w w w,不同的时刻 w w w不同所以gradient不一定很准。 - TD(0)如果采取的是线性特征 x ( s ) x(s) x(s),得到的是全局最优解。
4.3 价值函数近似for control
通过Generalized policy iteration达到
- Policy evaluation:approximate近似 policy evaluation,将q table用一个带参数
w
w
w的函数来近似
- Policy improvement:采用 ϵ \epsilon ϵ-greedy 改进算法
4.3.1 Action-Value Function Approximation
- 用一个函数去拟合价值函数
- 假设是知道ture action-value(oracle)
q
π
(
s
,
a
)
q^{\pi}(s,a)
qπ(s,a)的,因此可以比较容易的写出objective function
- 写出gradient,可以优化找到local minimum
Linear Action-Value Function Approximation
- 定义特征,给定状态和行为,定义一些对应的特征向量,来刻画状态是怎么被描述的
- 用线性拟合,定义好特征以后直接可以加和,元素的强度
w
j
w_j
wj是我们需要学习的参数
- 这样我们就可以用gradient descent写出来
gradient等于step-size乘以估计的差异乘以特征向量
4.3.2 Incremental Control Algorithm
实际上,这里没有oracle,因此
- 用MC的return
G
t
G_t
Gt去替代oracle
- 对于Sarsa,可以用Sarsa TD target去替代oracle
- 对于Q-learning,用Q-learning TD target去替代oracle,与Sarsa不同的是TD target是取一个max,估计q函数的近似并对应下一步的状态
s
t
+
1
s_{t+1}
st+1并取对应得a(action这个值)最大得值作为target一部分
这样就可以得到gradient,然后用这个gradient去更新q函数近似函数的参数。
Semi-gradient Sarsa for VFA Control
开始的时候初始化需要优化的
w
w
w;如果是结束状态的话就用return;如果不是结束状态的话就往前走一步,采样出A’,构造出它的TD target作为oracle,然后算出它的gradient;每往前走一步更新一次
w
w
w;S和A都更新。