RNN最大化條件概率參數模型預測時間序列
最大條件概率
設定訓練序列對輸入序列,輸出序列為(兩個序列長度不固定相等)。一個標準的RNN計算序列到序列通過迭代下公式:
其中為激活函數,迭代上面的公式序列到序列的RNN參數模型估計最大的序列生成條件概率,即:
通過推斷,給定的輸入序列學習到的參數概率最大的估計序列被輸出
對於一個全A股市場收益率序列預測模型尋找最優的序列意味著巨大的計算資源需求,按照直接演算法這意味著巨大的計算量,由於這裡不是介紹數值優化器的短文,關於具體求解技巧略。
節點激活函數
最初模型的激活函數採用sigmoid函數但對於長序列依賴問題和序列到序列的非單調對應關係使得模型性能表現較差。
1) Long Short Term Memory通過設計門控制單元處理長期關係依賴問題,在本文構件使用原始控制單元,公式如下:
2) Gated Recurrent UnitGRU連接輸入門和遺忘門控為更新門控,並連接單元狀態和隱藏狀態,在某些應用方面保證極高的學習效果的前提下非常高效的降低了LSTM的計算量。
3) Neural Turing Machines
NTM通過添加外緩存結構有效解決了LSTM中長序列信息丟失問題。由於本文後面的內容與NTM聯繫不多,這裡不對NTM過多描述。
網路推斷模型
1) ResNet
stacked RNN結構就是多層RNN模型疊加,下一層的輸出作為上一層的輸入,在encoder-decoder可以上一層用輸出或者隱藏狀態當作下一層的輸入。
ResNet:設i layer 的輸入為X,輸出為, 則下一層的輸入為 這種殘差結構設計可以有效加深stacked LSTM的縱向層數。
2) Gird2d LSTMGrid LSTM 是吸收Stacked LSTM和Multidimensional LSTM兩種LSTM單元間網路結構形成的新演算法設計。相對於Stacked結構,Grid2d使用維度概念代替Stacked裡面的深度概念(層數),將深度構建為另一個維度的序列,即轉換多層LSTM為x,y維度的多維度LSTM網格結構。實驗顯示,Grid相對於Stacked效果有明顯提升。
具體操作方法如下圖,將多維度LSTM放在一個格子裡面算成一步,在第一個維度運行LSTM激活函數然後將維度一的輸出和時刻i的輸入合併為維度二的在時刻i的輸入,更多維度依此進行。Grid2d LSTM網路拓撲結構設計的特點是相對於常規Stacked RNN結構在深度方向的上添加了記憶流動渠道,為雙通道信息流。
自適應計算時間演算法是一種允許神經網路常態性的學習在輸入和輸出之間需要執行多少計算步驟的演算法,根據具體問題的複雜度動態調整模型使用的計算量,該網路結構主要針對如下問題設計:
RNN的計算時間由給定問題的序列長度和設計者指定,無法自行變動適應具體問題
具有高度複雜變化的序列數據處理
研究表明,在條件受限無法加深RNN模型深度的情況下,拉成RNN時間軸長度也能夠提升RNN精度
上圖顯示了ACT模型通過嵌套包裹RNN單元來實現自適應計算時間的調整的操作方法,兩條虛線之間的時間展開對應傳統RNN模型的時刻i的一步計算,相當於傳統RNN模型在時刻i也就是序列位置i只進行一次計算,而ACT在時刻i或者序列位置i可以自行調整計算次數提升模型泛化效果。
標準RNN迭代公式如下:
ACT修改RNN迭代公式為:
即在時刻t進行n次迭代計算,並使用halting probability unit決定每個輸入步的更新量:
並設置最大迭代限制N防止網路在某步進程中無限制迭代計算,
最終在時刻t的更新量為:
通過使用包含思考代價的複合損失函數,該模型被設計為鼓勵神經網路快速進行判斷而不是一味的追求精度消耗大量計算資源。
4) Neural GPU
從數據集學習具體的演算法是神經網路設計的初衷,對於能夠學習演算法的神經模型,必須能夠運行必要數量的計算步驟。上述的模型可以輸入序列對中學習到需要線性計算步驟(時間)的演算法,但是對於需要超線性運算時間的演算法表現很差,在處理多位數字乘法演算法學習的測試中,GridLSTM和NerualGPU表現較佳。但是NerualGPU和GridLSTM的具體使用網路模型往往非常深入,並且具有精細的架構,這使得最小化訓練誤差的問題對於隨機梯度下降是非常具有挑戰性的。
需要超線性數量的計算操作的任務不能通過只能執行線性數計算操作的神經體系來解決,表列出了幾種不同的神經網路架構可以執行的計算操作的數量。
GridLSTM和NeruralGPU對輸入序列長度為n的任務執行的計算量,這是一個理想的屬性,因為這意味著該模型可以學習對輸入序列計算運行時間超線性增長的演算法,例如整數乘法。深度拓展(傳統RNN中的疊加多層概念)結構NerualGPU迭代公式為
其中的假想圖片(mental image)是對一個標準的conv2d卷積的數據操作格式為 輸入數據[batch, in_height, in_width, in_channels] 相對應的卷積核數據形狀為[filter_height, filter_width, in_channels, out_channels],在上面的公式中卷積中是將RNN序列中在時刻t的輸入變數後置於卷積通道數據位上了,如RNN輸入數據格式為[batch, in_length, in_width] 其中in_width為股票i在時刻t對應的多因子歸一化數據,調整為[batch, in_length, w, in_width]數據格式,其中w維度擴展初置0並且在最終只提取w維度第一列的數據。
The Extended Nerual GPU
NerualGPU模型在後續研究中被添加了主動記憶解碼過程,將原始演算法的最終假想圖片設定為decoder解碼器的起始點。在主動記憶解碼器(active memory decoder)中,使用一個單獨的輸出緩存張量(output tape tensor)將解碼器設計為,t時刻的隱藏狀態受到上一時刻輸出值:解碼器在時刻t的運算公式為:
在解碼器計算時刻k輸出緩存張量p更新k位置的tensor值為該時刻的輸出列向量。
注意,The Extended Nerual GPU結構設計中雖然使用tape結構引入RNN attention 機制,但是在tape數據格式具體操作中採用在未得到數據前置0的方式進行處理,不會使用時間序列中的未來數據。
5) Pointer Network
Pointer Network本意是 簡化attention機制的計算公式,但是這個公式組合簡化之後可以剝離encoder-decoder結構,可以直接拿到多層LSTM上面使用,我試了一下,效果還不錯。
注意上面的公式,encoder在decoder時間步i將所有的encoder 序列j全面編碼計算指針網路,這裡如果直接使用時間序列會用到未來數據,注意這裡可以參考上面NeuralGPU論文裡面的處理方法空置方法或者在編碼的地方設置一個條件選擇即可。當然也可以用作橫面數據回歸,不過根據因素排序股票通常沒有特別明顯的嬗變關係,可以適當使用分組的方法處理。
附錄
Encoder&Decoder
Encoder-Decoder 結構一般用來處理神經機器翻譯方面,如上圖所示,對一個英-漢句子互譯的任務可以認為是sequence to sequence的具體案例,通過encoder將輸入序列進行編碼處理,將RNN最後一個隱藏狀態矩陣當作信息緩存傳送到decoder進行RNN解碼翻譯成對應的語句詞向量。由上圖可見對於傳統的encoder-decoder結構,encoder只是將最後一個隱藏狀態矩陣傳遞到decoder這造成了神經翻譯模型的性能瓶頸,attention機制通過軟對齊方法將更多的encoder信息流向decoder,提高模型整體性能。由於在結構設計Encoder-Decoder提取全輸入序列的信息,不便於直接用於時間序列的預測,這裡附錄是考慮多數的sequence to sequence是基於encoder-decoder結構處理NLP為假設應用進行設計的,所以單從時間序列角度考慮可能不容易快速理解。代碼示例
Grid2dLSTM 構建高抽象的多因子股票時間序列預測模型
Adaptive Computation Time for Recurrent Neural Networks
NeuralGPU卷積與RNN結合超線性計算時間多因子時間序列預
tensorflow 筆記6 RNN 時間序列預測
引用
Pointer Networks
NEURAL GPUS LEARN ALGORITHMS
EXTENSIONS AND LIMITATIONS OF THE NEURAL GPU
Can Active Memory Replace Attention?
NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
GRID LONG SHORT-TERM MEMORY
A WAY OUT OF THE ODYSSEY: ANALYZING AND COBINING RECENT INSIGHTS FOR LSTM
Network In Network
Adaptive Computation Time for Recurrent Neural Networks
A Critical Review of Recurrent Neural Networks
Sequence to Sequence Learning with Neural Networks
Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
推薦閱讀:
※量化策略系列教程:18MACD策略
※掘金量化擂台賽
※【量化】均值回歸入門
TAG:神经网络 | 量化 | 深度学习DeepLearning |