iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0

前言

昨天介紹了Single Layer Neural network與Deep Neural Network,而模型的結構在隱藏層(hidden layer)越來越多時,看似比過去提到的模型要複雜許多,因此如何估計其中包含的參數(也就是每層之間的權重weight)將是一個重要的問題,昨天提到處理迴歸問題的loss function可以使用squared error loss,而處理分類問題時可以使用cross-entropy loss,今天將會簡單的描述Single Layer Neural network中迴歸問題估計參數的方法。

Single Layer Neural network

  • 示意圖(假設p = 4,選擇五個activation k = 5):
    https://ithelp.ithome.com.tw/upload/images/20221008/20151276DLEAUfYVxD.png
  • 估計(類似非線性最小平方法的問題):
    https://ithelp.ithome.com.tw/upload/images/20221008/201512763vbrDfCFFh.png
  • 以上的估計方式看起來與線性迴歸模型利用最小平方法估計參數類似,但是在神經網路這樣的架構下,參數有一個巢狀結構,且此估計式並不是凸函數(convex function),無法直接利用微分的方式來尋找最小值。因此,在Neural Network常利用迭代的方式,也就是梯度下降法(Gradient descent)。
  • Gradient Descent:
    https://ithelp.ithome.com.tw/upload/images/20221008/20151276SE1Xlu2YVt.png
  1. 由一個猜測的起始值 https://chart.googleapis.com/chart?cht=tx&chl=%5Ctheta%5E0 開始進行迭代(t=0)
  2. 持續進行迭代直到 https://chart.googleapis.com/chart?cht=tx&chl=R(%5Ctheta) 不再減少。
  • 例如以下的示意圖,https://chart.googleapis.com/chart?cht=tx&chl=R(%5Ctheta)非convex function,因此圖形中可能有不止一個最佳解,而Gradient descent就能以迭代的方式解決此問題:
    https://ithelp.ithome.com.tw/upload/images/20221008/20151276o9rwxTzk6b.png

https://chart.googleapis.com/chart?cht=tx&chl=R(%5Ctheta)https://chart.googleapis.com/chart?cht=tx&chl=%5Ctheta%20%3D%20%5Ctheta_m 的梯度(Gradient),或稱為偏導數(Partial Derivatives),表示使 https://chart.googleapis.com/chart?cht=tx&chl=R(%5Ctheta) 沿著 https://chart.googleapis.com/chart?cht=tx&chl=%5Ctheta 增加最快的方向,因此在此處我們希望將沿著該方向的相反方向來找處可以使 https://chart.googleapis.com/chart?cht=tx&chl=R(%5Ctheta) 達到最小值。例如:
https://ithelp.ithome.com.tw/upload/images/20221008/20151276wAaw2kQBAz.png

  • 計算https://chart.googleapis.com/chart?cht=tx&chl=R(%5Ctheta) 的梯度(Gradient):
    https://ithelp.ithome.com.tw/upload/images/20221008/20151276EuzrHrnRPG.png

可以發現最後用來進行參數迭代的兩個式子中都包含了殘差(residual), https://chart.googleapis.com/chart?cht=tx&chl=y_i%20-%20f_%7B%5Ctheta%7D%20(x_i) ,等於最後的配飾值(fitted value)與觀察值的差異某些程度上決定了模型中的參數估計值,因此這種估計方式稱為反向傳播法(Backpropagation)。以上是neural network最簡單結構的參數估計方式,不過隱藏層更多且更複雜的模型利用到的方式大方向也是如此,甚至可以利用迴歸模型中加上正規化(regularizatoin)的方式,在估計式中加入懲罰項,可以處理overfitting的問題。

Python

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
 
model = Sequential()
# 加入第一層(input layer),10個節點,與input shape 13 element vector (1D).
model.add(Dense(10, input_shape=(13,), activation='relu'))
# 加入第二層(hidden layer),10個節點
model.add(Dense(10, activation='relu'))
# 加入第三層(output layer),1個節點
model.add(Dense(1))

小結

到目前為止,這個系列文章也介紹的許多機器學習中常見的模型,以及這兩天介紹的深度學習的模型,此時會面臨到的問題是:若幾個模型可以處理某個特定的問題時,應該選擇哪個模型?與像是黑盒子的深度學習模型相比,線性迴歸模型(Linear regression)、支持向量機(SVM)與隨機森林(Random forest)等方法,更簡單並且容易呈現以及理解。當這些方法表現都差不多時,選擇簡單的模型方便使用者做解釋以及理解,因此有了強大的深度學習後,仍可以在處理資料時嘗試使用這些簡單的模型。


參考資料與圖片來源:
An Introduction to Statistical Learning


上一篇
Day27 類神經網路(Neural Network)(1)
下一篇
Day29 主成分分析(Principal Components Analysis, PCA)
系列文
人類學習機器學習的學習筆記 with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言