網易互娛AI Lab技術主管:那些被強化學習解決的痛點( 二 )


比如我要出AABCCD這樣一個動作 , 打第一張牌就會有幾十種選擇 , 第二張牌也一樣 。 這么多選擇組合起來 , 樹型結構會使動作空間成指數級增長 。
我們的解決方案是把單步決策變成序列決策 。 也就是說 , 我們從游戲環境中得到狀態 , 讓AI決策第一張牌出什么 , 再把第一張牌和環境狀態輸入AI , 再做一次決策 , 之后的決策以此類推 。
最后 , 我們就可以輸出一個持續的決策 , 再統一返回到游戲環境中 。 這樣就可以把一步決策化為多步決策 , 把游戲空間從指數級降到常數級 。
我們對比一下強化學習跟行為樹的AI:在加入新卡牌之后 , 強化學習需要的時間明顯會比行為樹少很多 。 且行為樹只有3-5個等級 , 而強化學習具有100多個較為平滑的難度等級 。 另外 , 行為樹還可能存在較大的難度跳躍 , 而強化學習能做到遠高于玩家的水平 。
網易互娛AI Lab技術主管:那些被強化學習解決的痛點
文章圖片
我們也挑戰了更難的游戲 , 參加了NeurIPS舉辦的MineRLDiamond比賽,這個比賽已經舉辦三屆 , 每次都吸引了大量工業界、學術界的強隊參加 。 其目的就是在《MineCraft》中 , 從砍樹造工具開局 , 一直到實現挖掘鉆石的目標 。
比賽舉辦以來 , 基本上沒有隊伍能在這種環境中挖到鉆石 。 大多數隊伍都選擇了基于玩家數據訓練 , 比如模仿學習 , 或在模仿學習組上再進行強化學習 。
但官方提供的數據其實不多 , 玩家的水平也參差不齊 , 所以其中會有很多無效操作 。 我們也嘗試過用官方數據集訓練 , 實際效果并不好 。 那我們能不能直接用強化學習從零開始訓練呢?
可以 , 但要解決幾個難點:環境輸出以圖像信息為主 , 而圖像信息是3x64x64的圖片 , 其信息維度是非常大的 。 要AI去遍歷這么一個大空間的數據會非常困難 , 因此我們采用了CNN網絡 , 以盡量降低復雜度、提出一些關鍵特征 。
另外 , 這個比賽需要AI有長期規劃能力 。 比如它需要先從產木頭開始 , 產夠了木頭才能去做木鎬挖石頭 , 挖到石頭后制造石搞去挖鐵……要做出這樣一環扣一環的操作 , 需要AI在每個時刻都能知道自己的策略和下一步需要干什么 。 而在這么長的一段時間里 , 讓AI盲目探索、直接訓練 , 也會面臨巨大挑戰 。 我們做的主要工作 , 就是縮減它的探索空間 。
首先是動作編碼 , 我們會把動作精簡到只有20個 , 并根據當前局面屏蔽一些不需要的動作 。 這樣一來 , AI每次可選的動作就會非常少;
其次 , 跳幀也是一個關鍵點 。 通過跳幀 , 我們可以把本來很長的游戲壓縮成得較短 , 也讓AI需要做的決策數目大大縮小 。 這就讓我們能在較短時間內訓練出較好的效果 。
更重要的是 , 要設置合理的獎勵 。 原始的獎勵方法 , 是在第一次采集資源獲得獎勵之后不能再獲得獎勵 。 這樣的話 , 我們的AI可能就學不到要重復收集足夠資源這一點 。 但如果每次都有獎勵 , AI又可能會學出刷分行為 。
所以我們細致地調整了它的獎勵方法 。 比如一開始會需要較多木頭 , 后面就用不到了 。 所以我們一開始會給出重復獎勵 , 到一定程度后才停止 。 另外 , 挖鉆石的行為其實跟挖礦、挖石頭的操作類似 , 都要不斷挖掘 。 我們要鼓勵這樣的操作 , 所以挖石頭、鐵礦我們都會給出無限獎勵 。
通過這樣的策略 , 可以看到隨著AI迭代 , 它的累積回報和挖到鉆石的概率都在飛快上升 。 最后 , 我們以歷史最高分獲得了冠軍 , 也是比賽舉辦以來第一次有隊伍挖到鉆石 。

相關經驗推薦