成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從零開始:如何使用LSTM預測匯率變化趨勢

開發 開發工具
在這篇文章中,我們將通過 LSTM 討論時序預測模型,數據科學家 Neelabh Pant 也會為大家描述他利用循環神經網絡預測貨幣兌換匯率的經驗。

作為一個在美國生活的印度人,Neelabh 和家鄉之間存在恒定的金錢流動。如果在市場中,美元更加強勢,則印度盧比相對貶值,因此從印度購買 1 美元需要更多的盧比。如果美元相對弱勢,則購買 1 美元需要的盧比會更少。

如果可以預測第二天的美元的價值,那么可以以此為參考做出更好的決策,最小化風險并***化收益。了解到神經網絡的強大,尤其是循環神經網絡,Neelabh 想到了預測美元和盧比的兌換匯率的點子。

通常情況下,預測匯率有很多方法,例如:

  • 購買力平價(PPP)
  • 相對經濟實力法
  • 計量經濟模型
  • 時間序列模型

在這篇文章中,我們將告訴你如何利用時序分析和機器學習時序模型來預測未來的兌換匯率變化。

序列問題

我們從序列問題的討論開始,最簡單的序列機器學習問題是「一對一」問題。

One to One

One to One

在這種問題中,向模型輸入一個數據或一個向量,模型會對輸入生成一個預測結果。無論是回歸、分類還是通過卷積網絡的圖像分類都屬于這個類型。通過擴展這種模式,我們可以將其改造成利用過去的輸入和輸出進行學習的模型。

一對多問題是一對一問題的擴展,因為一對一問題的模型只有一個輸入和輸出。而現在模型的輸出再饋送到模型作為新的輸入,這樣模型就會生成多個輸出,下面我們將了解一對多為什么又稱為循環神經網絡。

One to Many

One to Many

由于連接方式構成有向循環,循環神經網絡可以處理序列問題。就是說,循環神經網絡可以在每一次的迭代中保持網絡形態不變的前提下,將輸出作為下一步的輸入。從編程的角度上說就像是利用確定的輸入和一些隱藏變量,在固定不變的程序上保持運行。最簡單的循環神經網絡,將時間軸展開之后,可以看成一個全連接神經網絡。

RNN Unrolled Time

RNN Unrolled Time

在這個單變量的例子中,只包括了兩個權重。權重 u 和當前輸入 x_t 相乘,權重 w 和上一步輸出 y_t-1 相乘。這個利用過去輸出和當前輸入的公式很像指數加權移動平均法(exponential weighted moving average,EWMA)。

只要將網絡單元一個接一個堆疊起來,就可以輕易建立一個深度循環神經網絡。簡單的循環神經網絡可以很好的處理短期記憶模型,但是在長時依賴項中,模型將會遇到根本的困難。

長短期記憶神經網絡(Long Short-Term Neural Network)

之前說過,簡單的循環神經網絡無法捕捉長期依賴序列中的特征,是一個根本的困難。這個問題很重要,因為我們希望以后我們的 RNN 可以分析文本和回答問題,在這些任務中很自然的需要分析長序列的文字。

90 年代末,Sepp Hochreiter 和 Jurgen Schmidhuber 提出了 LSTM,這種模型對長期依賴性的處理要比 RNN、隱馬爾可夫模型和其他序列學習方法要優秀地多。

LSTM架構

LSTM架構

LSTM 模型將各種運算集合在一個單元中,LSTM 有一個內部狀態變量,并且該狀態變量可以從一個單元傳遞到另一個 LSTM 單元中,同時通過門運算進行修改。

1. 遺忘門

 遺忘門

這是一個 Sigmoid 層,以 t-1 時刻的輸出和 t 時刻的當前輸入為參量串接到一個單張量中,加上線性變換,***用 sigmoid 函數變換。由于 sigmoid 函數的性質,這個門的值被限定在 0 和 1 之間,該值與內態的值相乘,這也它會被叫做忘記門的原因。如果 ft=0 那么過去的內態將被忽略,如果 ft=1 那么內態將被完整的傳遞。

2. 輸入門

輸入門

輸入門以過去的輸出和當前輸入為參量并饋送到一個 sigmoid 層。同樣,這個門的輸出值也是在 0 和 1 之間,輸入門的值將和候選層的輸出值相乘。

這個層對當前輸入和過去輸出應用了雙曲正切函數作為變換(激活函數),結果將返回一個與內部狀態相加的候選向量。

內態通過這個規則不斷更新:

過去的狀態和遺忘門的值相乘,然后加上輸出門所給出新的候選狀態。

3. 輸出門

輸出門

這個門控制多大比率的內部狀態將被傳遞到輸出,這和其它門的工作方式類似。

以上描述的三個門有互相獨立的權重和偏置,因此,網絡將分別學會,保持過去輸出的概率、保持當前輸入的概率以及將內態傳遞給輸出的概率。

在一個循環神經網絡中,不僅需要輸入數據,還需要輸入網絡過去的狀態。舉例來說,如果我喊「嘿!我開車的時候發生了不得了的事!」這時你的大腦的一部分將把這句話分解成,「噢,Neelabh 正在給我講一個故事,這個故事的主人公是 Neelabh 并且故事發生在路上。」然后,你需要將我剛才告訴你的話記住一部分。在接下來的故事中,你都必須隨時保留部分聽過的話的印象,才能逐漸明白整個故事。

另一個例子是關于是關于視頻加工的,同樣需要用到循環神經網絡。大多數情況下,一部電影中,當前畫面所描述的內容相當依賴于上一個畫面的內容。經過一段時間的訓練后,循環神經網絡將學會保留過去畫面的哪些部分和保留的比率,以及保留當前畫面的多少信息,豐富的結構使其擁有比簡單前饋神經網絡強大得多的性能。

時間序列預測

RNN 的強大功能令我印象深刻,因此我決定使用 RNN 預測美元和盧比的兌換匯率。這個計劃中使用的數據集是從 1980 年 1 月 2 日到 2017 年 8 月 10 日的兌換匯率的數據。稍后我將給出鏈接供你們下載和實驗。

數據集樣本

表1.數據集樣本

數據集展示了 1 美元相對盧比的價值,我們一共擁有總數目為 13 730 條從 1980 年 1 月 2 日到 2017 年 8 月 10 日的數據記錄。

美元對印度盧比匯率變化曲線

美元對印度盧比匯率變化曲線

在這段期間,1 美元的盧比價值總體在上升。不難看到,在 2007-2008 年之間,由于經濟大衰退,美國經濟經歷了一次重大的危機,這個圖描繪了從 20 世紀末期到 21 世紀早期世界市場經濟衰退的軌跡。

這段期間內,全世界的經濟發展狀況不是很好,特別是北美和歐洲(包括俄羅斯),都陷入了明顯的衰退。不過,與此同時,很多新興的經濟體受到的沖擊要小得多,特別是中國和印度,在這場災難中,他們的經濟依然得到了大幅增長。

訓練集和測試集的分割

現在,為了訓練模型,我們需要將數據集分成測試和訓練集。在做時間序列時,以明確的日期為界限將數據集分為訓練和測試兩部分是很重要的。畢竟,你不會希望你的測試數據的時間排在你的訓練數據之前。

在我們的實驗中將定義一個日期,比如 2010 年 1 月 1 日,作為分界日期。訓練數據的日期從 1980 年 1 月 2 日到 2009 年 12 月 31 日,包括大約 11 000 個數據點。

測試數據的日期從 2010 年 1 月 1 日到 2017 年 8 月 10 日,包括大約 2700 個數據點。

訓練-測試

訓練-測試

接下來要將數據集歸一化,即將訓練數據轉換格式并將測試數據按同樣的格式映射到訓練數據上,這樣可以避免假定知道測試數據的規模帶來的影響。歸一化或者數據轉換意味著新變量的定義域將限定在 0 和 1 之間。

神經網絡模型

一個全連接模型即將一個輸入變換成一個輸出的簡單神經網絡,它的構建就如同簡單的回歸模型那樣通過前一天的價格預測第二天的價格。

我們以均方差作為損失函數,并使用隨機梯度下降優化算法。經過足夠多代的訓練,將能開始尋找足夠好的局部***解。下方是全連接層性質的總結。

全連接層

全連接層

經過 200 個 epoch 的訓練,或者 eraly_callbacks 的出現(無論哪個先出現),這個模型就開始嘗試學習數據的模式和行為。由于我們區分了訓練集和測試集,現在我們可以預測測試數據集并和真實值比較。

真值(藍色)與預測值(橙色)對比

真值(藍色)與預測值(橙色)對比

正如你所看到的,模型的表現并不好。基本上它只是重復過去的值,只有輕微的變化。全連接網絡無法從單一的過去值預測未來的值。接下來我們嘗試循環神經網絡,看看它工作的如何。

長短期記憶

我們使用的周期循環模型是一個單層序列模型,層內使用 6 個 LSTM 節點,輸入的維度設為(1,1),即網絡的單個輸入只含一個特征值。

LSTM模型

LSTM模型

***一層是一個密集層,損失函數為均方誤差函數,并且采用隨機梯度下降作為優化器。我們將模型訓練了 200 個 epoch,并采用了中斷訓練回調。模型的性質總結在上方展示。

LSTM預測

LSTM預測

這個模型幾乎學會了將這些年的數據完全重現,并且在一個簡單的前饋神經網絡的輔助下,不出現延遲。不過,它仍然低估了一些確定的觀察值,模型仍然有很大的改進空間。

模型的改進

這個模型還可以做很多的改進,通過改進優化器的方法以改變模型結構的方式可以有很多種。還有另一種很重要的改進方法是來自數據流管理系統的滑動時間窗口法。

這種方法源于只有最近的數據才是最重要的觀點,即可以從一年時長的數據中嘗試預測下一年***天的值。就從數據集中獲取重要模式并高度依賴于過去觀察值而言,滑動時間窗口法是非常有用的。

你們也可以按自己的方式嘗試去改進模型,看看模型會如何應答這些變化。

數據集

我已經把數據集公布在 github 項目中,請隨意下載,盡情使用吧。

GitHub 地址:https://github.com/neelabhpant/Deep-Learning-in-Python

有用的學習資源

我個人一直追隨著幾位我最喜歡的數據科學家,比如 Kirill Eremenko,Jose Portilla,Dan Van Boxel(更知名的是 Dan Does Data 這個名號),還有很多。他們大部分都有自己的博客并在上面討論今天主題的各方面,如 RNN,CNN,LSTM,甚至還有最近出現的新技術,神經圖靈機。

盡可能去跟進各種人工智能大會的新聞。順便提一下,有興趣的可以關注,Kirill Eremenko 即將帶著他優秀的隊伍在 San Diego 作關于機器學習,神經網絡和數據科學的報告。

結論

通過學習過去行為的主要特征并區分哪些特征才是對預測未來所需,LSTM 模型確實是很強大的工具。已經有幾種應用管法廣泛使用了 LSTM,比如語音識別、作曲、手寫字識別,甚至還有我最近研究中的對人體移動和交通運輸的預測實驗。

對于我們而言,LSTM 就是一個擁有自己的記憶并能像天才一樣做出精準決策的模型。

原文:

https://blog.statsbot.co/time-series-prediction-using-recurrent-neural-networks-lstms-807fa6ca7f

【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2015-11-17 16:11:07

Code Review

2019-01-18 12:39:45

云計算PaaS公有云

2018-04-18 07:01:59

Docker容器虛擬機

2024-12-06 17:02:26

2020-07-02 15:32:23

Kubernetes容器架構

2018-05-09 20:08:09

人工智能深度學習Python

2010-05-26 17:35:08

配置Xcode SVN

2018-09-14 17:16:22

云計算軟件計算機網絡

2024-05-15 14:29:45

2015-05-06 09:36:05

Java語言從零開始學習

2018-04-16 16:31:56

前端開發從零開始

2021-04-21 20:42:42

Nadam梯度優化

2018-03-14 11:15:06

2023-12-27 08:47:41

PrometheusLinux架構

2015-10-15 14:16:24

2024-04-10 07:48:41

搜索引擎場景

2011-04-06 15:55:50

開發webOS程序webOS

2024-11-28 10:35:47

2025-01-26 16:57:02

2014-07-22 13:09:21

android
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人午夜激情 | 久色网| 超碰导航 | 超碰成人免费观看 | 国产精品久久午夜夜伦鲁鲁 | 国产精品免费一区二区三区四区 | 日韩精品视频中文字幕 | 国产精品96久久久久久 | 亚洲一区二区日韩 | www.日本精品 | 久久久久国产一区二区三区 | 亚洲一区二区中文字幕 | 亚洲a一区二区 | 国产中文字幕在线 | 一区中文字幕 | 日韩欧美精品在线 | 国产在线观看不卡一区二区三区 | 激情伊人网 | 我想看一级黄色毛片 | 国产精品1区| 国产精品一区二 | 欧美精品久久久久久久久老牛影院 | 人人干人人草 | 91一区二区| 久久久综合色 | 精品欧美乱码久久久久久1区2区 | 欧美白人做受xxxx视频 | 国产精品久久性 | 国产精品v| 亚洲欧美中文日韩在线v日本 | 免费av手机在线观看 | 一级片免费观看 | 日韩在线中文字幕 | 久久久久久久久久久久久9999 | 中文字幕一区二区三区不卡在线 | 久色视频在线 | 精品国产一区二区三区四区在线 | 亚洲免费视频播放 | 国产精品中文在线 | 一级毛片色一级 | 精产国产伦理一二三区 |