iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Python

時空序列分析-關鍵籌碼分析系列 第 7

LSTM的變形? 認識 CNN+LSTM 和 ConvLSTM之間的差異

  • 分享至 

  • xImage
  •  

今天來介紹 CNN + LSTMConvLSTM 之間的差異,
文章有點長,謝謝耐心觀看/images/emoticon/emoticon41.gif
兩種都是在深度學習中常見的網路架構,也都可以處理時空序列的資料!

LSTM (長短期記憶網絡)

在寫後面的ConvLSTM時,突然覺得應該先來認識LSTM,
接著再一路延伸,不然會不太清楚為何需要找這樣的資料。

大致上了解模型的架構和原理,就可以來學習怎麼應用!
(模型的公式就交給數學系、教授,和有興趣的人去研究了 :) )

這是LSTM的模型架構圖
https://cdn-images-1.medium.com/max/1600/0*G474BVfgtu5ZE4ai

LSTM 模型的資料流程圖(藉由這張圖會比較清楚資料怎麼在模型內運作)
https://cdn-images-1.medium.com/v2/resize:fit:1600/1*goJVQs-p9kgLODFNyhl9zA.gif

通常情況,一個LSTM單元由細胞單元(cell)、輸入門(input gate)、輸出門(output gate)、遺忘門(forget gate)組成。

Update Gate/input gate:(輸入門): 決定要把多少單位的資訊加到當前狀態。
Output Gate(輸出門): 決定當前的cell的哪一部分要輸出出去。
Forget Gate(遺忘門): 決定你應該記住多少過去的資訊。

這篇文章用圖來介紹 LSTM,非常直觀!

LSTM 非常擅長處理時間序列,也能處理空間資訊。但對於三維圖形來講,因為有著豐富的空間資訊,並且每一個點和周圍是有很強的相關性的,這就帶來了冗餘,傳統的 LSTM 很難刻畫這種空間特徵


ConvLSTM (卷積長短期記憶網絡)

為了克服LSTM在處理三維資訊中的不足,ConvLSTM 將 LSTM 中的2D的輸入轉換成了3D的tensor,最後兩個維度是空間維度(行和列)

對於每一時刻t的數據,ConvLSTM 將 LSTM 中的一部分連接操作,替換成了卷積操作,也就是通過當前輸入和局部鄰居的過去狀態來進行預測

這個操作,就會因此讓流經 ConvLSTM 的 cell 的資料保持輸入維度,而不僅僅是具有特徵的 1D 向量。

如下圖
https://ithelp.ithome.com.tw/upload/images/20240807/20168322ZaD7BhHu2i.png

ConvLSTM 的原始文獻在這,感興趣的朋友可以點進去了解看看。

ConvLSTM 是基於 LSTM 的架構,且是FC-LSTM 的延伸

全稱是 Convolutional LSTM Network,也是基於LSTM(Long Short-Term Memory, 長短期記憶)的架構。
此架構ConvLSTM是用fully connected LSTM (FC-LSTM) 的延伸。

ConvLSTM 一開始是用天氣預測來作為應用,
後來有許多研究使用ConLSTM也是進行氣象分析相關的實驗。

不同於FC-LSTM的 input / output / state 是 1D的向量(vector),

(每個時間步的輸入、輸出和隱狀態都是一維的)

ConvLSTM 有 3D的張量(Tensor),

(具體來說是(timestamps, row, column),也就是每個時間步的資料具有空間結構。)

而實際上在實作的時候是 5D(batchsize, timestamps, channel size, row, column)。

(因為在深度學習中,通常會使用批量處理(batch processing),
並且資料可能具有多個通道(ex.彩色圖像的 RGB 通道數是3,代表著255,255,255)。)

這是ConvLSTM的模型架構圖
https://ithelp.ithome.com.tw/upload/images/20240807/20168322pdDgFcGTl9.png

這種架構結合了卷積神經網絡(CNN)和長短期記憶網絡(LSTM),適合處理時空資料,ex.影片或序列預測任務。

  • 輸入 ( X_t )隱藏狀態 ( H_{t-1} ):這些是輸入到單元的資料。
  • 單元狀態 ( C_{t-1} ):攜帶跨時間步的資訊。
  • 四個門控:遺忘門(( f_t ))、輸入門(( i_t ))、單元門(( \text{tanh} ))和輸出門(( o_t )),每個門都有卷積操作。
  • 單元狀態的更新 ( C_t )隱藏狀態的輸出 ( H_t ):新的單元狀態 ( C_t ) 經過tanh激發函數後與輸出門 ( o_t ) 相乘,得到隱藏狀態的輸出 ( H_t ),這些將傳遞到下一個時間步。

CNN+LSTM 和 ConvLSTM之間的差異

簡單來說,就是適用於不同領域的問題。

綜合以上,
ConvLSTM 就是在 LSTM 的 各個門之間加入了 卷積,讓模型可以"同時" 捕捉 空間 和 時間 的特徵。
以下列舉幾個適用的範例,

  • 氣象預測:
    ConvLSTM 能夠同時捕捉空間和時間特徵,氣象的資料具有明顯的空間結構(ex. 不同地區的溫度、降水量等)和時間依賴性(ex. 天氣變化的時間序列)。
  • 影片分析:
    在影片分析中,每一幀圖像具有空間特徵,而幀與幀之間具有時間依賴性。ConvLSTM 能夠同時處理這兩種特徵,適合用於影片分類、動作辨識等任務。
  • 交通流量預測:
    交通流量資料具有空間和時間依賴性,例如不同路段的車流量和時間序列。ConvLSTM 能夠有效地捕捉這些特徵,用於交通流量預測和交通管理。
  • 醫學影像分析:
    在醫學影像分析中,圖像具有空間結構,而不同時間點的圖像具有時間依賴性,ex.心臟超聲波圖像。 ConvLSTM 能夠同時處理這些特徵,用於疾病診斷和預測。

而 CNN + LSTM,

CNN+LSTM 是將卷積層和 LSTM 層堆疊在一起的架構。

CNN 用於提取空間特徵 -> 這些特徵被傳遞給 LSTM 來捕捉 時間依賴性
更適合用於先提取空間特徵再捕捉時間依賴性的任務。

以下也列舉幾個適用的範例,

  • 動作辨識:
    在動作辨識任務中,首先使用 CNN 提取每一幀的空間特徵,然後使用 LSTM 捕捉這些特徵的時間序列。這種方法適合於影片中的動作辨識和分類。
  • 語音辨識:
    在語音辨識中,CNN 可以用來提取聲音的頻譜特徵(例如梅爾頻譜圖),然後 LSTM 用來捕捉這些特徵的時間變化。這種方法適合於語音辨識和語音合成。
  • 自然語言處理(NLP):
    在 NLP 任務中,CNN 可以用來提取文本的局部特徵(例如詞嵌入),然後 LSTM 用來捕捉文本的時間依賴性。這種方法適合於文本分類、情感分析和機器翻譯等任務。
  • 金融時間序列分析:
    在金融時間序列分析中,CNN 可以用來提取技術指標的特徵(例如移動平均線、相對強弱指數等),然後 LSTM 用來捕捉這些特徵的時間依賴性。這種方法適合於股票價格預測和市場趨勢分析。

從曾經的範例觀察來看,這個題目應該比較適合用CNN+LSTM,但我們還是兩個都試試看~
認識完畢,大家給自己一個讚,這東西理解起來很花時間,明天來銜接回前幾天的內容!


參考文章&資料來源:

  1. An introduction to ConvLSTM
  2. ConvLSTM原理解读
  3. ConvLSTM簡介 — Convolutional LSTM Network — A Machine Learning Approach for Precipitation Nowcasting
  4. Recurrent Neural Networks and LSTM explained
  5. Understanding LSTM and its diagrams
  6. LSTM-維基百科
  7. convlstm和cnn-lstm - CSDN文库
  8. What is the difference between ConvLSTM and CNN LSTM?

每日記錄:
原本模型那邊想用LateX語法寫出公式,研究了好久還是沒用出來

加權指數:21295,上漲794點,昨天加碼的人是這幾天的最大贏家。
今天漲停應該有一兩百檔股票。
市場一半的人看多,一半的人看空,巴菲特阿公手上滿滿現金,後面的結果拭目以待。
/images/emoticon/emoticon34.gif


上一篇
欄位應該有哪些? 我需要什麼資料? 時空資料的特性與要求
下一篇
FinMind拿資料,只提供部分免費功能!
系列文
時空序列分析-關鍵籌碼分析31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言