最后一期:如何更新LSTM模型?(附代码)| 博士带你学LSTM
最后一期:如何更新LSTM模型?(附代碼)| 博士帶你學LSTM
?
?
?
LSTM是一種時間遞歸神經網絡,適合于處理和預測時間序列中間隔和延遲相對較長的重要事件。在自然語言處理、語言識別等一系列的應用上都取得了很好的效果。
《Long Short Term Memory Networks with Python》是澳大利亞機器學習專家Jason Brownlee的著作,里面詳細介紹了LSTM模型的原理和使用。
該書總共分為十四個章節,具體如下:
第一章:什么是LSTMs?
第二章:怎么樣訓練LSTMs?
第三章:怎么樣準備LSTMs的數據?
第四章:怎么樣在Keras中開發LSTMs?
第五章:序列預測建模
第六章:如何開發一個Vanilla LSTM模型?
第七章:怎么樣開發Stacked LSTMs?
第八章:開發CNN LSTM模型(本期內容)
第九章:開發Encoder-Decoder LSTMs
第十章:開發Bidirectional LSTMs
第十一章:開發生成LSTMs
第十二章:診斷和調試LSTMs
第十三章:怎么樣用LSTMs做預測?
第十四章:更新LSTMs模型(本期內容)
本文的作者對此書進行了翻譯整理之后,分享給大家,本文是最后一期內容。
第一期內容為:一萬字純干貨|機器學習博士手把手教你入門LSTM(附代碼資料)
第二期內容為:干貨推薦|如何基于時間的反向傳播算法來訓練LSTMs?
第三期內容為:干貨推薦|如何準備用于LSTM模型的數據并進行序列預測?(附代碼)
第四期內容為:機器學習博士帶你入門|一文學會如何在Keras中開發LSTMs(附代碼)
第五期內容為:初學者如何避免在序列預測問題中遇到的陷阱?
第六期內容為:如何開發和評估Vanilla LSTM模型?
第七期內容為:博士帶你學LSTM|怎么樣開發Stacked LSTMs?(附代碼)
第八期內容為:博士帶你學LSTM|手把手教你開發CNN LSTM模型,并應用在Keras中(附代碼)
第九期內容為:博士帶你學LSTM|開發Encoder-Decoder LSTM模型的簡單教程(附代碼)
第十期內容為:博士帶你學LSTM|開發Bidirectional LSTM模型的簡單教程(附代碼)
第十一期內容為:博士帶你學LSTM|怎么開發一個LSTM模型來生成形狀?(附代碼)
第十二期內容為:博士帶你學LSTM|如何使用學習曲線來診斷你的LSTM模型的行為?(附代碼)
第十三期內容為:博士帶你學LSTM|如何用LSTMs做預測?(附代碼)
我們還將繼續推出一系列的文章來介紹里面的詳細內容,和大家一起來共同學習。
14.0 預覽
14.0.1 課程目標
本課程的目標是學習在新數據可用后怎么樣更新LSTM模型。完成了本課程的學習之后,你將會知道:
-
對新數據的監控、恢復技能和提升模型學習能力的興趣;
-
用新的數據更新一個新的LSTM模型的5步過程;
-
當開發具有新數據的更新了的LSTM模型時需要考慮的4個關鍵方法。
14.0.2 課程概覽
本課程被分為3個部分,它們是:
新數據怎么樣?
什么是LSTM模型更新?
更新LSTM模型的5步過程。
讓我們開始吧!
14.1 新數據是什么樣的?
一旦你完成了你的LSTM模型,你就可以用它來做預測。但這并不是故事的結尾。幾個月或幾年之后,你將開始積累新數據的語料庫。這將提出一些重要的問題。其中的第一個方面是:
14.1.1 模型是否仍然有技能?
重要的是要把這個問題作為你模型的持續維護的一部分來處理。一旦你監控模型技能,也許你會注意到,隨著時間的推移,預測的技能正在下降。
14.1.2 我們可以恢復模型技能嗎?
LSTM模型所解決的序列預測問題的性質可能隨著時間而改變。一個模型只不過和用來訓練它的數據一樣好。如果用于訓練那你的模型的數據也是一年前的,也許新的數據收集到一天會導致一個不同和更有技能的母校。也許你的模型預測和你第一次發開模型時一樣有技能。
14.1.3 我們能夠提升模型技能嗎?
通過使用新數據提升你模型的技能是可能的。
14.2 什么是LSTM模型更新?
更新LSTM模型指的是充分利用新數據的技術來評估和提升一個已經存在和已經完成了的LSTM模型的技術。評估的目標是去評估新的或者更新了的候選模型是不是比以前完成了的模型更具有技能。這不意味著在老的訓練數據集的現有模型上調優。它明確地指出如何最好地將新的數據合并到現有模型的更新中,該模型可能涉及或者不涉及模型參數的調優。
像所有的建模一樣,當更新LSTM模型的時候系統化是很重要的。
14.3 更新LSTM模型的5步過程
更新一個已經存在的LSTM模型的包括5個關鍵步驟。它們是:
收集新數據;
評估已經存在的模型;
開發更新模型;
評估更新模型;
替換模型。
讓我們挨個來仔細看下它們。
14.3.1 收集新數據
如果沒有新數據,則無法更新模型。這意味著在序列回歸或者完全輸入序列的情況下,在序列分類的情況下,完成完整和高質量的輸入序列。
如果序列預測問題沒有被改變,數據應該與原始模型開發有著相同的格式并以相同的方式被準備。理想情況下,訪問用于訓練現有模型的數據也將是有價值的。
你可能有數月或者數年的數據,也許比你能處理的更多。如果是這種情況,考慮重用你用來選擇數據的方法來訓練和評估現有模型。考慮選擇序列的子樣本,也許是最近的,也是是每個時間間隔的一部分。訪問大量數據(甚至太多)可能是有用的。我們可能或者不能不決定使用一些更新模型(一個緩慢的過程)。但是我們可以使用大部分或者全部來評估現有的和新的候選模型(一個很快的過程)。
14.3.2 評估已經存在的模型
監控你的模型預測的技巧是至關重要的。與評估候選模型一樣,評估最終模型的性能需要訪問預測的以及觀察的真實值。具體來說,這意味著:
預測值:你必須將一些或者所有由完成模型所作出的預測存儲起來。
觀察值:你必須聚集和存儲一些或者全部真的或者實際觀察值。
給定模型預測值和觀察值,可以評估最近數據的完成模型的技能,并通過適當的時間間隔,例如小時、日、周或者月來量化它。在很長一段時間內對模型的技能有一個認識是有用的,甚至回到模型的開始。這可能需要對模型進行重新測試,并重新生成未存儲的任何預測。
隨著時間的推移繪制模型技能將幫助你回答關于模型技能是否保持穩定或者退化的問題。它反過來告訴你你的項目是否持久化來恢復模型技能或者開發來提升模型技能。
-
降低模型技能。你的目標是利用新的數據恢復模型技能回到歷史水平。
-
穩定模型技能。你的目標是通過使用新的數據來提升模型技能在穩定的水平上。
-
提高模型技能。好!你的目標可能是調查新數據與舊模型中原始數據相比發生了什么變化。
14.3.3 開發更新模型
使用新數據有很多方法。下面的4個選項供你考慮:
-
在老的和新的數據上更新模型。現在模型被加載和訓練在附件的周期中,使用原始數據的混合來擬合模型(舊數據和新數據)。
-
在新的數據上開發新的模型。一種新的模型是從頭開始開發的,只適合于新的數據。
-
在新的和老的數據上開發新的模型。在新舊數據上建立的一個新的模型。
你選擇的具體方法可能取決于你的序列預測問題、你的具體實現,或者最終是候選模型的技巧。更新模型就像加載模型和運行額外的訓練周期一樣簡單。在內部,模型是由一個結構(如何掛在一起)和權重(數組的數字)來定義的。通常,更新考慮到找到一個好的網絡結構的工作已經得到解決,并且我們主要對網絡權重的重新處理過程感興趣。例如,下面是Keras如何更新權重的片段:
?
# load model from file?
?
model = ...?
?
# access new data
?
newX, newY = ...?
?
# fit model on new data
?
model.fit(newX, newY, ...)
?
表 14.1 更新已經存在的LSTM模型的例子
調優更新模型
在更新模型時,可能需要考慮調整選項。例如:
-
學習率。可能需要一個小的學習率來對權重進行小的調整,而不是大的跳躍。
-
周期。可能需要對新序列進行少量的迭代來將權重撥入新數據。
-
樣本。可能只需要最近一天、周、月或者年的最新樣本才能在模型中進行撥號。
考慮這些搜索和其他關注點的網格搜索,重點是將權重調整到新數據,而不是用新的和非常不同的權重來批量替換它們。
新模型調優
如果你決定從開頭開始開發一個新的模型,那么整個模型選擇和超參數調優會對你開放。這可能是令人畏懼的,特別是對于第一次更新項目。考慮將模型結構固定,并著重于利用新數據開發一組新的權重。
也許集中精力在哪一個和多少個數據樣本來擬合模型。我建議探索模型技能的敏感性分析與最近用于訓練的數據范圍(例如,模型擬合上個月的數據,在過去3個月的擬合,等等)。
14.3.4 評估候選模型
更新模型實際上是一個用于替換已有模型的新的候選模型。因此,必須嚴格評估這些模型并與現有模型進行比較。
評估模型
這意味著對用于評估現有模型和解釋技能得分的相同數據進行預測,以查看候選模型如何執行。這個技能不需要一直比較,事實上,它可能不應該。我建議根據最近的一個月,比如上個月、3個月或6個月的時間,關注問題和數據的可用性來評估和比較模型技能。
魯棒性評估?得分技能是相對的。現有的模型是基準線,改進基準線是目標。這意味著結果必須是穩健的。在一個大的測試數據語料庫上重復試驗,以控制隨機數據中的方差。重復多次試驗以控制隨機算法中的方差。考慮使用統計測試來告訴你兩個結果群體之間的差異是否顯著以及顯著到了什么程度。決定是否用新模型替換現有模型必須是一個強有力的防御決策,而唯一的防御是魯棒的結果。
公平基準線
候選模型必須遠遠勝過現有的模型。現有的模型是基準線。但是允許現有模型提供一個公平的比較點是很重要的。如果你已經開發了用新的數據在n個額外周期更新現有權重的模型,那么考慮包括一個候選模型,該模型在舊的數據上更新n個額外的周期的現有模型。這個和類似的比較點將幫助你弄清楚模型技能的任何變化是由于額外的周期還是歸因于新的數據。
展示結果
這個決定可能不是你自己的,例如,其他利益的相關者。考慮使用圖表,如箱線圖,讓你在視覺上比較結果的分布,包括平均、中位數和其他百分位的結果。還考慮將結果呈現在模型技能(例如損失或者準確性)方面,但是技能的改變對用戶、經驗、成本或者其他業務關注的影響。
14.3.5 替換模型
一旦評估了候選模型,就可以由一個新的模型來替換現有的模型。鑒于利益相關者的簽署,這應該是一個簡單的過程。我將以將模型的權重和模型結構存儲在單獨的配置文件中。這使您可以在更新模型時單獨更新模型權重,這是一個較小的且風險較小的更改。
對新模型和舊模型的并行性進行一段時間的監控是非常重要的。這種對當前和先前模型的持續監測是至關重要的。
-
如果一切都好的話,它可以讓你維護更新模塊的決定;
-
如果所有情況都不好,它會給你證明以前的模型是否應該被轉換回來;
-
它有助于向利益相關者報告系統的健康和持續改進。
14.4 擴展
你想更深入地學習更新一個擬合LSTM模型嗎?本章節列出了本課程中一些具有挑戰性的擴展:
-
列出5個預測問題
14.5 總結
在本課程中,你學習到了怎么樣在更新你的最后LSTM模型中充分利用新數據。特別地,你學到了:
-
對新數據的監控、恢復技能和提升模型學習能力的興趣;
-
用新的數據更新一個新的LSTM模型的5步過程;
-
當開發具有新數據的更新了的LSTM模型時需要考慮的4個關鍵方法。
這是最后的課程,做得好!
作者介紹:邵洲,在讀博士。研究興趣:數據挖掘、學者遷徙研究。
總結
以上是生活随笔為你收集整理的最后一期:如何更新LSTM模型?(附代码)| 博士带你学LSTM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马云:蚂蚁金服这样做区块链!
- 下一篇: 微软 CTO 韦青:对微软这样已经走过4