最近面試過程中,Predict-then-Optimize是運籌優化算法工程師未來的發展方向。就像我之前寫過的運籌優化(OR)-在機器學習(ML)浪潮中何去何從?-CSDN博客,機器學習適合預測、運籌優化適合決策。我研究的基本就是調度優化方面,因此對時序需求的預測顯得十分重要。
而我之前只是使用多層感知機(MLP)做過一些回歸預測,它本身不理解時序序列的順序性。DNN其實是時序預測的好工具,其中GNN、LSTM、GRU、Transformer都是非常好的DNN特定架構。MLP也屬于DNN,只是他不能理解時間順序。
此外,時序預測還可以使用梯度提升樹、Prophet以及傳統的SARIMA。今天就先梳理一下循環神經網絡(GNN)的使用,以及他的變體LSTM。
循環神經網絡GNN
與標準神經網絡不同,RNN引入了一個隱藏狀態。隱藏狀態
和輸出
通過上一時間步的隱藏狀態
以及當前時間步輸入向量
計算。
GNN的“循環”也體現在:
結構上:同一個神經網絡單元在時間序列上反復調用自己,并通過隱藏狀態形成一個從過去指向未來的反饋連接;
數學上:隱藏狀態的計算是一個遞歸公式(),當前狀態不斷“循環”地依賴于過去的狀態。
然而,RNN有一個致命的問題,就是會產生梯度爆炸/消失的問題,這就需要LSTM解決。
長短期記憶網絡LSTM
引入了兩個核心組件:細胞狀態和門控機制(Gates)。
細胞狀態:?LSTM 的“長期記憶高速公路”;
遺忘門:
,用sigmoid激活函數輸出0-1的向量,
中每個元素表示
的每個分量保留多少;
輸入門:
,用sigmoid激活函數輸出0-1的向量,
中每個元素表示哪些新信息重要;
輸出門:
,用sigmoid激活函數輸出0-1的向量,
中每個元素表示哪些信息作為
;
候選細胞狀態:
更新細胞狀態:,前一項去除不需要的舊信息,后一項添加有用的新信息,用到了遺忘門和輸入門;
,生成最終的隱藏狀態,用到了輸出門。
上述是LSTM單元的更新,最后進行輸出層的更新。
,其中,對于激活函數
的選擇,序列生成任務可以用softmax、分類任務可以用sigmoid/softmax、時間序列預測等回歸任務則通常是線性函數。
上述就是LSTM對GNN的改進,GRU則是LSTM的簡化而高效的變體機器學習-時序預測2-CSDN博客。