

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

# DeepAR 演算法的運作方式
<a name="deepar_how-it-works"></a>

在訓練期間，DeepAR 接受訓練資料集和選擇性的測試資料集。它會使用測試資料集來評估訓練模型。一般而言，資料集不必包含相同的時間序列。您可以使用對指定訓練集進行訓練的模型，對訓練集中時間序列的未來以及其他時間序列產生預測。訓練和測試資料集都包含一或更多個 (建議) 目標時間序列。每個目標時間序列都可以選擇性的與特徵時間序列的向量和分類特徵的向量建立關聯。如需詳細資訊，請參閱[DeepAR 演算法的輸入/輸出介面](deepar.md#deepar-inputoutput)。

例如，以下是使用 *i* 建立索引訓練集中的一個元素，該訓練集由目標時間序列 *Zi,t* 和兩個相關聯的特徵時間序列 (*Xi,1,t* 及 *Xi,2,t*) 組成：

![\[圖 1：目標時間序列及相關聯的特徵時間序列\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/ts-full-159.base.png)


目標時間序列可包含遺漏值，以時間序列中的斷行表示。DeepAR 僅支援未來已知的特徵時間序列。這可讓您執行 “假設” 藍本。例如：如果我以某種方式變更產品的價格，會發生什麼事？ 

每個目標時間序列也可以與多個分類特徵建立關聯。您可以使用這些特徵來編碼時間序列所屬的分組。分類特徵可讓模型了解群組的典型行為，用來增加模型的準確度。DeepAR 透過學習每個群組的內嵌向量 (用於擷取群組中所有時間序列的共通屬性) 來實作這一點。

## DeepAR 演算法中特徵時間序列的運作方式
<a name="deepar_under-the-hood"></a>

為了促進學習時間依存模式 (例如週末的峰值)，DeepAR 會根據目標時間序列的頻率自動建立特徵時間序列。它會使用這些衍生特徵時間序列，搭配您在訓練和推論期間提供的自訂特徵時間序列。下圖顯示兩個衍生時間序列特徵：*ui,1,t* 代表一天中的小時，而 *ui,2,t* 則代表星期幾。

![\[圖 2：衍生時間序列\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/ts-full-159.derived.png)


DeepAR 演算法會自動產生這些特徵時間序列。下表列出所支援基本時間頻率的衍生特徵。


| 時間序列的頻率 | 衍生特徵 | 
| --- | --- | 
| Minute |  `minute-of-hour`, `hour-of-day`, `day-of-week`, `day-of-month`, `day-of-year`  | 
| Hour |  `hour-of-day`, `day-of-week`, `day-of-month`, `day-of-year`  | 
| Day |  `day-of-week`, `day-of-month`, `day-of-year`  | 
| Week |  `day-of-month`, `week-of-year`  | 
| Month |  年中的月  | 

DeepAR 會透過從訓練資料集中的每個時間序列隨機抽樣數個訓練範例，來進行訓練。每個訓練範例都包括一對相鄰內容和具有固定預先定義長度的預測視窗。`context_length` 超參數會控制網路可以看到過去多久的時間，而 `prediction_length` 超參數則會控制可對未來多遠的時間進行預測。在訓練期間，演算法會忽略時間序列比指定預測長度短的訓練集元素。下圖呈現五個從元素 *i* 擷取，內容長度為 12 小時，預測長度為 6 小時的樣本。為求簡化，我們已省略特徵時間序列 *xi,1,t* 和 *ui,2,t*。

![\[圖 3：抽樣時間序列\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/ts-full-159.sampled.png)


為了擷取季節性模式，DeepAR 也會從目標時間序列自動傳送延遲值。在頻率為每小時的範例中，針對每個時間索引 (*t = T*)，模型會公開 *zi,t* 值 (發生在過去大約一天、兩天和三天)。

![\[圖 4：延遲時間序列\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/ts-full-159.lags.png)


進行推論時，訓練過的模型會接受目標時間序列做為輸入 (這些時間序列在訓練時不一定使用過)，並預測下一個 `prediction_length` 值的概率分布。由於 DeepAR 是以整個資料集進行訓練，因此預測會將從類似時間序列學習到的模式列入考慮。

如需 DeepAR 背後的數學資訊，請參閱 [DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks](https://arxiv.org/abs/1704.04110)。