看深度學(xué)習(xí)框架排名第一的TensorFlow如何進(jìn)行時(shí)序預(yù)測(cè)识窿!

原文鏈接

TensorFlow 是一個(gè)采用數(shù)據(jù)流圖(data flow graphs),用于數(shù)值計(jì)算的開源軟件庫(kù)喻频。節(jié)點(diǎn)(Nodes)在圖中表示數(shù)學(xué)操作,圖中的線(edges)則表示在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組锻煌,即張量(tensor)姻蚓。它靈活的架構(gòu)讓你可以在多種平臺(tái)上展開計(jì)算,例如臺(tái)式計(jì)算機(jī)中的一個(gè)或多個(gè)CPU(或GPU)捂龄,服務(wù)器加叁,移動(dòng)設(shè)備等等。TensorFlow 最初由Google大腦小組(隸屬于Google機(jī)器智能研究機(jī)構(gòu))的研究員和工程師們開發(fā)出來刀脏,用于機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究超凳,但這個(gè)系統(tǒng)的通用性使其也可廣泛用于其他計(jì)算領(lǐng)域耀态。

時(shí)間序列分析在計(jì)量經(jīng)濟(jì)學(xué)和財(cái)務(wù)分析中具有重要意義首装,但也可以應(yīng)用于了解趨勢(shì)做決策和對(duì)行為模式的變化做出反應(yīng)的領(lǐng)域。其中例如仙逻,作為主要石油和天然氣供應(yīng)商的MapR融合數(shù)據(jù)平臺(tái)客戶將傳感器放在井上,將數(shù)據(jù)發(fā)送到MapR Streams檬贰,然后將其用于趨勢(shì)監(jiān)測(cè)井的狀況,如體積和溫度桥言。在金融方面葵礼,時(shí)間序列分析用于股票價(jià)格,資產(chǎn)和商品的價(jià)格的預(yù)測(cè)鸳粉。計(jì)量經(jīng)濟(jì)學(xué)家長(zhǎng)期利用“差分自回歸移動(dòng)平均模型”(ARIMA)模型進(jìn)行單變量預(yù)測(cè)届谈。

ARIMA模型已經(jīng)使用了幾十年,并且很好理解疼约。然而程剥,隨著機(jī)器學(xué)習(xí)的興起,以及最近的深度學(xué)習(xí)织鲸,其他模式正在被探索和利用搂擦。

深度學(xué)習(xí)(DL)是基于一組算法的機(jī)器學(xué)習(xí)的分支,它通過使用由多個(gè)非線性變換組成的人造神經(jīng)網(wǎng)絡(luò)(ANN)架構(gòu)來嘗試對(duì)數(shù)據(jù)進(jìn)行高級(jí)抽象然后建模瀑踢。更為流行的DL神經(jīng)網(wǎng)絡(luò)之一是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)橱夭。RNN是依賴于其輸入的順序性質(zhì)的一類神經(jīng)網(wǎng)絡(luò)。這樣的輸入可以是文本棘劣,語音,時(shí)間序列首昔,以及序列中的元素的出現(xiàn)取決于在它之前出現(xiàn)的元素。例如拘荡,一句話中的下一個(gè)字撬陵,如果有人寫“雜貨”最有可能是“商店”而不是“學(xué)校”蟋定。在這種情況下草添,給定這個(gè)序列,RNN可能預(yù)測(cè)是商店而不是學(xué)校抄淑。

人工神經(jīng)網(wǎng)絡(luò)

實(shí)際上驰后,事實(shí)證明,雖然神經(jīng)網(wǎng)絡(luò)有時(shí)是令人畏懼的結(jié)構(gòu)郑原,但使它們工作的機(jī)制出奇地簡(jiǎn)單:隨機(jī)梯度下降夜涕。對(duì)于我們網(wǎng)絡(luò)中的每個(gè)參數(shù)(如權(quán)重或偏差),我們所要做的就是計(jì)算相對(duì)于損耗的參數(shù)的導(dǎo)數(shù)酸役,并在相反方向微調(diào)一點(diǎn)驾胆。

ANNs使用稱為反向傳播(有想了解BP算法的可以參考BP算法雙向傳,鏈?zhǔn)角髮?dǎo)最纏綿)的方法來調(diào)整和優(yōu)化結(jié)果暑塑。反向傳播是一個(gè)兩步過程锅必,其中輸入通過正向傳播饋送到神經(jīng)網(wǎng)絡(luò)中,并且在通過激活函數(shù)變換之前與(最初隨機(jī)的)權(quán)重和偏差相乘驹愚。你的神經(jīng)網(wǎng)絡(luò)的深度將取決于你的輸入應(yīng)該經(jīng)過多少變換劣纲。一旦正向傳播完成,反向傳播步驟通過計(jì)算產(chǎn)生誤差的權(quán)重的偏導(dǎo)數(shù)來調(diào)整誤差劫瞳。一旦調(diào)整權(quán)重绷柒,模型將重復(fù)正向和反向傳播步驟的過程,以最小化誤差率直到收斂伺绽。下圖中你看到這是一個(gè)只有一個(gè)隱藏層的ANN嗜湃,所以反向傳播不需要執(zhí)行多個(gè)梯度下降計(jì)算。

循環(huán)神經(jīng)網(wǎng)絡(luò)

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)被稱為循環(huán)是因?yàn)樗鼈儗?duì)輸入序列中的所有元素執(zhí)行相同的計(jì)算杖挣。由于RNN的廣泛應(yīng)用刚陡,RNN正在變得非常受歡迎橘荠。它們可以分析時(shí)間序列數(shù)據(jù),如股票價(jià)格哥童,并提供預(yù)測(cè)贮懈。在自動(dòng)駕駛系統(tǒng)中,他們可以預(yù)測(cè)汽車軌跡并幫助避免事故各聘。他們可以將句子抡医,文檔或音頻樣本作為輸入早敬,它們也可以應(yīng)用于自然語言處理(NLP)系統(tǒng)大脉,如自動(dòng)翻譯,語音對(duì)文本或情感分析琐驴。

上圖是RNN架構(gòu)的示例秤标,并且我們看到xt是時(shí)間步長(zhǎng)t的輸入。例如牢酵,x1可能是時(shí)間段1中的股票的第一個(gè)價(jià)格怖现。st是在時(shí)間步長(zhǎng)tn處的隱藏狀態(tài),并且使用激活函數(shù)基于先前的隱藏狀態(tài)和當(dāng)前步驟的輸入來計(jì)算潘拨。St-1通常被初始化為零饶号。ot是步驟t的輸出。例如琅束,如果我們想預(yù)測(cè)序列中的下一個(gè)值算谈,那么它將是我們時(shí)間序列中概率的向量然眼。

RNN隱藏層的成長(zhǎng)是依賴于先前輸入的隱藏狀態(tài)或記憶,捕獲到目前為止所看到的內(nèi)容高每。任何時(shí)間點(diǎn)的隱藏狀態(tài)的值都是前一時(shí)間步驟中的隱藏狀態(tài)值和當(dāng)前時(shí)間的輸入值進(jìn)行函數(shù)計(jì)算的結(jié)果鲸匿。RNN具有與ANN不同的結(jié)構(gòu),并且通過時(shí)間(BPTT)使用反向傳播來計(jì)算每次迭代之后的梯度下降运授。

一個(gè)小例子:

此示例使用3個(gè)節(jié)點(diǎn)的小型MapR群集完成。此示例將使用以下內(nèi)容:

Python 3.5

TensorFlow 1.0.1

Red Hat 6.9

如果你使用Anaconda撕氧,你需要保證你能夠安裝TensorFlow 1.0.1版本在你本地的機(jī)器上喇完。此代碼將不能在TensorFlow <1.0版本上使用剥啤。如果TensorFlow版本相同,則可以在本地機(jī)器上運(yùn)行并傳輸?shù)郊嚎陶铩F渌枰紤]的深度學(xué)習(xí)庫(kù)是MXNet牺丙,Caffe2,Torch和Theano粟判。Keras是另一個(gè)為TensorFlow或Theano提供python包的深度學(xué)習(xí)庫(kù)峦剔。

MapR提供了用戶喜好的集成Jupyter Notebook(或Zeppelin)的功能。我們將在這里顯示的是數(shù)據(jù)管道的尾端呻澜。在分布式環(huán)境中運(yùn)行RNN時(shí)間序列模型的真正價(jià)值是你可以構(gòu)建的數(shù)據(jù)流水線惨险,將聚合的系列數(shù)據(jù)推送到可以饋送到TensorFlow計(jì)算圖中的格式辫愉。

如果我正在聚合來自多個(gè)設(shè)備(IDS,syslogs等)的網(wǎng)絡(luò)流一屋,并且我想預(yù)測(cè)未來的網(wǎng)絡(luò)流量模式行為冀墨,我可以使用MapR Streams建立一個(gè)實(shí)時(shí)數(shù)據(jù)管道,將這些數(shù)據(jù)聚合成一個(gè)隊(duì)列蔚出,進(jìn)入我的TensorFlow模型。對(duì)于這個(gè)例子稀余,我在集群上只使用一個(gè)節(jié)點(diǎn)趋翻,但是我可以在其他兩個(gè)節(jié)點(diǎn)上安裝TensorFlow,并且可以有三個(gè)TF模型運(yùn)行不同的超參數(shù)师骗。

對(duì)于這個(gè)例子讨惩,我生成了一些虛擬數(shù)據(jù)。

我們?cè)谖覀兊臄?shù)據(jù)中有209個(gè)觀察結(jié)果黍少。我want確保我對(duì)每個(gè)批次輸入都有相同的觀察次數(shù)处面。

我們看到的是我們的訓(xùn)練數(shù)據(jù)集由10個(gè)批次組成鸳君,包含20個(gè)觀測(cè)值。每個(gè)觀察值是單個(gè)值的序列或颊。

現(xiàn)在我們有了我們的數(shù)據(jù)囱挑,我們來創(chuàng)建一個(gè)將執(zhí)行計(jì)算的TensorFlow圖。

這里有很多事情需要處理游添。例如我們正在指定我們用來預(yù)測(cè)的周期數(shù)通熄。我們指定我們的變量占位符。我們初始化一種使用的RNN單元格(大小100)和我們想要的激活函數(shù)的類型廊酣。ReLU代表“整流線性單元”赏枚,是默認(rèn)的激活功能晓猛,但如果需要戒职,可以更改為Sigmoid透乾,Hyberbolic Tangent(Tanh)等。

我們希望我們的輸出與我們的輸入格式相同蚓曼,我們可以使用損失函數(shù)來比較我們的結(jié)果钦扭。在這種情況下床绪,我們使用均方誤差(MSE)癞己,因?yàn)檫@是一個(gè)回歸問題,我們的目標(biāo)是最小化實(shí)際和預(yù)測(cè)之間的差異痹雅。如果我們處理分類結(jié)果绩社,我們可能會(huì)使用交叉熵。現(xiàn)在我們定義了這個(gè)損失函數(shù)贮尉,可以定義TensorFlow中的訓(xùn)練操作朴沿,這將優(yōu)化我們的輸入和輸出網(wǎng)絡(luò)。要執(zhí)行優(yōu)化魏铅,我們將使用Adam優(yōu)化器坚芜。Adam優(yōu)化器是一個(gè)很好的通用優(yōu)化器货岭,可以通過反向傳播實(shí)現(xiàn)漸變下降疾渴。

現(xiàn)在是時(shí)候在我們的訓(xùn)練數(shù)據(jù)上實(shí)施這個(gè)模型了屯仗。

我們將指定我們的批次訓(xùn)練序列循環(huán)的迭代/紀(jì)元的數(shù)量。接著桩撮,我們創(chuàng)建我們的圖形對(duì)象(tf.Session())峰弹,并初始化我們的數(shù)據(jù)鞠呈,以便在我們遍歷歷元時(shí)被饋送到模型中『当縮寫輸出顯示每100個(gè)紀(jì)元后的MSE窘茁。隨著我們的模型提供數(shù)據(jù)向前和反向傳播運(yùn)行山林,它調(diào)整應(yīng)用于輸入的權(quán)重并運(yùn)行另一個(gè)訓(xùn)練時(shí)期,我們的MSE得到了持續(xù)改善(減少)桑孩。最后砂蔽,一旦模型完成,它將接受參數(shù)并將其應(yīng)用于測(cè)試數(shù)據(jù)中镣隶,以Y的預(yù)測(cè)輸出安岂。

我們來看看我們的預(yù)測(cè)跟實(shí)際相差多少帆吻。對(duì)于我們的測(cè)試數(shù)據(jù),我們集中在整個(gè)209個(gè)周期的最后20個(gè)時(shí)期次员。

看來這還有一些改進(jìn)的空間。這可以通過改變隱藏的神經(jīng)元的數(shù)量或增加迭代的數(shù)量來完成市殷。優(yōu)化我們的模式是一個(gè)試錯(cuò)的過程刹衫,但我們有一個(gè)好的開始带迟。這是隨機(jī)數(shù)據(jù),所以我們期待著很好的結(jié)果嗅绰,但是也許將這個(gè)模型應(yīng)用到實(shí)時(shí)系列中會(huì)給ARIMA模型帶來一些競(jìng)爭(zhēng)壓力婶肩。

數(shù)據(jù)科學(xué)家因?yàn)镽NN(和深度學(xué)習(xí))的出現(xiàn),有了更多可用的選項(xiàng)以此來解決更多有趣的問題。許多數(shù)據(jù)科學(xué)家面臨的一個(gè)問題是险毁,一旦我們進(jìn)行了優(yōu)化们童,我們?nèi)绾巫詣?dòng)化我們的分析運(yùn)行?擁有像MapR這樣的平臺(tái)允許這種能力跷跪,因?yàn)槟憧梢栽诖笮蛿?shù)據(jù)環(huán)境中構(gòu)建吵瞻,訓(xùn)練甘磨,測(cè)試和優(yōu)化你的模型。在這個(gè)例子中卿泽,我們只使用了10個(gè)訓(xùn)練批次滋觉。如果我的數(shù)據(jù)允許我利用數(shù)百批次齐邦,而不僅僅是20個(gè)時(shí)期侄旬,我想我一定能改進(jìn)這種模式煌妈。一旦我做到了,我可以把它打包成一個(gè)自動(dòng)化腳本汰蜘,在一個(gè)單獨(dú)的節(jié)點(diǎn)族操,一個(gè)GPU節(jié)點(diǎn)比被,一個(gè)Docker容器中運(yùn)行。這就是在融合數(shù)據(jù)平臺(tái)上進(jìn)行數(shù)據(jù)科學(xué)和深度學(xué)習(xí)的力量枷莉。

希望上述的文章能夠幫到你理解TensorFlow尺迂。

更多閱讀:

閱讀博客“TensorFlow on MapR教程:一個(gè)完美的地方開始

閱讀博客“深度學(xué)習(xí):我的選項(xiàng)是什么笤妙?

閱讀博客“通過SparkR和H2O的MapR融合數(shù)據(jù)平臺(tái)上的可擴(kuò)展機(jī)器學(xué)習(xí)

希望上述的介紹能夠幫助到你!

本文由北郵@愛可可-愛生活老師推薦噪裕,阿里云云棲社區(qū)組織翻譯蹲盘。

文章原標(biāo)題《Applying Deep Learning to Time Series Forecasting with TensorFlow》,

作者:Justin Brandenburg?譯者:袁虎?審閱:董昭男

文章為簡(jiǎn)譯膳音,更為詳細(xì)的內(nèi)容召衔,請(qǐng)查看原文

原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市祭陷,隨后出現(xiàn)的幾起案子苍凛,更是在濱河造成了極大的恐慌颗胡,老刑警劉巖毫深,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異毒姨,居然都是意外死亡哑蔫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闸迷,“玉大人嵌纲,你說我怎么就攤上這事⌒裙粒” “怎么了逮走?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)今阳。 經(jīng)常有香客問我师溅,道長(zhǎng),這世上最難降的妖魔是什么盾舌? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任墓臭,我火速辦了婚禮,結(jié)果婚禮上妖谴,老公的妹妹穿的比我還像新娘窿锉。我一直安慰自己,他們只是感情好膝舅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布嗡载。 她就那樣靜靜地躺著,像睡著了一般仍稀。 火紅的嫁衣襯著肌膚如雪洼滚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天琳轿,我揣著相機(jī)與錄音判沟,去河邊找鬼。 笑死崭篡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吧秕。 我是一名探鬼主播琉闪,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼砸彬!你這毒婦竟也來了颠毙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤砂碉,失蹤者是張志新(化名)和其女友劉穎蛀蜜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體增蹭,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滴某,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霎奢。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡户誓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幕侠,到底是詐尸還是另有隱情帝美,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布晤硕,位于F島的核電站悼潭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舞箍。R本人自食惡果不足惜舰褪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望创译。 院中可真熱鬧抵知,春花似錦、人聲如沸软族。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽立砸。三九已至掖疮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颗祝,已是汗流浹背浊闪。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留螺戳,地道東北人搁宾。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像倔幼,于是被迫代替她去往敵國(guó)和親盖腿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容