如果我們想讓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,它控制每個時刻的訓(xùn)練量。 如果您希望長時間訓(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"消息時按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