人工智能导论 第 7 章 · 实验二

← 返回实验目录

第 7 章 人工智能实践 · 实验二

让一根杆子别倒下

一辆小车上竖着一根杆子,这个任务叫倒立摆(CartPole)。每一步只能把小车往左推或往右推,杆子歪过 12 度或者小车跑出边界,这一局就结束。先由你亲手推,再试手写的规则,最后让 DQN 自己学。

建议用时30 分钟
对应课件第五节 第 37、40、44、46 至 48 页
一共几步四步,外加实验报告
交什么最后生成的实验报告

这 个 实 验 要 说 明 四 件 事

  1. 第 01 步这个任务的状态是四个数,动作只有往左推和往右推两个,每撑住一步得 1 分,这就是奖励。
  2. 第 02 步只看杆子往哪歪,撑不了多久。把杆子转动的快慢也算进去,一句话的规则就能次次撑满 200 步。
  3. 第 03 步状态太多,Q 表放不下,DQN 改用一个小神经网络。只靠每步 1 分的奖励,它也能学会把杆子扶住。
  4. 第 04 步同样的代码只换一个随机种子,练出来的成绩能差好几倍。强化学习的训练很不稳定。

说明:一局最多 200 步。课件第 43 至 46 页的 PPO 和 SAC 比 DQN 更新,本实验用结构更简单的 DQN。

01

你先自己推一推

对应 第五节 · 第 37、40 页

这一步看什么你现在就是智能体。右边四个数是状态,你按的方向是动作,每撑住一步得 1 分是奖励。

红虚线:边界细线:最多歪 12 度绿箭头:刚才往哪推
先点一下画面,再按键盘的左右方向键,也可以点右边的按钮。每推一下,时间走 0.02 秒,不能不推。

往哪推

① 小车位置(米)0.00
② 小车速度(米/秒)0.00
③ 杆的角度(度)0.0
④ 角速度(度/秒)0.0
按方向键或点按钮开始推

动 手 做

  1. 随便推几局,记下你最好的一局撑了几步。
  2. 再推几局,这次杆子往哪边歪,你就往哪边推。
  3. 看右边四个数怎样变,角度和角速度为正表示往右,为负表示往左。

应 该 看 到

随便乱按,二十步左右杆子就倒了。往杆子歪的一边推,能撑四十步左右,但越晃越厉害,最后还是会倒。

走迷宫时状态只有几十格。这里的状态是四个连续变化的小数,多到数不过来。

02

手写一条规则试试

对应 第五节 · 第 47 页

这一步看什么先不用学习算法,由人写规则。三条规则各推 100 局,比平均能撑几步。

选中的规则在这里一局接一局地推,画面放慢到三分之一。

选一条规则

—

100 局平均撑几步—
撑满 200 步的局数—
试过的规则
规则100 局平均

动 手 做

  1. 先看默认的随便推,记下 100 局平均撑几步。
  2. 点看角度,看杆子怎样越晃越大。
  3. 点看角度和角速度,比较三条规则的成绩。

应 该 看 到

随便推平均 22 步左右,看角度 41 步左右,看角度和角速度 100 局全部撑满 200 步。

杆子向右歪 2 度,却正以每秒 10 度往左转回来,2 + 0.5 ×(−10)= −3,小于 0,第三条规则往左推,只看角度的规则却往右推,总是慢半拍。课件第 47 页的奖励也同时算了角度和晃动快慢。

03

让 DQN 自己学一遍

对应 第五节 · 第 44、48 页

这一步看什么DQN(深度 Q 网络)用一个小神经网络代替 Q 表:输入状态,输出往左推、往右推各值多少分,哪边分高就往哪边推。

浅线:每局撑几步深线:最近 20 局平均虚线:随便推和手写规则
练完以后,下面的小车由练好的网络自己推。

训练

练到第几局0 / 180
最近 20 局平均—
随机推的比例—
练完考 100 局—
点“开始训练”

动 手 做

  1. 点开始训练 180 局,一般要等 5 到 20 秒,电脑越旧越慢。
  2. 边练边看随机推的比例,它从 100% 慢慢降到 5%。
  3. 练完后看下面的小车,记下练完考 100 局的成绩。

应 该 看 到

30 局到 85 局前后,网络还没学会,总往同一边推,每局只撑十来步,比随便推还差。它把每一步的经历存进经验池,随机抽出一批反复学,这叫经验回放(课件第 44 页)。之后曲线开始往上爬,160 局前后能到 150 步以上。

考试时它不再随机推,每一步选分高的一边,这一次 100 局平均能撑一百多步,还比不上第 02 步的第三条规则。

04

同样的代码,多练几次

对应 第五节 · 第 46、48 页

这一步看什么网络一开始的数值、训练时每次随机往哪推,都由随机种子决定。种子是一个编号,编号定了,随机的结果也就定了。这一步只换种子,代码和设置都不改。

每条线是一次训练中最近 20 局的平均。第 1 次是第 03 步练的那一次。

再练几次

考得最好—
考得最差—
等第 03 步练完
每次训练的结果
第几次种子曲线最后考 100 局
还没有记录

动 手 做

  1. 先在第 03 步练完一次。
  2. 点换一个种子,再练一次,等曲线长完。
  3. 再点两次,一共练四次,比较每次考 100 局的成绩。

应 该 看 到

几条曲线开头都趴在底部,七十局以后各走各的。有的一直往上涨,有的涨到 170 步以上又掉回六七十步。

考 100 局差得更远:好的一次 150 步以上,差的一次不到 20 步,比随便推还差,前后只换了种子。强化学习的训练很不稳定,所以课件第 46 页的曲线要画出多次实验的波动范围。

05

实验报告

整理数据,写下结论

前面四步的结果会自动写进报告,题目按你实际看到的情况回答。

一第 01 步中,你最好的一局撑了几步?这个任务的状态、动作、奖励分别是什么?
二第 02 步中,三条规则 100 局平均各撑几步,后两条规则差在哪里?
三第 03 步中,曲线大致是什么形状?练完考 100 局是多少步?
四第 04 步中,考 100 局最好和最差各是多少,这说明强化学习的训练有什么特点?
总结学习总结
没有人告诉 DQN 该往哪边推,它靠什么学会的?它和第 3 章第七节讲的 Q 表有什么相同、有什么不同?还有哪里没弄明白?建议不少于一百字。
0 字
会打开打印窗口,选“另存为 PDF”即可
人 工 智 能 导 论 上 机 实 验 报 告

让一根杆子别倒下:倒立摆与 DQN

第 7 章 人工智能实践 · 实验二
姓名—
学号—
班级—
完成日期—

一实验数据记录

自己推
—
手写规则
—
让 DQN 学
—

二多练几次的记录

第几次种子曲线最后(最近 20 局平均)练完考 100 局
未记录

三思考题

一、状态、动作、奖励
二、三条手写规则
三、DQN 的学习曲线
四、几次训练的差别

四学习总结

指导教师签字  
成绩  
保山学院 · 人工智能教研室 · 曹鼎鼎