# 人工智慧導論 ## 1. 摘要 我們這組是想要透過 Unity (一種用 C# 撰寫的遊戲引擎,是跨平台的2D和3D遊戲引擎,由Unity Technologies研發) ,模擬狼 (次級消費者) 吃羊 (初級消費者) 、羊吃草 (生產者) 的生態環境,並比較強化學習訓練出的狼與基於策略(Policy based)的狼的行為差異。 ## 2. 前言簡介 我們希望這個模擬遊戲中各個角色的行為與現實相符,我們建立了以下規則。 - 通用法則 - 體重越重,移動速度越慢 - 體重會隨著時間減少(模擬代謝) - 羊的行為 - 會往草的方向移動,同時遠離狼 - 吃到 3 倍體重能生小羊,生產完重置到原始體重 - 靠近時會互相分享食物(互助行為) - 只能吃草 - 可以吃到草質量的100% - 狼的行為 - 只會往羊方向移動 - 吃到 5 倍體重能生小狼,生產完重置到原始體重 - 只能吃羊 - 只能吃到羊體重的30% ## 3. 相關研究 - 強化學習(RL)與基因演算法(GA)的比較 由於最近課堂上寫過基因演算法,本次專案又用到強化學習,而兩者皆是"電腦"這種無機物進行學習的方式,因此想在這裡想拿兩者來做比較。 我的觀點是基因演算法是回合制的,比較有一代接著一代的感覺, 每一輪世代中,每個基因彼此競爭,在優生學的天擇下得出優劣、 汰弱留強,同時進行突變,增加多樣性,嘗試打破目前的天花板。 而強化學習可以說是整個群族一起慢慢進化、漸漸變強, 且可以從"過程"中學習,如此一來就不用等到世代結束,即可提出修正, 這讓他可以使用在如 DOTA、星海爭霸...等一局時間長達數小時的遊戲上。我們能把 AI 放進同隊進行合作的訓練,也可以反過來,讓兩組 AI 進行對弈,以互相競爭來達到訓練的目的。 - Imitation Learning 除了讓狼自我學習外,我們也將 Policy based 的資料作為強化學習的參考訓練資料,讓狼直接學到追蹤羊的策略,加速訓練過程。 - Curiosity module 人類總是會對未知感到好奇,那人工智慧要如何做到呢 ? 當 agent 遇到以前從未見過的情境時,會獲得好奇模組所給的探索加分, 在熟悉這個情境後,好奇模組就會減少他所給的加分,直到 agent 再次探索新的事物。 好奇模組鼓勵 agent 暴露在新的、高度變化的環境,也能促使 agent 嘗試新的動作組合或 新的判斷方式,盡可能的多方嘗試,避免落入死胡同,加速它摸清楚未知領域所需的時間。 ## 4. 程式設計方式 - 輸入輸出 - 狼所獲取的資訊有 : 共 24 條直線感知器(視野),牠在地圖上的位置、旋轉角度、速度、以及體型 - 狼能採取做的動作 : 左右旋轉與前進,皆為連續變數 - Policy based 我們直接讓狼去掃描附近視野範圍內的羊,直接使狼的轉向轉成羊所在的方向 羊也是同樣道理,直接掃描視野範圍內的草 - 算方向的部分 : 利用外積運算,看 Z 軸方向決定轉向。 - ML based 由於我們需要讓狼擁有學習吃羊的能力,因此我們引入了Unity的 ML-Agents 的套件。 利用強化學習 ( reinforced leaning ),我們給予有吃到羊或者生下子代的狼獎勵 ( reward )、給予拖太久以導致於餓死的狼懲罰 ( penalty )。 在學習過程中,我們可以根據上述的獎勵與懲罰,去調整連結的權重, 以強化獲得較多獎勵或較少懲罰的連結, 這些權重的組合,能使後代的狼更有機會存活下來。 也就是說,強化學習是鼓勵 agent 在環境中去獲得更多獎勵。 同時,在電腦資源可以承受的情況下,可以同時進行多組的訓練過程, 如此一來可以在同時間內對多個 agent 進行大量訊練,加速修正神經網路,也能受益於變因的多樣性,而降低例外情況的影響,使訓練的結果更加穩定。 - reward - 吃到足夠食物而生下子代 : +15 - 傳宗接代對群體是好事 - 吃掉一隻獵物 : +1 - 可提高 agent 的存活時間 - penalty - 無法吃到足夠食物導致餓死 : -15 - 懲罰狩獵效率太糟糕的 agent - 走到邊界 : -0.03 - 不鼓勵 agent 依賴邊界的隨機傳送來吃獵物 - 每一個 step : -1/maxstep - 用來提高 agent 狩獵的效率 - Object Pooling 為了避免太多次重新生成生物,造成延遲,我們直接使用一個佇列(Queue),在遊戲一開始的時候生成一定數量的生物並放入這個佇列,且生物死掉的時候並不會直接刪除,而是暫時停用。當有生物要出生的時候,我們就直接使用佇列最前面的的生物,傳送到選定的位置,並啟用這個生物,再將這個生物放回佇列尾端。 ## 5. 結論 //等到有圖的時候再補 ## 6. 參考文獻 - 強化學習 - https://zh.wikipedia.org/wiki/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0 - 能量金字塔 - https://zh.wikipedia.org/wiki/%E7%94%9F%E6%85%8B%E5%A1%94