時間卷積網絡 (TCN):關於從風控項目當中的學習

An empirical genetic convolution and recurrent network for sequence modeling

Youngmi huang
10 min readOct 7, 2019

此為論文整理筆記 + debug 紀錄

原論文網址:https://arxiv.org/pdf/1803.01271.pdf

時間卷積網絡 (TCN) 是什麼?

TCN,全名為 Temporal Convolution Network ,這篇論文於 2018 年出的,算是 TCN 的開端 (截至 2019/7/28,citation: 203)。

時序卷積網絡主要可以解決時序的模式識別(Time Series Discovery)問題,模型架構由1D的全連接層(Fully Convolution Network)與卷積層組成。卷積層結合了因果卷積層(Causal Network)與擴張卷積(Dilated Network)兩種結構。

  • 因果卷積一開始的提出:是為了解決圖片的分割為題,會跳過部分輸入,提升 image recognition的準確率,同時它允許卷積的時的輸入存在間隔採樣。它的經典應用在於 Google’s WaveNet(語音領域)。

To extract features with different time intervals from time series and finally combine these features.

因果卷積在 WaveNet 的提出,越上層感受野越大

解決的問題:Time Series Discovery

  • 希望建立的是通用解,主要應用在 NLP、語音合成等任務(Sequence Modeling)。
  • 關於我在風控當中(第三方數據)的應用任務:需要在信貸時序數據上,挖掘衍生的特徵變量以及可解釋性。

比方說 feat_new1是兩個共債相關變量的組合 :(1) 按手機號碼查詢,近 15天以及 (2) 近 12 個月在非銀機構申請機構數的加權平均;這兩個變量在原始變量對應到 var_1 ( IV=0.7 ) 與 var_2 ( IV=0.5 ),分別刻畫了用戶在較長時間內(12 個月)與較短時間(15天)內的借款需求。

卷積網絡用組合方式產生衍生變量,用來描述用戶的借款『飢渴度』在時序上的變化,顯現單一變量無法提供的信息,具有時序上的解釋意義。

『但是這並不代表我們可以將算法的輸出直接代入最終的授信模型中,我們需要結合金融邏輯與業務經驗對算法的輸出進行篩選與精煉,這只是一種算法上的嘗試。』

如何解

TCN 模型的特性與優點

1.序列建模的時序預測:

在因果卷積當中,定義了 {yt} 只受過去 {Xt, Xt-1, Xt-2, ..} 影響,並不受未來數據 {Xt+1, Xt+2, ..} 影響,並且對歷史有記憶;另外,全連接層確保了輸出與輸入維度一致。

2.彈性調整感受野大小(Receptive Field Size):

擴張卷積和一般卷積的不同在於:每一層 Hidden Layer 都和輸入序列大小一樣,越到因果卷積層的上層,卷積窗口越大(意味著空洞越多),除了提高感受野以外,同時能降低計算量。

  • d: 擴張卷積、以 2 的指數遞增,決定在層的級別隔幾個空格傳遞至下一層。
  • k: filter size,決定每一層之間取幾個值傳到下一層,下圖 (a) 每一層皆為 k=3。

下圖為 TCN 整體模型架構:(a) 為因果卷積示意圖 ; (b) 為殘差模塊內部構造 ; (c) 為殘差卷積的跳層連接在 TCN 的示意圖(較下層的特徵跳層連接到上層,提高模型準確度)

TCN論文Figure 1. Architectural elements in a TCN

模型特點摘要:以下整理自 David 在時間卷積網絡(TCN) 總結篇

1.其實 TCN 只是一維卷積變形之後在時序問題上變得適用,廣義上,自動提取特徵信息至今仍是一格非常靈活難以把握的問題。

2.擴張卷積和普通1D卷積最大的不同:越到上層,卷積窗口越大,而卷積窗口中的「空孔」越多;擴張卷積可以做到每一層隱層都和輸入序列大小一樣,計算量降低,感受野足夠大。

3.因果卷積:時序預測要求對時刻 t 的預測 yt 只能通過 t 時刻之前的輸入 x1 到 xt-1來判別(e.g. 隱馬爾科夫鏈)。

4.為了提高準確率,加入了殘差卷積的跳層連接,以及1×1的卷積操作

如何衡量此解法的好壞

論文裡面根據不同的任務,主要都是與 LSTM 與 GRU 比較,TCN 皆取得了較好的成果:

  • 隨著序列長度增加,TCN 可以更快收斂
TCN論文 Figure 2. Results on the adding problem for different sequence lengths T.
  • 隨著迭代次數增加,TCN可以達到較高的準確率 (MNIST & P-MNIST)
TCN論文 Figure 3. Results on Sequential MNIST and P-MNIST
  • 在效能上也可以吃較少的內存:由於 TCN 基於卷積的關係,有共享參數
TCN論文 Figure 4. Result on the copy memory task for different sequence lengths T.

程式碼實現

參考來源: Keras-TCN @Github

Install

pip install keras-tcn

Usage

from tcn import compiled_tcn

後記

由於此程式碼為 2019–07~08 月之間,因應暑期項目:百融雲創的徵信去識別化數據,進行數據挖掘與特徵衍生所研究開發的模型。在 9月初去上海參加 Google 開發者大會之後,將 tensorflow 升級到了 2.0,並且在整理此項目的程式碼時(因有部分 bug 想重跑模型)遇到了不能運行的錯誤,以下為 bug 紀錄 (Bug format 參考:Learning From Your Bugs)。

Date:
2019-10-04
Symptom:
graph = tf.get_default_graph()
AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
Cause:當從 tensorflow 1.14.0 升版到 tensorflow 2.0 RC版之後,backend 的 tensorflow 版本封裝 keras 的方式不一致。Fix:
由於 tf 將 keras納入自身模組,看了很多解法將原本的 import keras 改成 tf.keras,還是會出現錯誤info,最終從 keras 官方文檔得到最終解法:將 keras 更新至 2.3.0 才會和 tensorflow 2.0 相容。
Time taken to resolve bug:
2.5 hour
Lessons:
1.由於未來 tf 2.0 銳不可擋,除了升級當中遇到的問題可以直接透過 error info 找解法以外,最終還是回歸 tf or keras 官方文檔找尋線索可以節省 debug 時間。
2.tensorflow2.0 執行 1.x版本的過渡與遷移方式:https://www.tensorflow.org/guide/upgrade
keras 官方文檔

為什麼要升版 tensorflow 2.0?

原因其實很簡單,就是去朝聖了 Google 開發者大會後(當然他們就是老王賣瓜),我腦波很弱的有買單,於是乎就從 1.14 升版到 2.0(想說 RC 版應該相對穩定吧吧吧),也想試試看很多厲害的衍生的新功能:像是 Tensorflow Probability,結合機率+深度學習的工具,可作機率推論與統計建模。除了 tensorflow2.0以外,還有一個很喜歡的 function 是 Material Design,詳細的其他乾貨介紹整理如下連結:

寫在最後:除了 TCN 之外

另外一篇相關的論文 Causal Discovery with Attention-Based Convolutional Neural Networks,也是時間因果發現不錯的論文,有時間可以再來研究。

Temporal Causal Discovery Framework

  • Given multiple time series as input, TCDF discovers causal relationships between these time series and outputs a causal graph.
  • It can also predict one time series based on other time series. TCDF uses Attention-based Convolutional Neural Networks combined with a causal validation step.
  • By interpreting the internal parameters of the convolutional networks, TCDF can also discover the time delay between a cause and its effect.

程式碼實現:TCDF code reference (torch)

--

--

Youngmi huang

Participate in data science field, fascinated by something new. (Current: fraud risk modeling with ML/DL, Past: NLP)