线性方法是一种很好的价值函数拟合方式,不仅是因为他们有收敛性的保证,另外,他们在数据和计算方面都比较高效。
然而,是否会具有这样的优势,即效果是否会很好,很大程度上取决于我们如何选取用来表达状态的特征。
选择合适于任务的特征是将先验知识加入到强化学习系统的一个重要方式,直观的说,这些特征应该提取状态空间中最通用的信息。
例如我们要对几何对象进行评估,那么我们可以选取形状,颜色,大小或者功能作为特征。如果我们正在评估一个移动机器人的状态,那么特征应该包括位置、电池电量、最近的声纳读数等等。
线性形式的一个局限就在于其无法表示特征之间的相互作用,比如特征i和特征j仅仅在特征j不存在的情况才是最好的。
一个例子是,平衡杆任务中的角度和速度之间的关系,如果角度比较小,那么速度快的话速度是一个比较好的状态。反之,如果角度比较大了,速度比较快,那么杆容易掉下,那么这是坏的状态,所以速度的大小并不能很好的独立去评价一个状态的好坏。需要将两个状态结合起来去加入到特征中,下面是了解一些通用的方法。
之前在https://github.com/syyxtl/RL-learn中的random_walk_1000中用的就是状态聚合的方式,其实就是单一的利用其位置信息作为特征的构建,因为你的reward 只与你存在的位置有关。
代码:
https://github.com/syyxtl/RL-learn/blob/master/random_walk_1000_poly%26fourier_value_function.py
#多项式基 以及 傅里叶基
https://github.com/syyxtl/RL-learn/blob/master/random_walk_1000_tiling_value_function.py
#瓦片编码
强化学习 线性方法特征构造
最新推荐文章于 2022-08-15 12:59:33 发布