近日,發(fā)表在《DataScience》上的一篇文章,使用深度學習方法,從數(shù)據(jù)處理、循環(huán)網(wǎng)絡、RNN上的LSTM、CNN-LSTMs等方面介紹了時間序列分析,同時解釋了時間序列的概念以及為什么選擇深度學習的方法等問題。 什么是時間序列分析? 時間序列是一系列數(shù)據(jù)點,使用時間戳進行排序,是對時間序列數(shù)據(jù)的分析。 從水果的每日價格到電路提供的電壓輸出的讀數(shù),時間序列的范圍非常大,時間序列分析的領域也是如此。分析時間序列數(shù)據(jù)通常側(cè)重于預測,但也可以包括分類,聚類,異常檢測等。 例如,通過研究過去的價格變化模式,可以嘗試預測曾經(jīng)想要購買的一款手表的價格,判斷它的最佳購買時間! 為什么選擇深度學習? 時間序列數(shù)據(jù)可能非常不穩(wěn)定且復雜。深度學習方法不假設數(shù)據(jù)的基本模式,而且對噪聲(在時間序列數(shù)據(jù)中很常見)的魯棒性更強,是時間序列分析的首選方法。 數(shù)據(jù)處理 在繼續(xù)進行預測之前,重要的是首先以數(shù)學模型可以理解的形式處理數(shù)據(jù)。通過使用滑動窗口切出數(shù)據(jù)點,可以將時間序列數(shù)據(jù)轉(zhuǎn)換為監(jiān)督學習問題。然后,每個滑動窗口的預期輸出是窗口結(jié)束后的時間步長。 循環(huán)網(wǎng)絡 循環(huán)網(wǎng)絡一種復雜的深度學習網(wǎng)絡。它們可以記住過去,因此是序列處理的首選。RNN單元是循環(huán)網(wǎng)絡的骨干。 RNN單元具有2個傳入連接,即輸入和先前狀態(tài)。同樣,它們還具有2個傳出連接,即輸出和當前狀態(tài)。這種狀態(tài)有助于他們結(jié)合過去和當前輸入的信息。 一個簡單的RNN單元太簡單了,無法統(tǒng)一用于跨多個域的時間序列分析。因此,多年來提出了各種各樣的變體,以使循環(huán)網(wǎng)絡適應各個領域,但核心思想保持不變!、 RNN上的LSTM LSTM單元格是特殊的RNN單元格,其中帶有“門”,其本質(zhì)上是介于0到1之間的值,對應于狀態(tài)輸入。這些門背后的直覺是忘記或保留過去的信息,這使他們不僅可以記住過去,還可以記住更多。 CNN-LSTMs 由于狀態(tài)信息要經(jīng)過每一個步長,所以RNNs只能記住最近的過去。 另一方面,像LSTM和GRU這樣的門控網(wǎng)絡可以處理相對較長的序列,但是即使這些網(wǎng)絡也有其局限性??!為了更好地理解這一問題,還可以研究消失和爆炸的梯度。 那么如何處理很長的序列呢?最明顯的解決辦法就是縮短它們!!但如何?一種方法是丟棄信號中呈現(xiàn)的細粒度時間信息。 這可以通過將一小組數(shù)據(jù)點累積在一起并從中創(chuàng)建特征來完成,然后將這些特征像單個數(shù)據(jù)點一樣傳遞給LSTM。 多尺度分層LSTMs 看看CNN-LSTM架構(gòu),有一件事浮現(xiàn)在我的腦海中……為什么要使用CNNs來合并那些組?為什么不使用不同的LSTM呢!多尺度分層LSTMs是基于相同的思想構(gòu)建的。 輸入是在多個尺度上處理的,每個尺度都致力于做一些獨特的事情。適用于更細粒度輸入的較低標度專注于提供細粒度(但僅是最近的)時間信息。 另一方面,較高的比例集中在提供完整的圖片(但沒有細粒度的細節(jié))上。多個刻度可以一起更好地理解時間序列。 下一步是什么? 時間序列分析是一個非常古老的領域,包含各種跨學科的問題,每種陳述問題都有其自身的挑戰(zhàn)。 然而,盡管每個領域都根據(jù)自己的要求調(diào)整了模型,但是時間序列分析中仍然有一些一般性的研究方向需要加以改進。 例如,從最基本的RNN單元到多尺度分層LSTM的每項開發(fā)都以某種方式專注于處理更長的序列,但是即使最新的LSTM修改也有其自身的序列長度限制,并且目前仍然沒有一種架構(gòu)可以真正處理極長的序列。 |
|