蘭孝文 趙曉陽 張曉琳
摘? 要:影響一個模型預測效果的并不一定是所用的方法和所確定的參數,還有可能是在訓練損失的過程中所選擇的優(yōu)化算法,它是預測模型搭建過程中所不能忽視的重要因素。在TensorFlow中提供了不同種類的優(yōu)化器編程接口。文章以包頭市空氣污染物濃度預測為研究對象,在優(yōu)化過程中通過綜合對比不同優(yōu)化算法在以LSTM神經網絡搭建的預測問題上的誤差,從中選取最合適模型的優(yōu)化方法。
關鍵詞:優(yōu)化算法;預測模型;預測誤差;LSTM
中圖分類號:O212.1? ? ? ? 文獻標志碼:A? ? ? ? ?文章編號:2095-2945(2020)22-0018-02
Abstract: The prediction effect of a model is not necessarily affected by the methods and parameters determined, but also by the optimization algorithm selected in the process of training loss, which is an important factor that can not be ignored in the process of building a prediction model. Different kinds of optimizer programming interfaces are provided in TensorFlow. This paper takes the prediction of air pollutant concentration in Baotou as the research object, comprehensively compares the errors of different optimization algorithms in the prediction problem based on LSTM neural network, and selects the optimization method of the most suitable model.
Keywords: optimization algorithm; prediction model; prediction error; LSTM
引言
不同的優(yōu)化算法,對最后模型的預測效果會產生不同的效果。Adam雖說已經簡化了調參,但是沒有一種算法能一勞永逸地解決問題。最近就有研究表明Adam的訓練時的收斂速度雖然比SGD要快,但最終收斂的結果并沒有SGD好[1]。總之算法固然美好,但數據才是根基。只有在充分理解數據的基礎上,根據訓練樣本的數據特性和算法特性進行一些必要的調參實驗,從而才能找到模型的最優(yōu)解。
1 優(yōu)化算法介紹
1.1 Momentum
SGD算法的核心問題在于梯度指向的方向并非指向我們真正函數的最低點。為了規(guī)避這類問題呢?Hinton在提出了在SGD優(yōu)化算法中加入Momentum。
Momentum在中文是動量的意思,它最先出現于物理學上。算法的核心思想是讓一顆小球在一個坡里面施加一個外力,小球就可以在坡里面進行自由滾動,累積的動量越多,小球在其中就跑得越快,若小球的方向發(fā)生變化,動量也會隨之衰減[2]。相關數學公式如下:
Wn+1=Wn-Vn+1 (公式2)
公式中,W相當于是路程,?墜參數等價于一個摩擦阻力系數,它指的就是使小球停下來的阻力系數,公式中要用?墜來近似衡量這種減弱。?濁■表示的是小球在梯度在梯度方向因受到外力的作用而產生的加速度,t代表的是單位時間。
1.2 Nesterov accelerated gradient
該優(yōu)化算法也叫梯度加速法,在剛才引入Momentum的假設里,我們讓小球在坡頂自由滾動, Nesterov就是相當于有個駕駛員在為我們指路,會對下一步要走的路進行預測。通過提前預測決定下一步該怎么走。Nesterov涉及到的公式如下[3]:
Wn+1=Wn-Vn+1 (公式5)
相對于Momentum,Nesterov不考慮梯度對速度的改變,以當前速度和位置,近似預計下一次要移動到的位置,根據下一步預測的近似位置,在此位置上求梯度,并對現在位置進行更新,最后用上一步得到的Vt來對位置進行真正的選擇。
1.3 Adam
Adam中文全稱為自適應性矩估計方法,它是一種自適應學習率的算法,該方法利用梯度的一階和二階矩對不同的系數計算不同的自適應學習率[4]。Momentum和NAG都是以相同的學習率更新模型參數的各個分量,但是在深度模型中,數據的維度越多,需要更新的參數的量也越大,而且參數的更新也有差異。在計算一二階動量時就不會累計全部的歷史梯度,而是只關注與它最近的時間窗口的梯度。這樣設計的目的可以使每一個迭代的學習率都有一個固定的變化范圍,可以讓參數變化得更加平穩(wěn),該算法涉及的主要公式如下:
2 實驗模型搭建
本次實驗所需要的數據來源于中國空氣質量在線檢測分析平臺,里面收錄的數據包含PM2.5、AQI、PM10、SO2、NO2、O3_8h、CO等一些常見的監(jiān)測指標,數據每小時自動更新一次,如果遇到某一天的數據有缺失的情況,我們用該天所在月的平均值來進行代替[5]。接下來,我們將實驗數據除PM2.5濃度數據外所有數據作為模型的輸入特征進行實驗。迭代的次數epoch參數也是可以改變的,次數越大效果越精確,但是需要的時間也越長[6]。實驗中發(fā)現把迭代次數設定為200,一方面能加快訓練,另一方面也能減少預測誤差。實驗中還發(fā)現LSTM單元數越大,模型訓練效果越不好。原因可能是由于忘記偏置參數設置得過大。因此,設置不同的忘記偏置參數的值,發(fā)現當減小忘記偏置的參數值,即適當忘記部分消息,網絡的訓練效果有些許提高,預測效果也越好;同時在LSTM單元數較大的情況下,應選取比較小的忘記偏置參數,以免記憶太多無關的信息。