蘭孝文 趙曉陽 張曉琳
摘? 要:影響一個模型預(yù)測效果的并不一定是所用的方法和所確定的參數(shù),還有可能是在訓(xùn)練損失的過程中所選擇的優(yōu)化算法,它是預(yù)測模型搭建過程中所不能忽視的重要因素。在TensorFlow中提供了不同種類的優(yōu)化器編程接口。文章以包頭市空氣污染物濃度預(yù)測為研究對象,在優(yōu)化過程中通過綜合對比不同優(yōu)化算法在以LSTM神經(jīng)網(wǎng)絡(luò)搭建的預(yù)測問題上的誤差,從中選取最合適模型的優(yōu)化方法。
關(guān)鍵詞:優(yōu)化算法;預(yù)測模型;預(yù)測誤差;LSTM
中圖分類號:O212.1? ? ? ? 文獻標(biāo)志碼: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)化算法,對最后模型的預(yù)測效果會產(chǎn)生不同的效果。Adam雖說已經(jīng)簡化了調(diào)參,但是沒有一種算法能一勞永逸地解決問題。最近就有研究表明Adam的訓(xùn)練時的收斂速度雖然比SGD要快,但最終收斂的結(jié)果并沒有SGD好[1]??傊惴ü倘幻篮茫珨?shù)據(jù)才是根基。只有在充分理解數(shù)據(jù)的基礎(chǔ)上,根據(jù)訓(xùn)練樣本的數(shù)據(jù)特性和算法特性進行一些必要的調(diào)參實驗,從而才能找到模型的最優(yōu)解。
1 優(yōu)化算法介紹
1.1 Momentum
SGD算法的核心問題在于梯度指向的方向并非指向我們真正函數(shù)的最低點。為了規(guī)避這類問題呢?Hinton在提出了在SGD優(yōu)化算法中加入Momentum。
Momentum在中文是動量的意思,它最先出現(xiàn)于物理學(xué)上。算法的核心思想是讓一顆小球在一個坡里面施加一個外力,小球就可以在坡里面進行自由滾動,累積的動量越多,小球在其中就跑得越快,若小球的方向發(fā)生變化,動量也會隨之衰減[2]。相關(guān)數(shù)學(xué)公式如下:
Wn+1=Wn-Vn+1 (公式2)
公式中,W相當(dāng)于是路程,?墜參數(shù)等價于一個摩擦阻力系數(shù),它指的就是使小球停下來的阻力系數(shù),公式中要用?墜來近似衡量這種減弱。?濁■表示的是小球在梯度在梯度方向因受到外力的作用而產(chǎn)生的加速度,t代表的是單位時間。
1.2 Nesterov accelerated gradient
該優(yōu)化算法也叫梯度加速法,在剛才引入Momentum的假設(shè)里,我們讓小球在坡頂自由滾動, Nesterov就是相當(dāng)于有個駕駛員在為我們指路,會對下一步要走的路進行預(yù)測。通過提前預(yù)測決定下一步該怎么走。Nesterov涉及到的公式如下[3]:
Wn+1=Wn-Vn+1 (公式5)
相對于Momentum,Nesterov不考慮梯度對速度的改變,以當(dāng)前速度和位置,近似預(yù)計下一次要移動到的位置,根據(jù)下一步預(yù)測的近似位置,在此位置上求梯度,并對現(xiàn)在位置進行更新,最后用上一步得到的Vt來對位置進行真正的選擇。
1.3 Adam
Adam中文全稱為自適應(yīng)性矩估計方法,它是一種自適應(yīng)學(xué)習(xí)率的算法,該方法利用梯度的一階和二階矩對不同的系數(shù)計算不同的自適應(yīng)學(xué)習(xí)率[4]。Momentum和NAG都是以相同的學(xué)習(xí)率更新模型參數(shù)的各個分量,但是在深度模型中,數(shù)據(jù)的維度越多,需要更新的參數(shù)的量也越大,而且參數(shù)的更新也有差異。在計算一二階動量時就不會累計全部的歷史梯度,而是只關(guān)注與它最近的時間窗口的梯度。這樣設(shè)計的目的可以使每一個迭代的學(xué)習(xí)率都有一個固定的變化范圍,可以讓參數(shù)變化得更加平穩(wěn),該算法涉及的主要公式如下:
2 實驗?zāi)P痛罱?/p>
本次實驗所需要的數(shù)據(jù)來源于中國空氣質(zhì)量在線檢測分析平臺,里面收錄的數(shù)據(jù)包含PM2.5、AQI、PM10、SO2、NO2、O3_8h、CO等一些常見的監(jiān)測指標(biāo),數(shù)據(jù)每小時自動更新一次,如果遇到某一天的數(shù)據(jù)有缺失的情況,我們用該天所在月的平均值來進行代替[5]。接下來,我們將實驗數(shù)據(jù)除PM2.5濃度數(shù)據(jù)外所有數(shù)據(jù)作為模型的輸入特征進行實驗。迭代的次數(shù)epoch參數(shù)也是可以改變的,次數(shù)越大效果越精確,但是需要的時間也越長[6]。實驗中發(fā)現(xiàn)把迭代次數(shù)設(shè)定為200,一方面能加快訓(xùn)練,另一方面也能減少預(yù)測誤差。實驗中還發(fā)現(xiàn)LSTM單元數(shù)越大,模型訓(xùn)練效果越不好。原因可能是由于忘記偏置參數(shù)設(shè)置得過大。因此,設(shè)置不同的忘記偏置參數(shù)的值,發(fā)現(xiàn)當(dāng)減小忘記偏置的參數(shù)值,即適當(dāng)忘記部分消息,網(wǎng)絡(luò)的訓(xùn)練效果有些許提高,預(yù)測效果也越好;同時在LSTM單元數(shù)較大的情況下,應(yīng)選取比較小的忘記偏置參數(shù),以免記憶太多無關(guān)的信息。