準(zhǔn)備工作
作業(yè)十二是使用強(qiáng)化學(xué)習(xí),完成Lunar Lander(月球著陸)任務(wù),訓(xùn)練飛行器月球著陸,作業(yè)基于OpenAI的gym框架(只有l(wèi)inux系統(tǒng)可用)。作業(yè)過程需要助教代碼,關(guān)注本公眾號(hào),可獲得代碼(包括解析代碼,文末有方法)。
提交地址
https://ml.ee.ntu.edu.tw/hw12/,有想討論溝通的同學(xué)可進(jìn)QQ群:156013866。以下為作業(yè)解析。
Simple Baseline
方法:直接運(yùn)行助教代碼。助教代碼使用的方法是Policy Gradient,運(yùn)行代碼的時(shí)候,可能會(huì)出現(xiàn)版本不兼容的情況,下面代碼為我遇到的情況(老代碼被注釋)和修改方式。代碼運(yùn)行后,最后得到total rewards為:-71.65。
#torch.set_deterministic(True)
torch.use_deterministic_algorithms(True)
Medium Baseline
方法:Accumulate Reward。在simple baseline的基礎(chǔ)上,將rewards改為累積的形式,代碼如下。代碼運(yùn)行后,最后得到的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的模型后端有兩個(gè)分支,一個(gè)預(yù)測(cè)action,一個(gè)預(yù)測(cè)rewards,loss函數(shù)也需要加入了預(yù)測(cè)rewards的損失,詳細(xì)信息見答案代碼。代碼運(yùn)行后,得到了一個(gè)比較幸運(yùn)的的total rewards為:106.57。
Boss?Baseline?
方法:使用Advantage Actor to Critic(A2C)。Actor to Critic的損失函數(shù)是老師課堂上說的3.5版本,以Critic的輸出結(jié)果為baseline,A2C則是4.0版本,也就是”平均減去平均“,這種方式更合理,但是損失函數(shù)比較復(fù)雜,模型難訓(xùn)練,需要做參數(shù)調(diào)試,詳細(xì)改動(dòng)見答案代碼。代碼運(yùn)行后,最后得到的total rewards為:128.11。這個(gè)rewards是5次登陸的平均結(jié)果,提升不是很多,不過只看單個(gè)的話,發(fā)現(xiàn)經(jīng)常出現(xiàn)很好的rewards,只是浮動(dòng)比較大,跟模型不容易收斂有關(guān)。
作業(yè)十二答案獲得方式:
-
關(guān)注微信公眾號(hào) “機(jī)器學(xué)習(xí)手藝人”?文章來源:http://www.zghlxwxcb.cn/news/detail-491781.html
-
后臺(tái)回復(fù)關(guān)鍵詞:202212文章來源地址http://www.zghlxwxcb.cn/news/detail-491781.html
到了這里,關(guān)于李宏毅2022機(jī)器學(xué)習(xí)HW12解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!