如果我們想讓Agent來執(zhí)行的某個動作话瞧,簡單的演示給它看通常更加直觀惜辑,而不是試錯的方法來學(xué)習(xí)它化撕〉拭Γ考慮我們訓(xùn)練醫(yī)護(hù)兵NPC的示例:我們可以喂給醫(yī)護(hù)兵真實(shí)世界例子的觀察observations 以及 來自于游戲控制器的動作來指導(dǎo)醫(yī)護(hù)兵的行為业踏,而不是通過通過獎勵函數(shù)間接訓(xùn)練醫(yī)生。更具體地涧卵,在該模式中勤家,訓(xùn)練期間的Brain type被設(shè)置為Player,并且控制器執(zhí)行的所有動作都將被記錄(除了agent觀察之外)并將其發(fā)送到Python API柳恐。然后伐脖,模仿學(xué)習(xí)算法將使用來自人類玩家的這些(觀察-動作)對 來學(xué)習(xí)策略。 Youtube視頻鏈接(https://youtu.be/kpb8ZkMBFYs)需翻墻乐设。
使用行為克隆
可以使用各種可能的模仿學(xué)習(xí)算法讼庇,其中最簡單的一種是行為克隆。它的工作原理是收集教師的培訓(xùn)數(shù)據(jù)伤提,然后簡單地用它來直接學(xué)習(xí)策略巫俺,就像監(jiān)督學(xué)習(xí)圖像分類或其他傳統(tǒng)機(jī)器學(xué)習(xí)任務(wù)一樣。
為了在場景中使用模仿學(xué)習(xí)肿男,你需要的第一件事是創(chuàng)建兩個大腦介汹,一個是“老師”,另一個是“學(xué)生”舶沛。 我們假設(shè)Brain對象的名稱分別是“Teacher”和“Student”嘹承。
將“Teacher”Brain設(shè)置為Player模式,并正確配置輸入以映射到相應(yīng)的操作如庭。確保在Brain的屬性窗口中選中“Broadcast”叹卷。
設(shè)置“Student”Brain為External 模式撼港。
把Brain賦值給希望訓(xùn)練的Agents(一個Agent作為老師,至少一個設(shè)置為學(xué)生)骤竹。
在config/trainer_config.yaml中帝牡,為“Student”大腦添加一個條目。 將此條目的trainer參數(shù)設(shè)置為imitation蒙揣,將brain_to_imitate參數(shù)設(shè)置為Teacher大腦的名稱:“Teacher”靶溜。 另外,設(shè)置batches_per_epoch懒震,它控制每個時(shí)刻的訓(xùn)練量罩息。 如果您希望長時(shí)間訓(xùn)練Agent,請?jiān)黾觤ax_steps選項(xiàng)个扰。
使用mlagents-learn config/trainer_config.yaml --train --slow啟動訓(xùn)練過程瓷炮,并在屏幕上顯示“通過按Unity Editor中的"Start training by pressing the Play button in the Unity Editor"消息時(shí)按Unity中的??按鈕。
在Unity窗口中递宅,通過提供您希望看到的行為的“教師演示”來控制有Teacher Brain的Agent娘香。
觀看有Student Brain的Agent開始與演示內(nèi)容表現(xiàn)類似。
一旦學(xué)生Agent展示了所需的行為恐锣,請從命令行使用CTL + C結(jié)束培訓(xùn)過程茅主。
將生成的* .bytes文件移動到Assets文件夾的TFModels子目錄,并與Internal Brain一起使用土榴。
BC Teacher Helper
我們提供了一個方便的工具——BC Teacher Helper诀姚,該組件可以添加到 Teacher Agent。
該工具讓你使用鍵盤快捷鍵完成以下內(nèi)容:
- 開始和停止記錄經(jīng)驗(yàn)玷禽。如果您想要與游戲進(jìn)行交互但沒有讓agent從這些交互中學(xué)習(xí)赫段,這非常有用。 切換它的默認(rèn)命令是按鍵盤上的R矢赁。
2.重置訓(xùn)練緩沖區(qū)糯笙。這使您可以指示agent忘記其最近經(jīng)驗(yàn)緩沖區(qū)。 如果您希望讓他們快速學(xué)習(xí)新行為撩银,這非常有用给涕。 重置緩沖區(qū)的默認(rèn)命令是按鍵盤上的C.
原文連接:https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Training-Imitation-Learning.md