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個關鍵方法。
這是最後的課程,做得好!
作者介紹:邵洲,在讀博士。研究興趣:資料探勘、學者遷徙研究。