

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

# Amazon SageMaker AI 中的 RL 環境
<a name="sagemaker-rl-environments"></a>

Amazon SageMaker AI RL 使用環境來模擬真實世界案例。指定環境的目前狀態及代理程式所採取的動作，模擬器便會處理動作的影響，並傳回下一個狀態及獎勵。當在真實世界中訓練代理程式不安全時 (例如操控一台無人機)，或是當 RL 演算法花費太多時間進行收斂時 (例如下西洋棋時)，模擬器便會很有用。

下圖顯示與一個賽車遊戲模擬器互動的範例。

![\[與一個賽車遊戲模擬器互動的範例。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/sagemaker-rl-flow.png)


模擬環境由代理程式及模擬器組成。此處，卷積神經網路 (CNN) 會使用來自模擬器的影像，產生動作來控制遊戲控制器。透過多次模擬，此環境會產生形式為 `state_t`、`action`、`state_t+1` 及 `reward_t+1` 的訓練資料。定義獎勵並不容易，且會影響 RL 模型的品質。我們希望提供幾個獎勵函式的範例，但也想要讓使用者能夠進行設定。

**Topics**
+ [在 SageMaker AI RL 中針對環境使用 OpenAI Gym 介面](#sagemaker-rl-environments-gym)
+ [使用開放原始碼環境](#sagemaker-rl-environments-open)
+ [使用商業環境](#sagemaker-rl-environments-commercial)

## 在 SageMaker AI RL 中針對環境使用 OpenAI Gym 介面
<a name="sagemaker-rl-environments-gym"></a>

若要在 SageMaker AI RL 中使用 OpenAI Gym 環境，請使用下列 API 元素。如需有關 OpenAI Gym 的詳細資訊，請參閱 [Gym 文件](https://www.gymlibrary.dev/)。
+ `env.action_space`—定義代理程式能採取的動作，指定每個動作是否連續或離散，並在動作為連續動作時，指定最小值及最大值。
+ `env.observation_space`—定義代理程式從環境接收到的觀察，以及連續觀察的最小值及最大值。
+ `env.reset()`—初始化訓練集。`reset()` 函式會傳回環境的初始狀態，而代理程式則會使用初始狀態來採取第一個動作。動作接著會重複傳送到 `step()`，直到集到達最終狀態為止。當 `step()` 傳回 `done = True` 時，集便會結束。RL 工具組會呼叫 `reset()` 來重新初始化環境。
+ `step()`—將代理動作做為輸入，並輸出環境的下一個狀態、獎勵、集是否已終止，以及一個 `info` 字典來通訊除錯資訊。環境需要負責驗證輸入。
+ `env.render()`—用於具備視覺化的環境。RL 工具組會在每一次呼叫 `step()` 函式後，呼叫此函式來擷取環境的視覺化。

## 使用開放原始碼環境
<a name="sagemaker-rl-environments-open"></a>

您可以在 SageMaker AI RL 中，透過建置您自己的容器，來使用開放原始碼環境 (例如 EnergyPlus 和 RoboSchool)。如需 EnergyPlus 的詳細資訊，請參閱 [https://energyplus.net/](https://energyplus.net/)。如需 RoboSchool 的詳細資訊，請參閱 [https://github.com/openai/roboschool](https://github.com/openai/roboschool)。[SageMaker AI 範例儲存庫](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/reinforcement_learning)中的 HVAC 和 RoboSchool 範例會示範，如何建立自訂容器以搭配使用 SageMaker AI RL：

## 使用商業環境
<a name="sagemaker-rl-environments-commercial"></a>

您可以在 SageMaker AI RL 中，透過建置您自己的容器，來使用商業環境 (例如 MATLAB 和 Simulink)。您需要管理您自己的授權。