3.1
模型概述整體模型架構如圖3.1所示,首先將不同的時間序列分解為不同頻率之子 訊號,並把子訊號各別用於訓練單獨的 LSTM,再將 LSTM 之輸出通過密集層
(fully connected layer),最後通過 sigmoid 函數作下一時間點漲跌之分類,其中 LSTM 和密集層之層數可以複數疊加。
有關本實驗之整體流程如圖3.3表示。利用 SWT 將原始的股價訊號拆解為不 同頻率之分量時,à trous 演算法所能接受的訊號長度須為 2n,其中 n ∈ Z 為欲 分解之層數,否則須作零填充至最接近之 2 的冪次長度;而利用 EMD 來拆解訊 號時,其分解出之 IMF 數量則會依據訊號不同有所差異。考慮模型輸入序列須 為固定長度,需將訊號截斷處理,實驗中以尺寸 L = 16 之矩形窗(rectangular window)作截斷:
Si = f (i− L + 1), f(i − L + 2), ...f(i) (3.1)
Si 為第 i 組從原訊號 f 截斷後之子訊號,如圖3.2所示。
Figure 3.1: 結合小波轉換之 LSTM 展開圖
Figure 3.2: 利用窗函數截斷訊號示意圖
實驗中模型之訓練方式為監督式學習(supervised learning),為了創造學習過 程中所需之漲跌標籤(label),可藉由對每日收盤價進行一階差分並取其正負號而
得,並將其與開盤價、最高價、最低價、收盤價和成交量經 SWT 分解後所形成 之各子序列合併成為模型訓練之最小單位,即輸入前 L 天之資訊,預測第 L + 1 天的收盤價漲跌。
此次實驗 SWT 採用 Haar、Daubechies3、Coiflet3 和 Symlet3 四種不同的小 波基底,與文獻回顧中金融資料相關任務常用之母小波相同。另為提高模型收斂 速度和模型精準度,資料標準化採用最大絕對值標準化(max abs normalization),
將分解完之子訊號各自除以其絕對值最大者,藉以進行特徵縮放並保留訊號之正 負號。
另外,實驗中使用 Adam 方法作為權重最佳化之優化器,二元交叉熵(binary cross entropy)作為損失函數,若訓練中訓練集和驗證集之錯誤率相差開始擴大
Figure 3.3: 整體實驗架構流程圖
Table 3.2: 超參數搜尋範圍
LSTM Dropout Rate [0, 0.3] 連續
LSTM Recurrent Dropout Rate [0, 0.3] 連續
Dense 層數 [0, 3] 離散
Dense L2 正規化 [0, 0.3] 連續
Dense 神經元數 [4, 128] 離散
Dense 激勵函數 {ReLU, SELU, ELU, Leaky ReLU, Tanh} 離散
Dense Dropout Rate [0, 0.3] 連續
是否採用 Batch Normalization {True, False} 離散
Batch Size [80, 400] 連續
3.3
驗證資料處理在最佳化超參數時,若應用傳統的交叉驗證(crossvalidation)在時間序列的 資料上,可能會有未來資料洩漏之問題存在 [18],此處選擇使用滾動視窗驗證
(rolling window validation)方式來避免,如下圖所示:
Figure 3.4: 滾動視窗驗證
高度非穩態資料之訓練視窗大小需要謹慎選擇,太大容易學習到過多的無關 特徵,太小則容易使模型過度擬合。本研究採訓練視窗大小為 1000 個資料點,驗 證視窗大小為 250 個資料點,每次在時間軸上移動步距(step)為 1000 個資料點。