3. 研究方法
3.4 神經網路
神經網路又稱人工神經網路(Artificial Neural Network, ANN),是一種自適 應系統可模仿生物神經網路結構的機器學習模型。在神經網路中,一個簡單的 人工節點稱作神經元(neuron),可以接受其他神經元的輸出或是從外部的輸入,
經過非線性函數(non-linear function)的計算並輸出,如圖一及公式(3)所示。
圖一、 單一神經元
𝑂 = 𝑓(∑𝑛𝑖=1𝑥𝑖𝑤𝑖+ 𝑏), (3) 公式中的𝑂為輸出值,𝑓為激勵函數(activation function),𝑥為輸入,𝑤為權重 (weight),𝑏為偏值(bias)。每個輸入點皆對應一個權重,在計算時會將輸入和對應 的權重相乘後做加總再加上一個偏值,經過激勵函數獲得輸出。
𝑥 1 𝜔 1 𝑥 2
… …
𝜔 2
𝑠𝑢𝑚 𝑓 𝑂
𝑥 𝑛 𝜔 𝑛
𝑏𝑖𝑎𝑠
11
3.4.1 激勵函數(activation function)
如果是使用線性(linear)激勵函數,那麼輸入和輸出之間是線性的關係,如此 一來神經網路有多少層都是線性組合,文獻[25]表示利用非線性激勵函數可增加 它的能力,使它可以學習複雜的數據使得神經網路的效能更為強大。以下為本研 究所使用之非線性激勵函數:
⚫ Sigmoid Function:又稱邏輯函數(logistic function)亦可稱為 S 函數,該激勵 函數會使輸出介於0 和 1 之間,如公式(4)所示。
𝑓(𝑥) = 𝜎(𝑥) =
11+𝑒−𝑥 . (4)
圖二、 Sigmoid Function 範圍圖
⚫ Tanh Function:又稱雙曲正切函數,該激勵函數會使得輸出介於 1 和-1 之間,
如公式(5)所示。
𝑓(𝑥) = 𝑡𝑎𝑛ℎ(𝑥) =
(𝑒𝑥−𝑒−𝑥)(𝑒𝑥+𝑒−𝑥) . (5)
12
圖三、 Tanh Function 範圍圖
⚫ ReLU Function:又稱整流線性單元,該激勵函數是神經網路最常被使用的激 勵函數,若輸入值為正,則輸出值為該值大小,若輸入值為負,則輸出值為 0,如公式(6)所示。
𝑓(𝑥) = 𝑚𝑎𝑥(0, 𝑥)
. (6)圖四、 ReLU Function 範圍圖
13
⚫ Leaky ReLU Function:為了解決 ReLU 負數無法作用的問題,用一個極小值 的係數來乘上負數,使得在負數區域時偏向激活,可以解決梯度消失的問題,
如公式(7)所示,下圖五係數為 0.2。
𝑓(𝑥) = 𝑚𝑎𝑥(𝑎𝑥, 𝑥) , 𝑎 = 0.1 ~0.3
. (7)圖五、 Leaky ReLU Function 範圍圖
3.4.2 損失函數(loss function)
本研究採用的損失函數為均方誤差(mean-square error, MSE)[26],此法可以 測試選股模型的預測效能,計算方法是使用模型預測輸出與真實輸出之差值的平 方和的平均。MSE 計算方式如下公式(8)。
𝑀𝑆𝐸 =
∑ (𝑦𝑖−𝑦𝑖𝑝)2 𝑛𝑖=1
𝑛
,
(8)其中𝑦𝑖為真實輸出,𝑦𝑖𝑝為選股模型預測輸出,𝑛為資料總筆數。
14
3.4.3 梯度下降法(Gradient Descent, GD)
梯度下降度(Gradient Descent,簡稱 GD),是一種不停更新參數尋找最佳解 的方法,主要是利用梯度下降法尋找出一個函數的局部最小值(local minimum),
一般梯度下降法後續延伸出隨機梯度下降法,簡稱SGD(Stochastic Gradient Descent),在此簡單說明 GD 與 SGD 之差別,在更新參數時,GD 是一次使用全 部訓練集去計算損失函數的梯度並將參數進行更新一次,而 SGD 一次跑一個樣 本然計算出一次梯度後就更新一次參數,這個樣本是隨機抽取的,所以稱之為隨 機梯度下降法,後來此法加上動量(momentum),簡稱 SGDM(Stochastic Gradient Descent Momentum),如下為 SGDM 的公式(10):
𝑥
𝑡+1← 𝑥
𝑡− 𝜂
𝛻𝑓(𝑥
𝑡)+ 𝛾(𝑥
𝑡− 𝑥
𝑡−1) , (10)
15
3.4.4 反向傳播法(Backpropagation, BP)
在訓練神經網路的過程中,有許多的參數需要梯度下降,而為了使梯度下降 法快速的更新每個輸入的權重及偏值。而反向傳播法[28]的主要理念為使用連鎖 法則(chain rule)結合梯度下降法對損失函數(loss function)求偏導數,假設有一神 經網路如下圖六,輸入層為
𝑖
1、 𝑖
2,隱藏層為ℎ
1、 ℎ
2,每個神經元之間階有權 重𝑤
1至𝑤
2(圖中括號內數值為對應之權重)以及𝑏
1、 𝑏
2為偏值,𝑜
1、 𝑜
2為輸出層。16
圖六、 神經網路圖
以此圖為例子,其中𝐸𝑡𝑜𝑡𝑎𝑙為神經網路的整體誤差,以下為神經網路的誤差公式:
𝐸
𝑜1= 1 2 ⁄ (𝑡𝑎𝑟𝑔𝑒𝑡
𝑜1− 𝑜𝑢𝑡
𝑜1)
2,=
(17)𝐸
𝑡𝑜𝑡𝑎𝑙= 𝐸
𝑜1+ 𝐸
𝑜2,
(18)接著𝐸𝑡𝑜𝑡𝑎𝑙對w5偏微分其公式如下:
𝜕𝐸𝑡𝑜𝑡𝑎𝑙
𝜕𝑤5
= −(𝑡𝑎𝑟𝑔𝑒𝑡
𝑜1− 𝑜𝑢𝑡
𝑜1) ∗ 𝑜𝑢𝑡
𝑜1(1 − 𝑜𝑢𝑡
𝑜1) ∗ 𝑜𝑢𝑡
ℎ1,
(19) 之後對𝑤
5更新權重,其公式如下:
𝑤
5+= 𝑤
5− 𝜂 ∗
𝜕𝐸𝑡𝑜𝑡𝑎𝑙𝜕𝑤5
,
(20)17