聶 敬,胡 卉,楊萬里,劉慶凱
(長安大學(xué) 汽車學(xué)院,陜西 西安 710064)
一直以來,關(guān)于如何準(zhǔn)確預(yù)測需求信息的變化,避免牛鞭效應(yīng)的產(chǎn)生成為學(xué)術(shù)界研究的熱點(diǎn)。簡單來看,由于供應(yīng)鏈串聯(lián)遞歸效應(yīng)的存在,使得其上各級庫存、生產(chǎn)決策前,首先要預(yù)測下游市場需求的大小,然后再向上游發(fā)出滿足自身的訂單,由此,準(zhǔn)確預(yù)測下游需求成為了減小提前期供應(yīng),避免缺貨、斷貨和成本損失的關(guān)鍵。盡管隨著供應(yīng)鏈結(jié)構(gòu)研究的深入,信息共享方式和先進(jìn)庫存管理方法的引入,在一定程度上可以提高需求預(yù)測的響應(yīng)時間和訂單處理速度,但由于現(xiàn)有需求預(yù)測方法的差異使得市場預(yù)測精度不高,導(dǎo)致現(xiàn)有庫存不能滿足市場需求的隨機(jī)波動,造成很大的損失。王瑛(2004)基于核心制造企業(yè)的多級庫存控制系統(tǒng),提出了采用合作需求預(yù)測確定訂購臨界點(diǎn),并建立了由供應(yīng)網(wǎng)絡(luò)、核心企業(yè)、分銷網(wǎng)絡(luò)組成的多級庫存系統(tǒng)優(yōu)化模型。李程(2013)使用灰色GM 1,()1模型和BP神經(jīng)網(wǎng)絡(luò)變權(quán)組合預(yù)測得出組合預(yù)測值。孫志剛等(2013)采用蟻群算法優(yōu)化支持向量機(jī),并構(gòu)建ACO—LSSVM物流需求模型。
相對于傳統(tǒng)的預(yù)測方法,XNN具有良好的模式辯識能力和在任意精度內(nèi)逼近非線性映射的能力,這意味著XNN能夠自動地逼近那些最佳刻劃樣本數(shù)據(jù)規(guī)律的函數(shù),不僅能很好地估計(jì)非線性函數(shù),而且能處理數(shù)據(jù)中去掉線性部分后殘差的非線性,通過使用一個或多個隱含層,網(wǎng)絡(luò)能夠自動分割樣本空間,并在不同的子空間里建立不同的函數(shù)。
XNN基于加性索引模型的概念,如下所示:
左側(cè)的函數(shù)可以表示為K個平滑函數(shù)gi(·)的和。這些平滑函數(shù)(即嶺函數(shù))都用于在網(wǎng)絡(luò)中訓(xùn)練的輸入特征的線性組合(βiTx)??山忉屔窠?jīng)網(wǎng)絡(luò)提供加性索引模型的替代公式作為結(jié)構(gòu)化神經(jīng)網(wǎng)絡(luò)。XNN內(nèi)置了解釋機(jī)制,這有助于解釋和理解模型內(nèi)部過程以及該模型學(xué)到的函數(shù)。
替代公式如下:
位移參數(shù)μ和尺度參數(shù)γk被用于模型擬合,但不參與識別,它們幫助模型通過正則化選擇適當(dāng)數(shù)量的嶺函數(shù)。
XNN結(jié)構(gòu)中三個重要的組成部分包括:
(1) 投影層(第一個隱藏層)
輸入層包含將輸入神經(jīng)網(wǎng)絡(luò)的所有信息。輸入層全連接到投影層,在投影層上傳遞特征(信息)。投影層由k個節(jié)點(diǎn)組成(每個節(jié)點(diǎn)對應(yīng)一個嶺函數(shù))。第一個隱藏層中的節(jié)點(diǎn)i的權(quán)重對應(yīng)相應(yīng)嶺函數(shù)輸入的系數(shù)(βi)。
(2) 子網(wǎng)絡(luò)(圖1的中間部分)
子網(wǎng)絡(luò)主要用于學(xué)習(xí)應(yīng)用于輸入特征的嶺函數(shù)。嶺函數(shù)對于子網(wǎng)絡(luò)而言非常重要,因?yàn)樗鼈儽平队皩拥膹?fù)雜函數(shù)。在模擬中,研究者發(fā)現(xiàn),使用由具有非線性激活函數(shù)的兩個隱藏層組成的子網(wǎng)絡(luò),足以在擬合模型時學(xué)習(xí)足夠靈活的嶺函數(shù)。
(3) 組合層(最后的隱藏層)
組合層是XNN的最后一個隱藏層,由單個節(jié)點(diǎn)組成。節(jié)點(diǎn)的輸入包括嶺函數(shù)的所有輸出以及在子網(wǎng)絡(luò)中學(xué)習(xí)和添加的權(quán)重。在該層上使用線性激活函數(shù),因此整個網(wǎng)絡(luò)的輸出是所有嶺函數(shù)的加權(quán)和的線性組合。
XNN類似于BP神經(jīng)網(wǎng)絡(luò),是一種“前饋神經(jīng)網(wǎng)絡(luò)”。如圖2所示,在前向傳遞過程中,當(dāng)網(wǎng)絡(luò)接受到一種學(xué)習(xí)模式后,神經(jīng)元的激活值經(jīng)輸入層到隱藏層逐層經(jīng)過加權(quán)求和及激活函數(shù)的變換,直至輸出層。如果輸出層得不到期望輸出,則轉(zhuǎn)入誤差信號反向傳播,將誤差信息按照輸出層輸入向輸入層方向逐層傳播,根據(jù)預(yù)測誤差的梯度值調(diào)整各層網(wǎng)絡(luò)權(quán)值和閾值,最后回到輸入層。
圖1 XNN網(wǎng)絡(luò)結(jié)構(gòu)
圖2 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖2中,X1,X2,X3,…,Xn是神經(jīng)網(wǎng)絡(luò)的輸入值,Y1,Y2,Y3,…,Ym是神經(jīng)網(wǎng)絡(luò)的預(yù)測值,Wij和Wjk為網(wǎng)絡(luò)連接權(quán)值。從圖2中可以看出,神經(jīng)網(wǎng)絡(luò)可以看成一個非線性函數(shù),影響庫存需求的相關(guān)因素為網(wǎng)絡(luò)輸入值,輸出為庫存需求的預(yù)測值,輸入值和預(yù)測值可以分別當(dāng)做該函數(shù)的自變量和因變量。當(dāng)網(wǎng)絡(luò)輸入節(jié)點(diǎn)數(shù)為n、輸出節(jié)點(diǎn)數(shù)為m時,BP神經(jīng)網(wǎng)絡(luò)就表達(dá)了從n個自變量到m個因變量的函數(shù)映射關(guān)系。
在BP網(wǎng)絡(luò)中隱含層的神經(jīng)元的輸出為:
式子中yi是第i個神經(jīng)元的輸出信號,f是傳遞函數(shù),Wij是第j個輸入信號和第i個輸出信號之間的權(quán)值,θi為閾值。網(wǎng)絡(luò)隱藏層有多種表達(dá)形式,通常選用Sigmoid函數(shù):
神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過程中,采用的是誤差反向傳播法,針對供應(yīng)鏈庫存需求預(yù)測,其一般步驟為:
(1)初步確定網(wǎng)絡(luò)結(jié)構(gòu),選擇樣本相關(guān)數(shù)據(jù)。根據(jù)庫存需求的特點(diǎn),以及最終庫存需求的確定,以管理者的視角,其庫存需求預(yù)測的相關(guān)因素如圖3所示:
如圖3所示,網(wǎng)絡(luò)有1個輸出,6個輸入。輸出為庫存需求預(yù)測,輸入為初始需求、訂單量、現(xiàn)有庫存、需求增長、銷售值和節(jié)點(diǎn)等級。
為方便計(jì)算,將輸入與輸出因素量化,用庫存單位s表示庫存基數(shù),庫存總需求為S,各個不同的輸入因素量化結(jié)果如表1所示:
圖3 庫存需求預(yù)測主要影響因素
表1 輸入元素量化表
S1,S2,…,S6分別代表初始需求、訂單量、現(xiàn)有庫存、需求增長、銷售值和節(jié)點(diǎn)等級。t1,t2,…,t4分別代表供應(yīng)鏈生命周期中的導(dǎo)入期、生長期、成熟期和衰退期,函數(shù)x(t)表示在時間為t時,該輸入元素持有的庫存量,φi為影響因素與庫存基數(shù)的正比例系數(shù)。
(2)設(shè)定初始權(quán)值及其他有關(guān)參數(shù)。設(shè)定學(xué)習(xí)效率η和誤差控制變量ε并訓(xùn)練網(wǎng)絡(luò),對給定的訓(xùn)練模式,計(jì)算網(wǎng)絡(luò)的輸出及其誤差E,若E<ε,則學(xué)習(xí)結(jié)束;否則執(zhí)行下一步。
隱藏層神經(jīng)元的輸出為:
輸出層各個神經(jīng)元的輸出為:
權(quán)值的更新:
誤差計(jì)算:
閾值更新:
以上式子中Hj代表隱藏層節(jié)點(diǎn)輸出函數(shù),Ok代表輸出層各個神經(jīng)元的輸出,ek表示輸出層k點(diǎn)的誤差,bk表示輸出節(jié)點(diǎn)的閾值,aj表示隱藏層節(jié)點(diǎn)的閾值。
(3)修正相應(yīng)的權(quán)重,按照δ學(xué)習(xí)規(guī)則修正權(quán)重和閾值,然后返回上一步繼續(xù)。
本案例輸入數(shù)據(jù)為6維,輸出數(shù)據(jù)為1維,得到神經(jīng)網(wǎng)絡(luò)為1-1-7-1,即A層有1個節(jié)點(diǎn),輸入為時間t;B層有1個節(jié)點(diǎn);C層第1到6分別輸入初始需求、訂單量、現(xiàn)有庫存、需求增長、銷售值和節(jié)點(diǎn)等級6個經(jīng)過歸一化后的數(shù)據(jù),輸出為庫存需求預(yù)測量。
設(shè)定:神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率為η=0.25,勢態(tài)因子為α=0.73,對學(xué)習(xí)率作如下調(diào)整:
式(15)的解釋是,如果連續(xù)兩次迭代其梯度方向相同(sngo為符號判斷函數(shù)),說明收斂速度較慢,則η學(xué)習(xí)率加倍;如果連續(xù)兩次迭代其梯度方向相反,說明迭代過了頭,則學(xué)習(xí)率η減半,也就是說誤差代價函數(shù)在不同的方向按照各自比較合理的步長向極小點(diǎn)逼近,實(shí)現(xiàn)整個網(wǎng)絡(luò)學(xué)習(xí)過程中步長自適應(yīng)調(diào)整。
通過對模型求解,將XNN的加性索引正則化,模擬了5個自變量,即x1,x2,…,x5,X服從[0,1 ]之間的均勻分布,x4,x5降為噪音變量,只針對第一層投影層和輸出層懲罰強(qiáng)度進(jìn)行調(diào)整y=f1(x)+f2(x)+f3(x)+f4(x)+f5(x)構(gòu)建成為一個具有5個子網(wǎng)絡(luò)的XNN模型,構(gòu)造3個勒讓德多項(xiàng)式來擬合x1,x2,x3分別為(如圖4所示):
圖4 前3個勒讓德多項(xiàng)式
圖5顯示了嶺函數(shù),第i行表示子網(wǎng)絡(luò)i,第一列表示解釋了單變量函數(shù),其中包含由子網(wǎng)絡(luò)學(xué)習(xí)到達(dá)其輸出的權(quán)重。第二列顯示βi的值,即投影系數(shù)。投影系數(shù)說明輸入特征的哪個組合在通過子網(wǎng)絡(luò)之前用作了每個嶺函數(shù)的輸入。在上面的例子中,從XNN的結(jié)構(gòu)我們可以看出Subnetwork1已經(jīng)學(xué)習(xí)了立方勒讓德函數(shù) (f3(· )),Subnetwork2已經(jīng)學(xué)習(xí)了二次函數(shù) (f2(· )),并且只有x2的系數(shù)非零。
可解釋神經(jīng)網(wǎng)絡(luò)(XNN)是一個關(guān)鍵的機(jī)器學(xué)習(xí)模型。與其他機(jī)器學(xué)習(xí)模型不同,它能「打開」神經(jīng)網(wǎng)絡(luò)的黑箱。該模型的結(jié)構(gòu)和設(shè)計(jì)方式使其可以解釋學(xué)習(xí)的特征以及導(dǎo)致其輸出或預(yù)測值的函數(shù)。這些可解釋性特征非常吸引人,它本質(zhì)上是有可加性的,并且能通過納入神經(jīng)網(wǎng)絡(luò)的機(jī)制(如子網(wǎng)絡(luò))直接得到解釋。無論將XNN用作主要模型還是用于更復(fù)雜模型的替代模型,XNN都可以直接解釋模型如何使用輸入特征進(jìn)行預(yù)測。這項(xiàng)技術(shù)為將機(jī)器學(xué)習(xí)模型整合入眾多不同行業(yè)提供了巨大的優(yōu)勢,因?yàn)樗軌虺浆F(xiàn)有系統(tǒng),并且能夠清晰解釋它如何獲得輸出。
圖5 訓(xùn)練后的嶺函數(shù)(左)和對應(yīng)的投影層指數(shù)(右)
[9] TANG W,LI W.Application of Support Vector Machines Based on Time Sequence in Logistics Forecasting[J].Logistics Management,2005(1):2.
[10] Freitas P S A,Rodrigues A J L.Model combination in neural-based forecasting[J].European Journal of Operational Research,2006,173(3):801-814.
[1l] Tsai T H,Lee C K,Wei C H.Neural network based temporal feature models for short-term railway passenger demand forecasting[J].Expert Systems with Applications,2009,36(2):3728-3736.
[12] Widiarta H,Viswanathan S,Piplani R.On the effectiveness of top-down strategy for forecasting autoregressive demands[J].Naval Research Logistics(NRL),2007,54(2):176-188.