View a markdown version of this page

AWS DeepRacer 動作空間和獎勵函數 - AWS DeepRacer

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

AWS DeepRacer 動作空間和獎勵函數

動作空間

在強化學習中,代理程式與環境互動時可用的所有有效動作或選項集稱為動作空間。在 AWS DeepRacer 主控台中,您可以在離散或連續動作空間中訓練代理程式。

離散動作空間

離散動作空間代表有限集中每個狀態的所有代理程式可能動作。對於 AWS DeepRacer,這表示對於每個增量不同的環境情況,代理程式的神經網路會根據來自其攝影機和 (選用) LiDAR 感應器的輸入,為車輛選取速度和方向。選擇僅限於預先定義的轉向角度和調節值組合分組。

在接近轉彎的離散動作空間中,AWS DeepRacer 車輛可以選擇加速或煞車,然後向左、向右或直行。這些動作定義為結合轉向角度和速度,為客服人員建立選項選單 0-9。例如,0 代表 -30 度和 0.4 m/s,1 代表 -30 度和 0.8 m/s,2 代表 -15 度和 0.4 m/s,3 代表 -15 度和 0.8 m/s,透過 9 以此類推。負度數將車輛向右轉,正度數將車輛向左轉,0 讓車輪保持筆直。

AWS DeepRacer 預設離散動作空間包含下列動作:

AWS DeepRacer 預設離散動作空間
動作號碼 方向盤 速度
0 -30 度 每秒 0.4 公尺
1 -30 度 每秒 0.8 公尺
2 -15 度 每秒 0.4 公尺
3 -15 度 每秒 0.8 公尺
4 0 度 每秒 0.4 公尺
5 0 度 每秒 0.8 公尺
6 15 度 每秒 0.4 公尺
7 15 度 每秒 0.8 公尺
8 30 度 每秒 0.4 公尺
9 30 度 每秒 0.8 公尺
持續動作空間

連續動作空間可讓代理程式從每個狀態的一系列值中選取動作。就像離散動作空間一樣,這表示每個增量不同的環境情況,代理程式的神經網路會根據來自其攝影機和 (選用) LiDAR 感應器的輸入,為車輛選取速度和方向。不過,在連續動作空間中,您可以定義客服人員挑選其動作的選項範圍。

在此範例中,接近轉彎的連續動作空間中的 AWS DeepRacer 車輛可以選擇從 0.75 公尺/秒到 4 公尺/秒的速度,然後向左、向右轉,或選擇從 -20 到 20 度的轉向角度直接轉彎。

離散與連續

使用連續動作空間的好處是,您可以編寫獎勵函數來訓練模型,以在軌道上特定點上激勵速度/轉向動作,以最佳化效能。從一系列動作中選擇也會產生速度和轉向值的平滑變更,在訓練良好的模型中,可能會產生更好的實際狀況。

在離散動作空間設定中,將客服人員的選擇限制為有限數量的預先定義動作,會讓您了解這些動作的影響,並根據環境 (賽道、賽車格式) 和獎勵函數來定義這些動作。不過,在持續動作空間設定中,客服人員會學習從您透過訓練提供的最小/最大界限挑選最佳速度和轉向值。

雖然為模型提供一系列值以供挑選似乎是更好的選項,但客服人員必須訓練更長的時間,才能學習選擇最佳動作。成功也取決於獎勵函數定義。

獎勵函數

當代理程式探索環境時,代理程式會學習值函數。值函數可協助您的代理程式在觀察環境之後判斷採取的動作有多好。值函數會使用您在 AWS DeepRacer 主控台中寫入的獎勵函數來為動作評分。例如,在 AWS DeepRacer 主控台的遵循中心線範例獎勵函數中,一個好的動作會將代理程式保持在軌道中心附近,並且分數高於錯誤的動作,這會將代理程式移離軌道中心。

隨著時間的推移, 值函數可協助客服人員學習增加總獎勵的政策。最佳或最佳政策會平衡客服人員探索環境所花費的時間量,以及其利用或充分利用政策透過經驗學到的內容。

在遵循中心線 AWS DeepRacer 範例獎勵函數範例中,代理程式會先採取隨機動作來探索環境,這表示它在保持在賽道中心方面沒有執行非常好的工作。隨著時間的推移,客服人員開始了解哪些動作會將其保持在靠近中心線的位置,但如果繼續採取隨機動作,則需要很長的時間來學習在整個圈的賽道中心附近。因此,隨著政策開始學習良好的動作,代理程式會開始使用這些動作,而不是採取隨機動作。不過,如果它總是使用或利用良好的動作,代理程式就不會進行任何新的探索,因為它不再探索環境。此權衡通常稱為 RL 中的探勘與入侵問題。

使用預設動作空間和範例獎勵函數進行實驗。探索所有動作後,請設計自己的自訂動作空間自訂獎勵函數,以運用您的知識。