一辆小车上竖着一根杆子,这个任务叫倒立摆(CartPole)。每一步只能把小车往左推或往右推,杆子歪过 12 度或者小车跑出边界,这一局就结束。先由你亲手推,再试手写的规则,最后让 DQN 自己学。
说明:一局最多 200 步。课件第 43 至 46 页的 PPO 和 SAC 比 DQN 更新,本实验用结构更简单的 DQN。
这一步看什么你现在就是智能体。右边四个数是状态,你按的方向是动作,每撑住一步得 1 分是奖励。
随便乱按,二十步左右杆子就倒了。往杆子歪的一边推,能撑四十步左右,但越晃越厉害,最后还是会倒。
走迷宫时状态只有几十格。这里的状态是四个连续变化的小数,多到数不过来。
这一步看什么先不用学习算法,由人写规则。三条规则各推 100 局,比平均能撑几步。
—
| 规则 | 100 局平均 |
|---|
随便推平均 22 步左右,看角度 41 步左右,看角度和角速度 100 局全部撑满 200 步。
杆子向右歪 2 度,却正以每秒 10 度往左转回来,2 + 0.5 ×(−10)= −3,小于 0,第三条规则往左推,只看角度的规则却往右推,总是慢半拍。课件第 47 页的奖励也同时算了角度和晃动快慢。
这一步看什么DQN(深度 Q 网络)用一个小神经网络代替 Q 表:输入状态,输出往左推、往右推各值多少分,哪边分高就往哪边推。
30 局到 85 局前后,网络还没学会,总往同一边推,每局只撑十来步,比随便推还差。它把每一步的经历存进经验池,随机抽出一批反复学,这叫经验回放(课件第 44 页)。之后曲线开始往上爬,160 局前后能到 150 步以上。
考试时它不再随机推,每一步选分高的一边,这一次 100 局平均能撑一百多步,还比不上第 02 步的第三条规则。
这一步看什么网络一开始的数值、训练时每次随机往哪推,都由随机种子决定。种子是一个编号,编号定了,随机的结果也就定了。这一步只换种子,代码和设置都不改。
| 第几次 | 种子 | 曲线最后 | 考 100 局 |
|---|
几条曲线开头都趴在底部,七十局以后各走各的。有的一直往上涨,有的涨到 170 步以上又掉回六七十步。
考 100 局差得更远:好的一次 150 步以上,差的一次不到 20 步,比随便推还差,前后只换了种子。强化学习的训练很不稳定,所以课件第 46 页的曲线要画出多次实验的波动范围。
前面四步的结果会自动写进报告,题目按你实际看到的情况回答。
| 第几次 | 种子 | 曲线最后(最近 20 局平均) | 练完考 100 局 |
|---|---|---|---|
| 未记录 | |||