引用来自ShangtongZhang的代码chapter09/square_wave.py
使用Coarse Coding方法构造feature来比较不同参数对近似函数性能的影响
问题描述
这个例子是书上的Example 9.3: Coarseness of Coarse Coding:
使用Coarse Coding的方法建立近似函数去近似一个方波函数,即将方波函数的随机采样作为U_t来使用,通过修改区间之间的间隔、尺寸等参数来比较不同参数对Coarse Coding特征的泛化特性的影响。
9.5讲的几个feature构造方法,并不只是用于强化学习,在函数拟合也是可以适用的,即回归问题上也是适用的。话说本来value function approximation就是监督学习的思想。。。所以本质不要搞混了。
引入模块
1 | import numpy as np |
定义区间类
1 | # wrapper class for an interval |
定义需要估计的方波波形,以及随机抽样函数
1 | # square wave function |
定义Coarse Coding类来建立近似函数和更新方法
1 | # wrapper class for value function |
训练并绘制图表,比较不同参数的性能,这里只修改了样本数量和feature的width
1 | # train @value_function with a set of samples @samples |
10 samples
40 samples
160 samples
640 samples
2560 samples
10240 samples
可以看到feature-width对训练结果影响很大,width大对应board feature,泛化范围广,曲线较平坦;width小对应narrow feature,泛化范围窄,曲线毛刺比较多。总体的渐进效果影响不大,但是对具体state的泛化影响就比较大了。