准备工作
作业十二是使用强化学习,完成Lunar Lander(月球着陆)任务,训练飞行器月球着陆,作业基于OpenAI的gym框架(只有linux系统可用)。作业过程需要助教代码,关注本公众号,可获得代码(包括解析代码,文末有方法)。
提交地址
https://ml.ee.ntu.edu.tw/hw12/,有想讨论沟通的同学可进QQ群:156013866。以下为作业解析。
Simple Baseline
方法:直接运行助教代码。助教代码使用的方法是Policy Gradient,运行代码的时候,可能会出现版本不兼容的情况,下面代码为我遇到的情况(老代码被注释)和修改方式。代码运行后,最后得到total rewards为:**-71.65**。
#torch.set_deterministic(True)
torch.use_deterministic_algorithms(True)
Medium Baseline
方法:Accumulate Reward。在simple baseline的基础上,将rewards改为累积的形式,代码如下。代码运行后,最后得到的total rewards为:8.49****。
rate = 0.99
......
while True:
......
seq_rewards.append(reward)
......
if done:
final_rewards.append(reward)
total_rewards.append(total_reward)
# calculate accumulative rewards
for i in range(2, len(seq_rewards)+1):
seq_rewards[-i] += rate * (seq_rewards[-i+1])
rewards += seq_rewards
Strong Baseline
方法:使用Actor to Critic。相比于Policy Gradient,Actor to Critic的模型后端有两个分支,一个预测action,一个预测rewards,loss函数也需要加入了预测rewards的损失,详细信息见答案代码。代码运行后,得到了一个比较幸运的的total rewards为:106.57****。
**Boss Baseline **
方法:使用Advantage Actor to Critic(A2C)。Actor to Critic的损失函数是老师课堂上说的3.5版本,以Critic的输出结果为baseline,A2C则是4.0版本,也就是”平均减去平均“,这种方式更合理,但是损失函数比较复杂,模型难训练,需要做参数调试,详细改动见答案代码。代码运行后,最后得到的total rewards为:128.11****。这个rewards是5次登陆的平均结果,提升不是很多,不过只看单个的话,发现经常出现很好的rewards,只是浮动比较大,跟模型不容易收敛有关。
作业十二答案获得方式:
- 关注微信公众号 “机器学习手艺人**” **
- 后台回复关键词:202212
版权归原作者 机器学习手艺人 所有, 如有侵权,请联系我们删除。