PonderDNC處理高頻長時間序列模型簡介
ACT模型通過在每時間步(時間序列節點)進行多次計算來模擬複雜問題的思考過程。這種演算法尤其有價值在使用包含外存儲器的RNN變種(如DNC、NTM等)計算架構處理長時間序列的時候。
下面簡單形象的介紹一下本文模型(這不是很準確的描述,但是足夠形象)。我們假設VanillaRNN模型為一個考生,在進行英語聽力考試,這個考生被要求「干聽」,也就是不能使用紙筆記錄,並且所有的聽力內容問題和答案全部都是以口頭形式進行的。當然在排除天縱奇才的情況下,這個考生的答案是慘不忍睹的。
下面我們來看第二個名叫LSTM的考生,這個考生在進行聽力考試的時候有一塊磁鐵畫板,可以記錄一定量的信息。但是這個考生在超過30min的聽力考試中只能使用這個畫板記錄一點點信息,如果想要寫入新的信息就必須要清除之前的信息。也就是這個叫做LSTM的考生可以記錄有限的信息。當然對於長時間的聽力考試這點筆記也是杯水車薪。
下面我們來看第三個叫做DNC的考生,這個考生使用一個更高級的畫板(E人E本),這個畫板可以記錄更多的信息,甚至可以記錄所有的聽力信息(當DNC的外存儲器足夠大的時候)。
以上的三個考生都是在加強自己的記憶能力,針對聽力考試(長時間序列)進行信息處理。這三個考生都是按照聽力播放順序進行答題,雖然第三個考生(DNC)可以記錄幾乎所有的聽力信息,但是它並沒有額外的時間去翻閱所有記錄下來的信息,只能夠根據大腦(短期記憶)中的印象和自己寫字順序在非常短的時間內翻閱一下記錄本。
下面介紹第四個考生,一個叫做PonderDNC的帶著時間機器作弊器的考生。PonderDNC不但帶著E人E本,而且還帶著時間靜止機器。這也就是說這名考生在進行聽力考試的時候,可以在任何自己覺得可以的地方讓時間靜止,注意不能回溯,然後從容的翻閱自己在E人E本上面的記錄進行答題。
毫無疑問PonderDNC是在理論上面最有可能在聽力考試總獲取高分的考生。
PonderDNC
通過將DNC計算單元進行嵌入ACT計算架構,PonderDNC可以實現在每個時間步驟多次進行運算。這意味著在時間步t,DNC在獲得時刻t的外部輸入之後不用立刻輸出信息,而是可以在時刻t反覆進行思考計算之後再做出判定輸出,然後再進入下一時刻t+1。如下圖
ACT (Adaptive Computation Time for Recurrent Neural Networks ) 計算架構在時間步t,RNN模型經過多次計算(思考)之後,形成多個輸出 和隱藏狀態 ,RNN在時刻t的輸出以及傳遞到下一時刻t+1的隱藏狀態通過權重係數累加獲得。
這種計算架構通過在時刻t進行多次運算取權重係數累加和的方式模擬思考過程。這對於使用DNC這種帶有外存儲器的計算單元來處理超長序列尤其有意義。這意味著對於一個具有超大外存儲器記憶(如1K行記憶)的DNC而言,在時間步t 計算單元DNC基於外部輸入信息 可以多次反覆的讀取外記憶矩陣信息進行反覆權衡思考之後再做出判定。
原始的DNC模型一般使用一個500行的外記憶矩陣,在每個時間步t通過1~3寫頭控制,2~6讀頭控制與外記憶矩陣進行信息(記憶)交互。也就是DNC模型在時刻t一般只與不超過10個記憶位置有信息交互。這對於簡單的問題,例如記憶復現具有較好的效果,但是對於那些與前面信息交互複雜而且時間跨度很長的判定問題則效果欠佳。通過將DNC計算單元嵌入ACT計算架構之後形成的PonderDNC計算單元,在每個時間步驟可以多次與外記憶矩陣進行信息交互。例如一個具有2寫頭控制,4讀頭控制,具有1000行外存儲記憶的PonderDNC在時刻t運算50次,最多可以與外記憶矩陣的300個位置進行交互,在時刻t 最多可以基於50個短期記憶以及200個讀頭記憶做出推斷輸出。也就是在時刻t 計算單元PonderDNC可以基於前面記憶總量的20%進行推斷判定。
通俗的講,假設這幾個模型被看做是不同操盤手的話,LSTM操盤手就是基於過去兩周的K線圖對未來行情進行判斷,而PonderDNC則是基於過去一季度的多種技術分析指標對未來進行判定。
這個PonderDNC模型適合處理長序列任務以及回溯複雜的任務,如處理期貨的高頻數據。模型需要比較大的可訓練權重參數才更容易獲得更好的效果。在使用的時候注意加大訓練數據量以及盡量消除輸入因素多重共線性。
代碼示例見鏈接
註:PonderDNC每個時間步t傳遞給下一個時間步t+1的信息為 累加的控制器狀態、累加的讀頭讀取記憶向量、以及在時刻t進行N(t)次運算之後的外存儲記憶矩陣(這個不是權重累加和而是最後一次運算之後的記憶矩陣直接傳遞下去)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
2017-08-13更新 簡單的應用到期貨的模型代碼示例
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2017-08-18 更新期貨日頻回測
樣本內回測
2017-09-29 更新L2正則化示例
樣本外回測2017-01-01 ~ 2018-08-01,應該說泛化能力還不錯
推薦閱讀:
※已有python基礎想學習量化。要配新電腦了,請問該用什麼配置?
※混沌價值二號凈值從9月30日狂跌不止,這是動用了多大的頭寸做什麼品種才會跌成這樣??
※國內外的做市商(market maker)有哪些差異?
※機器學習——到底在量化投資中用的好嗎?
※2017 年你眼中最好的券商量化策略研報是哪篇?有哪些亮點?