日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

RNN算法探索之旅(1)

 落日下旳余暉 2018-04-23
近幾年,華爾街不斷裁員,高盛在2000年頂峰時(shí)期,雇傭了600名交易員,為其機(jī)構(gòu)客戶(hù)進(jìn)行股票買(mǎi)賣(mài),但時(shí)至今日,卻僅剩下2名交易員“看守”柜臺(tái)。

不僅高盛、瑞銀、摩根士丹利等金融公司,目前都已經(jīng)采用機(jī)器學(xué)習(xí)算法替代普通交易員來(lái)進(jìn)行交易。
那,什么樣的算法如此厲害?

它能夠預(yù)測(cè)股價(jià)走勢(shì)
不僅如此,它還能搭建聊天機(jī)器人,可以翻譯外文,可以寫(xiě)新聞稿、寫(xiě)小說(shuō).....

這個(gè)算法就是循環(huán)神經(jīng)網(wǎng)絡(luò),簡(jiǎn)稱(chēng)RNN。

這里總分為3個(gè)部分:
RNN算法之預(yù)備知識(shí):前饋神經(jīng)網(wǎng)絡(luò)(FFNN)
初始RNN算法
RNN算法之變體:長(zhǎng)短期記憶(LSTM)

RNN算法之預(yù)備知識(shí):前饋神經(jīng)網(wǎng)絡(luò)(FFNN)

序號(hào)輸入x 輸出y 
第一條數(shù)據(jù)36 
第二條數(shù)據(jù)
981 
.. 
.. .. 
 第t-1條數(shù)據(jù) 
第t條數(shù)據(jù) 27
第t+1條數(shù)據(jù)10 90 

這只是我們隨機(jī)編寫(xiě)的一些數(shù)字,它很簡(jiǎn)單,不適用任何模型算法,你也能輕而易舉的找到x-y之間的規(guī)律:y=9*x

但是如果我們一定要用神經(jīng)網(wǎng)絡(luò)來(lái)計(jì)算的話(huà),那么,這個(gè)神經(jīng)網(wǎng)絡(luò)可以簡(jiǎn)單的搭建為:


先別暈,我們舉個(gè)例子,你就明白上面的邏輯了。

以第一條數(shù)據(jù)為例:


  1. 輸入層,讓模型讀入第一條數(shù)據(jù)4,
  2. 輸出層,告訴模型其結(jié)果為36
  3. 隱藏層,就像連接輸入和輸出之間的橋梁

這個(gè)模型的核心:就是努力找到x與y之間的聯(lián)系。

比如,


圖中的1和9,就是模型找到的其中一種連接方法。

更一般的,如果你擁有數(shù)據(jù)(X,Y),神經(jīng)網(wǎng)絡(luò)算法就會(huì)去尋找最佳的參數(shù)W:

求解W,就是這條神經(jīng)網(wǎng)絡(luò)會(huì)替我們努力完成的工作。

上面的圖,寫(xiě)成公式為:


注:兩個(gè)公式中的w,數(shù)值可能不相同。
這就是一條最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)
當(dāng)然,更多的時(shí)候,你在教材上看到的是這樣的:


如果我們將參數(shù)b暫時(shí)遮擋?。?/div>
“公式二”與“公式一”之間,僅僅多出一個(gè)f()函數(shù)。

這個(gè)f()函數(shù),在學(xué)術(shù)上被稱(chēng)為“激活函數(shù)”,通常是一個(gè)非線(xiàn)性的函數(shù)。
例如,

像上面這些,均可以作為激活函數(shù)來(lái)使用。

你會(huì)問(wèn):“為什么我們要使用激活函數(shù)?”

這里因?yàn)?,(w*x)和(w*h)僅僅是線(xiàn)性運(yùn)算:
而我們?cè)诂F(xiàn)實(shí)中遇到的問(wèn)題,更多都是非線(xiàn)性的。

這就好比,
家到學(xué)校,理論上是兩點(diǎn)一線(xiàn)的距離;但在現(xiàn)實(shí)中,你要曲曲彎彎走很多路,才能抵達(dá)終點(diǎn):

因而,在w*X的外面,包裹上一層激活函數(shù)
f(w*X)

可以將線(xiàn)性問(wèn)題轉(zhuǎn)化為非線(xiàn)性問(wèn)題,這樣更接近真實(shí)的世界,也能使我們的模型預(yù)測(cè)準(zhǔn)確度得到大幅度提升。

好了,前面我們一直討論的是一條數(shù)據(jù)的情形,即
現(xiàn)在,如果我們把t+1條數(shù)據(jù),全部考慮進(jìn)來(lái):
那么此時(shí),神經(jīng)網(wǎng)絡(luò)的形態(tài)變?yōu)椋?/div>
由圖可以看出,它是t+1條數(shù)據(jù)的“堆疊”。

你會(huì)發(fā)現(xiàn)像這樣的神經(jīng)網(wǎng)絡(luò),它只是橫向箭頭,并沒(méi)有縱向箭頭。
即第t條數(shù)據(jù),并不受之前數(shù)據(jù)的影響。

你可以視為它為一條一直向前,永不回望的神經(jīng)網(wǎng)絡(luò),也因此而得名“前饋神經(jīng)網(wǎng)絡(luò)”。

我們單拎出第t條數(shù)據(jù):
此時(shí),ht僅僅受Xt的影響。

在實(shí)際工作中,它適用于“上一條數(shù)據(jù)與下一條數(shù)據(jù),彼此之間沒(méi)有任何關(guān)聯(lián)”的情形。

舉幾個(gè)例子:
圖像分類(lèi)
第一張圖與第2張圖之間,并無(wú)關(guān)聯(lián)。

薪水等的預(yù)測(cè)
第一條職位所提供的薪水,并不決定第2條職位薪水的高低。

電影推薦
第一部電影的好壞,并不影響第2部電影是否受觀眾的歡迎。

上面這些例子,都可以借助前饋神經(jīng)網(wǎng)絡(luò)來(lái)解決。但有些例子則不然。

初始RNN算法

先來(lái)看一組數(shù)據(jù):
這組數(shù)據(jù)來(lái)自某只大A股2017年9月份的表現(xiàn)



在前饋神經(jīng)網(wǎng)絡(luò)中,數(shù)據(jù)與數(shù)據(jù)之間,并不存在依存關(guān)系,即“下一條數(shù)據(jù),并不依賴(lài)于之前 數(shù)據(jù)的信息”。

但是,像上圖中,這樣的一組股票價(jià)格,你還能說(shuō)“上一條數(shù)據(jù)與下一條沒(méi)有關(guān)系”嗎?

我們預(yù)測(cè)9月21日的價(jià)格時(shí),不僅要參考9 月20日的,還要參考9月18日的、9月17日的、...
此時(shí),每一條數(shù)據(jù),都受到之前數(shù)據(jù)的影響。

除了股價(jià)預(yù)測(cè)外,像搭建聊天機(jī)器人:
寫(xiě)新聞稿:
預(yù)測(cè)故事發(fā)展情節(jié):
類(lèi)似這樣的數(shù)據(jù),都是帶有時(shí)間順序呢的,即 都需要通過(guò)前面已經(jīng)出現(xiàn)過(guò)的文字(或情節(jié)),來(lái)預(yù)測(cè)下一個(gè)文字(或片段)。

遇到這種情況,我們就需要借助循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)來(lái)處理。

RNN的運(yùn)行原理,我們舉一個(gè)很簡(jiǎn)單的例子來(lái)說(shuō)明。

假設(shè)有這樣一句話(huà):
“我愛(ài)你們”
每次輸入一個(gè)文字,我們都希望能預(yù)測(cè)出下一個(gè)即將出現(xiàn)的文字是什么?
這樣的數(shù)據(jù),寫(xiě)成表格的形式,即:
RNN的運(yùn)算過(guò)程很簡(jiǎn)單,只要你耐心看完下面這張動(dòng)圖:
你會(huì)發(fā)現(xiàn),RNN的運(yùn)算,是這樣一個(gè)流程:
如果我們將上圖簡(jiǎn)化,它就是這個(gè)樣子:
看出它與前饋神經(jīng)網(wǎng)絡(luò)的區(qū)別了嗎?
循環(huán)神經(jīng)網(wǎng)絡(luò),除了有橫向箭頭外,還有縱向箭頭

即,對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),它的每一條數(shù)據(jù)演算,都會(huì)依賴(lài)于之前的數(shù)據(jù)。

我們會(huì)反復(fù)用到隱藏層所攜帶的信息:
此時(shí),隱藏層ht不僅受Xt影響,還受上一時(shí)刻ht-1的影響:
注意,ht是受[Xt,ht-1]的影響;
而不是受[Xt,Xt-1]的影響。
因?yàn)?,ht與Xt-1,可以被視為簡(jiǎn)單的硬連接。

舉個(gè)不恰當(dāng)?shù)翘貏e好記得例子:
如果你的第二盤(pán)菜,準(zhǔn)備做魚(yú)香肉絲。
那么,使用第一盤(pán)已經(jīng)切好的土豆絲,
要比直接使用原材料----土豆塊,更省時(shí)、省力,對(duì)吧?

開(kāi)個(gè)玩笑,不管怎樣,要記?。?/div>
RNN的隱藏層ht是受[Xt,ht-1]的影響,而非[Xt,Xt-1的影響。

希望今后,你再看到其他教材上的公式,會(huì)覺(jué)得更好理解了。
注:公式中的w,數(shù)值可能不同

長(zhǎng)短期記憶,簡(jiǎn)稱(chēng)LSTM

上面講到,循環(huán)神經(jīng)網(wǎng)絡(luò)的形態(tài),類(lèi)似于下圖的樣子:
如果我們想預(yù)測(cè)一句話(huà) 我愛(ài)你們,可以簡(jiǎn)單的描述為:
從上圖中我們能夠看到,在中間的灰色鏈條上,被塞入了各式各樣的“記憶”。事實(shí)上,在這根灰色鏈條上,存儲(chǔ)了大量的信息。
這根“灰色”鏈條,我們可以視它為一根記憶鏈條。

如果將這根記憶鏈條,比喻成一條公路;將每一次的記憶,比作一輛車(chē)。
那么,在這條公路上,已經(jīng)塞滿(mǎn)了汽車(chē):

如果這根記憶鏈條很長(zhǎng)、很長(zhǎng)......

那么可以想象,在這條長(zhǎng)長(zhǎng)的公路上,會(huì)擠壓無(wú)數(shù)條等待通行的車(chē)輛。

你或許能看清離你最近的,但卻無(wú)法回望到整個(gè)隊(duì)伍的盡頭。


RNN算法也是一樣的。
在這根記憶鏈條上,存儲(chǔ)了太多、太多“有用的”和“無(wú)用的”信息。
或許,它仍保留有最近一段時(shí)間的記憶,
但是,太過(guò)久遠(yuǎn)的記憶,已經(jīng)記不清了。

所以,當(dāng)你的數(shù)據(jù)比較有限時(shí),使用RNN是一個(gè)不錯(cuò)的選擇。
但如果你的數(shù)據(jù)時(shí)間周期很長(zhǎng),例如:
你有100天的股票收盤(pán)數(shù)據(jù),你希望基于這100天的數(shù)據(jù),預(yù)測(cè)出第101天的收盤(pán)價(jià)格。

此時(shí),如果你仍選用RNN算法,那么很可能,它并不能帶來(lái)令你滿(mǎn)意的結(jié)果。因?yàn)?,它?shí)在記不住那么久遠(yuǎn)的信息了。而此時(shí)能解決問(wèn)題的,是LSTM.

LSTM是RNN的一種變體。

既然是變體,說(shuō)明它的基本原理與RNN大體相同。唯一的區(qū)別在于,它比RNN多出了一條公路:
在這條多出的“公路”上,LSTM存儲(chǔ)了更加簡(jiǎn)潔的信息。
就像你在圖中看到的,左邊的道路,忙忙碌碌;
右邊的道路,清清凈凈。

對(duì)應(yīng)LSTM算法,忙忙碌碌的道路,即“第一根灰色鏈條”,依然是“隱藏層”,它用于做各種各樣的記憶運(yùn)算。
比如:
哪些記憶有用,我要留下;
哪些記憶沒(méi)用,我要丟棄;
哪些輸入帶有新的信息,我要更新;
等等這些,都是在第一根灰色鏈條上來(lái)處理的,所以你看到它,一直在忙忙碌碌的工作。

而第2根灰色鏈條,學(xué)術(shù)上稱(chēng)為“細(xì)胞狀態(tài)”,它用于存儲(chǔ)“有用的”記憶。
那些“無(wú)用的”記憶,是不會(huì)出現(xiàn)在這條鏈條上的,所以你看到它,是干干凈凈,十分簡(jiǎn)潔的。
正因?yàn)橛辛诉@樣一條“干凈、簡(jiǎn)潔”的信息通道,LSTM能夠記住更加久遠(yuǎn)的信息,即“在處理 ”長(zhǎng)期記憶的問(wèn)題上,LSTM相較于RNN更勝一籌”。

下面,我們來(lái)看一看,LSTM是如何“開(kāi)通這樣一條快速通道”的?

還是這張圖,我們將其中一個(gè)隱藏層單元,放大來(lái)看:

將隱藏層單元放大后的效果為:

和RNN一樣,這個(gè)單元依然受Xt和ht-1的影響。


與RNN不同的是,在這個(gè)單元上,多出3個(gè)“閥門(mén)”:

剛剛我們已經(jīng)講了,整個(gè)單元受[Xt,ht-1]的影響。因而,這3個(gè)閥門(mén)同樣也受[Xt,ht-1]的影響。
因而,在很多教材上,你會(huì)看到這樣的公式:

其實(shí),它們均在說(shuō)明,這3個(gè)閥門(mén)被[Xt,ht-1]影響著:


回過(guò)頭來(lái),我們?nèi)匀豢催@張圖:


這3個(gè)閥門(mén),分別代表:
忘記門(mén):忘記過(guò)去沒(méi)用的記憶
輸入門(mén):輸入新的記憶
輸出門(mén):輸出當(dāng)前時(shí)刻用得上的信息

耐心看完這張動(dòng)圖,LSTM的運(yùn)行原理,你或許就清楚了。

我們將動(dòng)圖鎖定在最后一時(shí)刻


從上圖我們能夠看到

右側(cè)的灰色鏈條上,僅包含了有價(jià)值的信息,因而更加簡(jiǎn)潔。

也正因?yàn)槎嗉恿诉@根鏈條,使得LSTM比起RNN來(lái),能夠記住更加久遠(yuǎn)的信息。

提示:
為了方便理解,本文“輸入門(mén)”的位置上,只畫(huà)出了一條線(xiàn):

更多的時(shí)候,你會(huì)看到2條,一條決定添加哪些信息,一條決定添加多少。

這2條線(xiàn)的運(yùn)算目的,就是未來(lái)向舊記憶中,添加有用的新記憶。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多