iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
2
Google Developers Machine Learning

AI可以分析股票嗎?系列 第 5

股票預測需要什麼樣的NN模型?

  • 分享至 

  • xImage
  •  

零、A Deep Learning VM(繼上篇)

上一篇的最後我跑起了最簡單的MNIST分類訓練,但結果顯示 它並沒有使用GPU啊!!!!!!
原因在於龜毛如我,就是希望使用conda來管理我的環境,而我所做的更是使用conda安裝包的cudaToolKits安裝方法,直接將特定版本的cuda安裝在虛擬環境之中,目的在於防止當Tensorflow更新後,很可能會去支援不同的cuda版本,我將其完美地切開,在環境管理上可謂非常輕鬆。而面對這麼風騷的操作,結果顯示... 失敗~!

好吧...這是你們逼我的,我只好用回來最簡單的了Deep Learning VM

同樣的配置方式,同樣的操作
不同在於它並非使用conda管理環境 而且擺明了要你用母環境就好(啊~我的強迫症啊!)
幫你裝好jupyter、tensorflow、cuda、cudnn,你要做的事情就是先布置jupyter和連上jupyter

如果有設定預設目錄,出現權限問題,可以使用$sudo -R chmod 777 /<你的目錄>/即可解決

  • 我們來看一下上次的MNIST範例和這次的範例 運行效能 上的差別吧!(上次是幾秒來著? 75左右吧?
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
60000/60000 [==============================] - 20s 331us/sample - loss: 2.2820 - acc: 0.1399 - val_loss: 2.2545 - val_acc: 0.2962
Epoch 2/12
60000/60000 [==============================] - 7s 119us/sample - loss: 2.2359 - acc: 0.2354 - val_loss: 2.1975 - val_acc: 0.4533
Epoch 3/12
60000/60000 [==============================] - 7s 116us/sample - loss: 2.1762 - acc: 0.3255 - val_loss: 2.1190 - val_acc: 0.5295
Epoch 4/12
60000/60000 [==============================] - 7s 116us/sample - loss: 2.0925 - acc: 0.4062 - val_loss: 2.0107 - val_acc: 0.5934
Epoch 5/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.9781 - acc: 0.4721 - val_loss: 1.8633 - val_acc: 0.6533
Epoch 6/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.8306 - acc: 0.5328 - val_loss: 1.6781 - val_acc: 0.7165
Epoch 7/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.6638 - acc: 0.5802 - val_loss: 1.4720 - val_acc: 0.7579
Epoch 8/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.4903 - acc: 0.6161 - val_loss: 1.2714 - val_acc: 0.7808
Epoch 9/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.3371 - acc: 0.6424 - val_loss: 1.0988 - val_acc: 0.7991
Epoch 10/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.2049 - acc: 0.6692 - val_loss: 0.9603 - val_acc: 0.8138
Epoch 11/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.1046 - acc: 0.6845 - val_loss: 0.8539 - val_acc: 0.8262
Epoch 12/12
60000/60000 [==============================] - 7s 116us/sample - loss: 1.0229 - acc: 0.7028 - val_loss: 0.7719 - val_acc: 0.8327
Test loss: 0.771869880771637
Test accuracy: 0.8327
- CPU GPU
時間 75s 7s

嗯! 10倍呢!

另外再給他多訓練幾次,準確度要上到90%以上是完全沒問題的XD

一、回歸正題,NN模型有哪些?

大致分三種,全鏈結、捲積和時間序列

1. fully connected neural network(FC)

又名「全鏈結神經網路」,這邊一定要推廣一下在Google Study Jam的Launching into Machine Learning課程,有個單元叫做Tensorflow Playground的實作,淺顯易懂地帶領你走進NN這個世界。

  • 其中所創建的HIDDEN LAYERS的連接方式,就是使用「全連接」的方式。

訓練過程中可以看著自己的幾個neural被不斷地更新權重,且神奇地去Fit到圖片 這絕對不是迴歸(Regression)可以做到的事情 其中最大的關鍵就是使用activation function...不說了,實際玩一遍吧!

  • 其中一個例子漩渦圖

    • 你可以調整的參數包括Batch sizeActivationHIDDEN LATERS,而Epoch代表開始後,訓練了幾次,更厲害的是,你建立的神經網路可以自己去調整每條線的權重,可以試著調整看看能不能自己調整成功。 此外,在沒有HIDDEN LAYERS的情況下,可以想像成就是Regression
  • 附上我自己亂玩的結果

    • 很有趣吧!

2. convolutional neural network(CNN)

又名「捲積神經網路」,本文開頭第一個範例就是使用CNN。要了解這個就要稍微提一下影像處理中的捲積是什麼?

簡單來說,捲積我們都會有一個「捲積核」(kernel)下去掃描(如上圖中間那六個),其類似於加權平均的計算後會得到一個值,然後往左或往下跳幾格做下一次的加權平均。在CV領域已經有不少應用了,可以查看維基百科-Kernel (image processing),立面列舉如果要讓圖像模糊或是取邊緣所需要用到的 捲積和參數

那麼CNN呢?

CNN概念很簡單,就是假設 我不知道這個核參數是多少,我們希望找到它 ,然後使用梯度下降法和海量的資料去找到它們 (我自己覺得這個解釋很棒呀XD),所以才會看到淺層的CNN輸出結果可以取得簡單的邊,深層的輸出結果可以越來越趨近於一個物件,如同在上方TensorFlow Playground中,中間層所輸出的特徵般。

3. recurrent neural networks(RNN)

又名「遞歸神經網絡」,其宗旨在於可以預測 時間序列 型的資料,如 : 說話人、文字訊息...等,與時間相關的資訊。

  • RNN的網路架構非常特別,就是 自己的輸出一部分會回到輸入進行下一次預測 (如圖)
    • RNN裡面可以是一個類神經網路,其輸入為x和自己的隱藏輸出,我們可以解釋成隱藏出書所代表的就是 狀態 資訊,如文字訊息中,其可能代表「現在是第幾個字、前面的字意思大概是什麼、我接下來可能需要用上那些字」等訊息。

4. 整理一下

以上就是簡單地介紹三種網路,我希望盡可能地將我的理解分享出去,下方表格是簡單的 應用向 的整理

- 應用
FC 分類
CNN 取特徵
RNN 處理時間序列問題

二、疑問 : 股票預測的話,要怎麼選擇NN模型?

選擇模型是個很重要的關卡,但不代表必須要第一次選擇就對,而是應該在訓練過程中發現哪個模型比較好再去修改。

  • 股票是個time-base的資料

相信很明顯地股票是一個跟著時間在跑的資料,早些時間股票浮動可能會影響晚些的股票交易。 所以要使用RNN嗎? 再思考一下,RNN雖然處理時間序列資料,但明顯地「股票」這東西,有時候受大環境影響,有時候又有人為炒作的成分在裡面,如果能夠區分此時的資料是 人為炒作 還是 受大環境影響 呢? 抱歉,機器不會知道...

所以...RNN ?

接下來我會先使用RNN-LSTM來做看看,因為我也沒有做過,所以要等結果出來後再看看要改哪裡XD

參考

An intuitive guide to Convolutional Neural Networks


上一篇
GCP上架設VM - 筆記
下一篇
股票預測初探 :: 只有過程沒有結果~嗚嗚
系列文
AI可以分析股票嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言