
文章圖片

文章圖片

文章圖片
這是一個我已經(jīng)斷斷續(xù)續(xù)地研究了很長一段時間的項目 。 在此項目之前我從未嘗試過修改游戲 , 也從未成功訓練過“真正的”強化學習代理(智能體) 。 所以這個項目挑戰(zhàn)是:解決釣魚這個問題的“狀態(tài)空間”是什么 。 當使用一些簡單的 RL 框架進行編碼時 , 框架本身可以為我們提供代理、環(huán)境和獎勵 , 我們不必考慮問題的建模部分 。 但是在游戲中 , 必須考慮模型將讀取每一幀的狀態(tài)以及模型將提供給游戲的輸入 , 然后相應地收集合適的獎勵 , 此外還必須確保模型在游戲中具有正確的視角(它只能看到玩家看到的東西) , 否則它可能只是學會利用錯誤或者根本不收斂 。
我的目標是編寫一個能讀取釣魚小游戲狀態(tài)并完美玩游戲的代理 。 目標的結(jié)果是使用官方 Stardew Valley 的 modding API 用 C# 編寫一個自動釣魚的mod 。 該模塊加載了一個用 Python 訓練的序列化 DQN 模型 。 所以首先要從游戲中收集數(shù)據(jù) , 然后用這些數(shù)據(jù)用 Pytorch 訓練一個簡單的 DQN 。 經(jīng)過一些迭代后 , 可以使用 ONNX 生成一個序列化模型 , 然后從 C# 端加載模型 , 并在每一幀中接收釣魚小游戲的狀態(tài)作為輸入 , 并(希望)在每一幀上輸出正確的動作 。
釣魚迷你游戲這個代理是在SMAPI的幫助下編寫的 , SMAPI是Stardew Valley官方的mod API 。 API允許我在運行時訪問游戲內(nèi)存 , 并提供我所需要的一切去創(chuàng)造一個與游戲狀態(tài)進行交互并實時向游戲提供輸入的代理 。
在釣魚小游戲中 , 我們必須通過點擊鼠標左鍵讓“魚鉤”(一個綠色條)與移動的魚對齊 。 魚在這條豎線上無規(guī)律地移動 , 魚鉤條與魚對齊時 , 綠色條就會填滿一些 , 如果魚成功逃離綠色條就會開始變空 。 當你填滿綠色的條形圖時 , 你會釣到魚 , 當它綠條沒有時魚就跑了 。
強化學習問題定義
所以這里只需要每幀從游戲內(nèi)存中讀取這些特定屬性并將它們保存為在第 t 幀的狀態(tài) 。 通過API我們可以查看并從游戲內(nèi)存中讀取特定屬性的代碼 , 對于自動釣魚 , 需要在釣魚小游戲期間跟蹤的 4 個變量 ?!般^子”中心的位置、魚的位置、鉤子的速度和綠色條的填充量(這是獎勵?。?。游戲內(nèi)部使用的名稱有點奇怪 , 以下是讀取它們的代碼 。
/ Update State
// hook position
bobberBarPos = Helper.Reflection.GetField<float>(bar \"bobberBarPos\").GetValue();
// fish position
bobberPosition = Helper.Reflection.GetField<float>(bar \"bobberPosition\").GetValue();
// hook speed
bobberBarSpeed = Helper.Reflection.GetField<float>(bar \"bobberBarSpeed\").GetValue();
// amount of green bar filled
distanceFromCatching = Helper.Reflection.GetField<float>(bar \"distanceFromCatching\").GetValue();
前三個定義了我們的狀態(tài):
這是模型可以在每一幀上可以獲取的狀態(tài) , 要將其設置為強化學習問題還需要使用獎勵來指導訓練 。獎勵將是綠色條的填充量 , 這是里的變量名稱為 distanceFromCatching 。這個值的范圍從 0 到 1 , 正好非常適合作為獎勵 。
Replay MemoryReplay Memory是 Q-learning 中使用的一種技術(shù) , 用于將訓練與特定的“時間”去關(guān)聯(lián) 。所以需要將狀態(tài)轉(zhuǎn)換存儲在緩存中并通過緩存中隨機抽取批次來訓練模型而不是直接使用最新數(shù)據(jù)進行訓練 。為了訓練模型 , 我們需要 4 個數(shù)據(jù) , 分別是當前狀態(tài)、下一個狀態(tài)、采取的行動和獎勵:
- 觀眾|雙鴨山市首次通過云上直播迎新春音樂會
- 招聘|這一“國企”招聘不限學歷,面試通過就可以上崗,??粕鷻C會更大
- |80后手藝人用2022根樹枝做冬奧會雕塑:通過自己的手藝為冬奧會加油
- 冰墩墩$80后手藝人用2022根樹枝做冬奧會雕塑:通過自己的手藝為冬奧會加油
- |長城幣2角硬幣,流通過的收藏價值300元左右,你能找到嗎?
- 論述|陜西“非物質(zhì)文化遺產(chǎn)”全國征文大賽第四十九賽區(qū)第(1)批征稿初審通過名單
- 翡翠|翡翠原石如何通過皮殼判斷賭石種老和種嫩
- 童子$太上老君與菩提祖師的差距,已經(jīng)通過徒弟之間的對比顯現(xiàn)了出來
- 招商證券|如何提升面試通過率?教你一招,面試前把這些功課做好
- 高宗&清代用儒家道統(tǒng)強化統(tǒng)治合法性,以祀孔尊儒來貫穿知識分子的思想
