

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 訓練和評估 AWS DeepRacer 模型
<a name="create-deepracer-project"></a>

 當您的 AWS DeepRacer 車輛沿著賽道自行駕駛時，它會使用安裝在前方的攝影機擷取環境狀態，並採取動作來回應觀察。您的 AWS DeepRacer 模型是將觀察和動作映射至預期獎勵的函數。訓練模型的意思便是尋找或學習能最大化預期獎勵的函數，使最佳化模型能指定您車輛可採取的動作 (速度和方向盤角度對)，以沿著軌道，從開始位置移動到結束位置。

實際上，函數會由神經網路表示，而訓練網路會涉及針對指定的一系列觀察環境狀態及回應車輛的動作，尋找最佳網路權重。最適率的基礎條件會由模型的獎勵函數描述，鼓勵車輛採取合法及具生產性的移動方式，避免造成交通意外或違規。若車輛位於軌道上，簡易的獎勵函數可能會傳回獎勵 0；若脫離軌道，則傳回 -1；若到達終點線，則傳回 \$11。使用此獎勵函數，車輛若離開軌道，將得到懲罰，若到達目的地，則會得到獎勵。如果時間或速度不是問題，這可能是一個很好的獎勵函數。

 假設您有興趣讓駕駛中的車輛在不離開直線軌道的情況下，盡可能快速地行駛。隨著車輛加速和減速，車輛可能會向左或向右偏移來避開障礙物，或維持在軌道內。在高速行進期間進行過大幅度的轉彎會輕易地讓車輛脫離軌道。轉彎幅度過小則可能無法協助避免與障礙物或其他車輛碰撞。一般而言，最佳動作會是在低速期間進行較大幅度的轉彎，或是在較尖銳的曲線處縮小方向盤偏移的幅度。若要鼓勵此行為，您的獎勵函數必須針對高速時較小幅度的轉彎給予正值獎勵分數，並且 (或) 給予負值分數以懲罰在高速時進行較大幅度的轉彎。同樣地，獎勵函數可以針對沿著直線路徑加速，或是在接近障礙物時減速來給予正值獎勵。

獎勵函數是 AWS DeepRacer 模型的重要部分。您必須在訓練 AWS DeepRacer 模型時提供它。訓練會涉及沿著軌道從開始到結束的重複回合。在一個回合中，代理程式會與賽道互動，藉由將預期的累積獎勵最大化來學習最佳的行車路線。結束時，培訓會產生強化學習模型。在訓練之後，代理程式會透過在模型上執行推斷來執行自動駕駛，在任何指定的狀態中採取最佳動作。這可以在模擬環境中使用虛擬代理程式完成，或使用實體代理程式完成，例如 AWS DeepRacer 擴展車輛。

 若要在實務中訓練強化學習模型，您必須選擇學習演算法。目前，AWS DeepRacer 主控台僅支援近端政策最佳化 ([PPO](https://arxiv.org/pdf/1707.06347.pdf)) 和軟動作者評論 (SAC) 演算法。然後，您可以選擇支援所選演算法的深度學習架構，除非您想要從頭開始撰寫。AWS DeepRacer 與 SageMaker AI 整合，讓一些熱門的深度學習架構在 AWS DeepRacer 主控台中隨時可用，例如 [TensorFlow](https://www.tensorflow.org/)。使用架構可簡化訓練任務的設定和執行，並讓您專注在建立並加強問題特有的獎勵函數。

 訓練強化學習模型是一段反覆過程。首先，定義獎勵函數來一次涵蓋環境中代理程式的所有重要行為，是一種挑戰。其次，通常會調整超參數以確保滿意的培訓效能。二者都需要實驗。謹慎的方法是從簡單的獎勵函數開始，然後逐步增強它。AWS DeepRacer 可讓您複製訓練過的模型，然後使用它來快速開始下一輪訓練，藉此促進此反覆程序。在每次反覆執行時，您可以將一個或幾個更複雜的處理方式引入獎勵函數，來處理先前略過的變數，或可以有系統地調整超參數，直到結果收斂為止。

 如同機器學習中的一般實務，您必須評估訓練的強化學習模型，以確定其有效性，然後再將其部署至實體代理程式，以在現實世界情況中執行推斷。針對自動駕駛，可以根據車輛從開始到結束時留在特定軌道上的頻率，或其可在不離開軌道的情況下多快完成過程，來進行評估。AWS DeepRacer 模擬可讓您執行評估並發佈效能指標，以與其他 AWS DeepRacer 使用者在[排行榜](deepracer-racing-series.md)上訓練的模型進行比較。

**Topics**
+ [了解 AWS DeepRacer 支援的賽車類型並啟用感應器](deepracer-choose-race-type.md)
+ [使用 AWS DeepRacer 主控台訓練和評估 AWS DeepRacer 模型](deepracer-console-train-evaluate-models.md)
+ [AWS DeepRacer 獎勵函數參考](deepracer-reward-function-reference.md)