13
本文作者: 湯姆克魯斯 | 2016-10-09 19:03 |
雷鋒網(wǎng)按:本文作者文海寧,銀行算法工程師。
深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法有除了典型的反向傳播,也有被Deepmind青睞的正向傳播,以及以BAM網(wǎng)絡(luò)背后的雙向傳播,本文將對(duì)這些訓(xùn)練方法進(jìn)行簡(jiǎn)單的探討,如果你有興趣,歡迎留言。
1. 典型的BAM網(wǎng)絡(luò)
深度學(xué)習(xí)目前非常火爆,追蹤溯源,深度學(xué)習(xí)源于神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)是反向誤差訓(xùn)練的典例。因?yàn)榉聪騻鞑バ枰?jì)算每個(gè)參數(shù)的梯度,從而能夠使用各種梯度下降方法來(lái)更新參數(shù)。
但是,相比于正向傳播,反向傳播能解決大部分問(wèn)題,統(tǒng)領(lǐng)深度學(xué)習(xí)的天下嗎?
雙向傳播,其中最為典型的還屬BAM網(wǎng)絡(luò)。下圖是其簡(jiǎn)單原理的展現(xiàn)。
當(dāng)向其中一層加入輸入信號(hào)時(shí),另一層可得到輸出。由于初始模式可以作用于網(wǎng)絡(luò)的任一層,信息可以雙向傳播,所以沒(méi)有明確的輸入層或輸出層。可將其中的一層稱(chēng)為X層,有n個(gè)神經(jīng)元節(jié)點(diǎn);另一層稱(chēng)為Y層,有m個(gè)神經(jīng)元節(jié)點(diǎn)。兩層的狀態(tài)向量可取單極性二進(jìn)制0或1,也可以取雙極性離散值1或-1。如果令由X到Y(jié)的權(quán)矩陣為W,則由Y到X的權(quán)矩陣便是其轉(zhuǎn)置矩陣。
誠(chéng)然雙向傳播要有應(yīng)用的領(lǐng)域,才能更好地檢測(cè)它的用途,同時(shí)也促進(jìn)自身的發(fā)展。那么,場(chǎng)景來(lái)了,在IT運(yùn)維等服務(wù)領(lǐng)域,雙向網(wǎng)絡(luò)是大顯身手的時(shí)候。在介紹雙向網(wǎng)絡(luò)之前,先賣(mài)個(gè)關(guān)子,我們先對(duì)反向傳播訓(xùn)練和正向傳播訓(xùn)練娓娓道來(lái)。
反向傳播算法簡(jiǎn)稱(chēng)即BP神經(jīng)網(wǎng)絡(luò),是監(jiān)督算法(數(shù)據(jù)給出標(biāo)簽)。其目標(biāo)是:通過(guò)更新網(wǎng)絡(luò)中的每一個(gè)權(quán)重,使得最終的輸出接近于groundtruth,這樣就得到整個(gè)網(wǎng)絡(luò)的誤差作為一個(gè)整體進(jìn)行了最小化。其中輸出層的鏈?zhǔn)椒▌t的示意圖如下:
其中代表輸出網(wǎng)絡(luò)。下圖偏導(dǎo)數(shù)方程是用delta規(guī)則顯示的改變可以多大程度上影響總的誤差。表示不同神經(jīng)元的權(quán)重。
金無(wú)足赤,反向傳播網(wǎng)絡(luò)也有缺點(diǎn)。因?yàn)樗菍?duì)非線(xiàn)性可微分函數(shù)進(jìn)行權(quán)值訓(xùn)練的多層網(wǎng)絡(luò)。此算法可以使網(wǎng)絡(luò)權(quán)值收斂到一個(gè)解,但并不能保證所求為誤差超平面的,由此可能是一個(gè)局部最小解。
何為正向傳播呢?假設(shè)上一層結(jié)點(diǎn)i,j,k,…等一些結(jié)點(diǎn)與本層的結(jié)點(diǎn)w有連接,結(jié)點(diǎn)w的值如何算?即通過(guò)上一層的i,j,k等結(jié)點(diǎn)以及對(duì)應(yīng)的連接權(quán)值進(jìn)行加權(quán)和運(yùn)算,最終結(jié)果再加上一個(gè)偏置項(xiàng)(圖中為了簡(jiǎn)單省略了),最后在通過(guò)一個(gè)非線(xiàn)性函數(shù)(即激活函數(shù)),如sigmoid函數(shù),最后得到的結(jié)果就是本層結(jié)點(diǎn)w的輸出。不斷迭代此運(yùn)算,得到輸出層結(jié)果。如下圖:
話(huà)說(shuō)2016年李世石與AlphaGo的圍棋大戰(zhàn)吸引了世界人的目光,其實(shí)Google 旗下的 DeepMind 早已成為 AI 領(lǐng)域的明星,它將其算法應(yīng)用到醫(yī)療保健行業(yè),還打造了一個(gè)分布式的大型深度強(qiáng)化學(xué)習(xí)系統(tǒng)并將其命名為Gorila,該系統(tǒng)利用Google Cloud平臺(tái)大幅提高了訓(xùn)練效率,已開(kāi)始為谷歌的個(gè)性化推薦系統(tǒng)服務(wù)。
DeepMind實(shí)驗(yàn)室有很多應(yīng)用正向傳播的實(shí)例。例如強(qiáng)化學(xué)習(xí)(涉及熟悉的試錯(cuò)學(xué)習(xí)項(xiàng)目),連續(xù)控制問(wèn)題,如機(jī)器人操作和運(yùn)動(dòng)。還有很多深度強(qiáng)化學(xué)習(xí)方法配合正向傳播方法使用,可很好的解決螞蟻踢球、棋類(lèi)博弈等問(wèn)題。
生活在大數(shù)據(jù)時(shí)代的小伙伴們,軟件開(kāi)發(fā)已經(jīng)百花齊放、百家爭(zhēng)鳴了,而基礎(chǔ)的運(yùn)維行業(yè)因?yàn)榇髷?shù)據(jù)高并發(fā)的壓力,日趨需要引入更加完善的AI等算法來(lái)給基礎(chǔ)機(jī)器集群提供更好地服務(wù),給到客戶(hù)更優(yōu)質(zhì)的體驗(yàn)。IOT的發(fā)展鏈接了軟硬件,并在智能物聯(lián)領(lǐng)域發(fā)揮著自己獨(dú)特的作用。其他領(lǐng)域暫且不聊,我們聊聊比較容易入門(mén)的運(yùn)維行業(yè)中雙向傳播的應(yīng)用。
雙向神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)功能目前是大勢(shì)所趨。實(shí)時(shí)告警的精髓在于在告警信息沒(méi)有發(fā)出時(shí),預(yù)測(cè)到相關(guān)集群跑的應(yīng)用的異常,即指標(biāo)異常。下圖反映的是集中監(jiān)控平臺(tái)基線(xiàn)告警的實(shí)例。時(shí)間粒度為每10分鐘預(yù)測(cè)異常,其中紅色為A指標(biāo)實(shí)際值,藍(lán)色為B指標(biāo)實(shí)際值。藍(lán)色區(qū)間為基線(xiàn)。
此處注明基線(xiàn)的含義,是包含了上基線(xiàn)和下基線(xiàn),即一個(gè)區(qū)間。大多數(shù)小伙伴采用的方法是離線(xiàn)計(jì)算,用置信區(qū)間即可以確定一個(gè)范圍。但是此方法無(wú)法做到實(shí)時(shí)告警。下圖就是利用雙向神經(jīng)網(wǎng)絡(luò)的威力,做到的10分鐘粒度實(shí)時(shí)告警。
以一個(gè)交易類(lèi)型的指標(biāo)為例,用R語(yǔ)言做一個(gè)簡(jiǎn)單的實(shí)例,并說(shuō)明雙向神經(jīng)網(wǎng)絡(luò)是如何工作的。如圖7.1—7.4日和8.2-8.3日的總機(jī)基線(xiàn)數(shù)據(jù)缺失,8.9日(七夕)總機(jī)基線(xiàn)值達(dá)到13252.0,屬于節(jié)假日類(lèi)爆發(fā)性數(shù)據(jù)。
單獨(dú)看看某銀行類(lèi)手機(jī)銀行業(yè)務(wù)的總機(jī)交易量的數(shù)據(jù),如下圖:
看到這么有規(guī)律的數(shù)據(jù),是不是躍躍欲試呢?想知道原理嗎?
下圖是神經(jīng)網(wǎng)絡(luò)最基本的規(guī)則:輸入層、隱含層、輸出層。當(dāng)我們把銀行交易量的數(shù)據(jù)拿到手后,根據(jù)自己的需要進(jìn)行維度的分析與處理,分別解析入庫(kù)存儲(chǔ)完。輸入的標(biāo)簽維度即為輸入層,輸出層據(jù)實(shí)際需要維度而定。隱含層就是技巧了。
雙向傳播在單程的基礎(chǔ)上,通過(guò)前預(yù)測(cè)后,后預(yù)測(cè)前,建立一一對(duì)應(yīng),互相驗(yàn)證的結(jié)構(gòu)。可以將隱含層數(shù)目和隱含因子數(shù)目調(diào)節(jié)的更加精準(zhǔn)。
首先展示一下具體預(yù)測(cè)值(綠線(xiàn))與實(shí)際值(黑線(xiàn))的對(duì)比
其次是平穩(wěn)性波動(dòng)區(qū)間:黑色圓圈是實(shí)際值,綠線(xiàn)是上下基線(xiàn)。采集數(shù)據(jù)時(shí)正常的工作日1天,144個(gè)10分鐘預(yù)測(cè)值合成的總1天的預(yù)測(cè)值。
最后是爆發(fā)性波動(dòng)區(qū)間
注: 以上所有圖橫軸是時(shí)間轉(zhuǎn)為的時(shí)間戳,縱軸是交易量數(shù)據(jù)。
雙向神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程很有趣,首先要找到某些特定的神經(jīng)元再進(jìn)行權(quán)值處理,我們稱(chēng)這些神經(jīng)元為獲勝神經(jīng)元。獲勝神經(jīng)元在輸入神經(jīng)元中找,若輸入神經(jīng)元構(gòu)成的向量未歸一化,可用歐氏距離度量相似度;若歸一化即可使用內(nèi)積法。對(duì)獲勝神經(jīng)元權(quán)值進(jìn)行調(diào)整時(shí),遵循一下公式:
,w其中是權(quán)值,α是系數(shù),為調(diào)整的自變量。
訓(xùn)練次數(shù)與調(diào)整個(gè)神經(jīng)元權(quán)值的原理如下圖:
每次更新權(quán)值,在幾何意義里就是旋轉(zhuǎn)一定的角度。確定好輸入層,隱含層采用雙向傳播訓(xùn)練出的參數(shù)作為輸入,就遞送給輸出層輸出結(jié)果啦。
神經(jīng)網(wǎng)絡(luò)模式學(xué)習(xí)訓(xùn)練不再需要同步,可以異步。獨(dú)立的模式使得可以根據(jù)實(shí)際情況優(yōu)化調(diào)控每個(gè)模塊的調(diào)用時(shí)間。這樣當(dāng)集群壓力大的時(shí)候,可以動(dòng)態(tài)負(fù)載分配資源。這是這個(gè)成果最大的意義,將能夠因此構(gòu)建出完全不一樣的神經(jīng)網(wǎng)絡(luò)模型,訓(xùn)練方式發(fā)生完全的改變。
例如各種銀行券商都很關(guān)注運(yùn)維的人力問(wèn)題,如何從24小時(shí)值班一刻不離,轉(zhuǎn)換為分清楚機(jī)器的生命周期(大致分為上線(xiàn)、部署、投產(chǎn)、下線(xiàn)),從而針對(duì)性對(duì)投產(chǎn)的機(jī)器做重點(diǎn)監(jiān)控,是一個(gè)非常有收益的話(huà)題。在如今大部分互聯(lián)網(wǎng)企業(yè)引進(jìn)六西格瑪管理方法來(lái),節(jié)約成本已收效顯著。用雙向傳播訓(xùn)練可以進(jìn)一步在預(yù)測(cè)領(lǐng)域?yàn)楸O(jiān)控定為運(yùn)維服務(wù)做的更好。
大家都可以注意到,我們做出的是一個(gè)波動(dòng)區(qū)間。輸入的維度與輸出的維度決定整個(gè)問(wèn)題的目標(biāo),隱含層決定了準(zhǔn)確度。預(yù)想告警告的準(zhǔn)確,必然先將數(shù)據(jù)采集的準(zhǔn)確。但是此度無(wú)法很好的衡量。大家都處于大數(shù)據(jù)試水階段。
在優(yōu)化過(guò)程中,我們會(huì)繼續(xù)考慮維度因素對(duì)準(zhǔn)確度的影響,減少誤報(bào)漏報(bào)等告警故障。同時(shí)銀行各套業(yè)務(wù)系統(tǒng)都是有N個(gè)9的準(zhǔn)確度衡量的,全年告警時(shí)長(zhǎng)不超過(guò)十幾分鐘。我們的任務(wù)很艱巨。
雙向神經(jīng)網(wǎng)絡(luò)值得改進(jìn)探索的地方很多,大家快來(lái)加入大數(shù)據(jù)時(shí)代,有別于蓬勃競(jìng)爭(zhēng)激烈的軟件開(kāi)發(fā)之外,基礎(chǔ)而充滿(mǎn)挑戰(zhàn)的IT運(yùn)維歡樂(lè)大家庭吧。
雷鋒網(wǎng)注:本文為雷鋒網(wǎng)獨(dú)家約稿文章,未經(jīng)授權(quán),拒絕轉(zhuǎn)載。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。