一文讀懂深度學習時序分析

2021-09-28 16:46:44 字數 2040 閱讀 4857

作者 | prakhar ganesh

編譯 | 安然

** | 圖靈topia

近日,發表在《datascience》上的一篇文章,使用深度學習方法,從資料處理、迴圈網路、rnn上的lstm、cnn-lstms等方面介紹了時間序列分析,同時解釋了時間序列的概念以及為什麼選擇深度學習的方法等問題。

什麼是時間序列分析?

時間序列是一系列資料點,使用時間戳進行排序,是對時間序列資料的分析。

從水果的每日**到電路提供的電壓輸出的讀數,時間序列的範圍非常大,時間序列分析的領域也是如此。分析時間序列資料通常側重於**,但也可以包括分類,聚類,異常檢測等。

例如,通過研究過去的**變化模式,可以嘗試**曾經想要購買的一款手錶的**,判斷它的最佳購買時間!

為什麼選擇深度學習?

時間序列資料可能非常不穩定且複雜。深度學習方法不假設資料的基本模式,而且對雜訊(在時間序列資料中很常見)的魯棒性更強,是時間序列分析的首選方法。

資料處理

在繼續進行**之前,重要的是首先以數學模型可以理解的形式處理資料。通過使用滑動視窗切出資料點,可以將時間序列資料轉換為監督學習問題。然後,每個滑動視窗的預期輸出是視窗結束後的時間步長。

迴圈網路

迴圈網路一種複雜的深度學習網路。它們可以記住過去,因此是序列處理的首選。rnn單元是迴圈網路的骨幹。

rnn單元具有2個傳入連線,即輸入和先前狀態。同樣,它們還具有2個傳出連線,即輸出和當前狀態。這種狀態有助於他們結合過去和當前輸入的資訊。

乙個簡單的rnn單元太簡單了,無法統一用於跨多個域的時間序列分析。因此,多年來提出了各種各樣的變體,以使迴圈網路適應各個領域,但核心思想保持不變!、

rnn上的lstm

lstm單元格是特殊的rnn單元格,其中帶有「門」,其本質上是介於0到1之間的值,對應於狀態輸入。這些門背後的直覺是忘記或保留過去的資訊,這使他們不僅可以記住過去,還可以記住更多。

cnn-lstms

由於狀態資訊要經過每乙個步長,所以rnns只能記住最近的過去。

另一方面,像lstm和gru這樣的門控網路可以處理相對較長的序列,但是即使這些網路也有其侷限性!!為了更好地理解這一問題,還可以研究消失和**的梯度。

那麼如何處理很長的序列呢?最明顯的解決辦法就是縮短它們!!但如何?一種方法是丟棄訊號中呈現的細粒度時間資訊。

這可以通過將一小組資料點累積在一起並從中建立特徵來完成,然後將這些特徵像單個資料點一樣傳遞給lstm。

多尺度分層lstms

看看cnn-lstm架構,有一件事浮現在我的腦海中……為什麼要使用cnns來合併那些組?為什麼不使用不同的lstm呢!多尺度分層lstms是基於相同的思想構建的。

輸入是在多個尺度上處理的,每個尺度都致力於做一些獨特的事情。適用於更細粒度輸入的較低標度專注於提供細粒度(但僅是最近的)時間資訊。

另一方面,較高的比例集中在提供完整的(但沒有細粒度的細節)上。多個刻度可以一起更好地理解時間序列。

下一步是什麼?

時間序列分析是乙個非常古老的領域,包含各種跨學科的問題,每種陳述問題都有其自身的挑戰。

然而,儘管每個領域都根據自己的要求調整了模型,但是時間序列分析中仍然有一些一般性的研究方向需要加以改進。

例如,從最基本的rnn單元到多尺度分層lstm的每項開發都以某種方式專注於處理更長的序列,但是即使最新的lstm修改也有其自身的序列長度限制,並且目前仍然沒有一種架構可以真正處理極長的序列。

一文讀懂Nginx

問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...

一文讀懂SpringMVC

主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...

堆疊 一文讀懂

堆疊 stack 是一種先進後出的 操作受限的線性表,也可以直接稱為棧。可以把棧想象成乙個桶一樣,往這個桶裡面一層一層的放東西,先放進去的在裡面,後放進去的東西依次在外面。但取東西的時候就是先取靠近外面的,再依次一層層取裡面的。這就是 後進先出 last in first out 的原則。因此 棧 ...