[學習筆記] 深度學習概述: 核心概念 (Deep Learning: Core Concepts)


本文以 Deep Learning in a Nutshell: Core Concepts 的架構為主軸, 搭配 Stanford University 教授 Andrew Ng 的 Machine Learning 課程內容, 及 MIT 出版的 Deep Learning 書籍內容, 簡述 Deep Learning 的核心概念.

核心概念


機器學習 (Machine Learning)


機器學習的作法分為 2 大類:

1. 指導式學習 (Supervised Learning)


目標是要讓 learning algorithm (model) 能夠根據 training set 學習到 hypothesis function \(h\), 使得 \(h(x)\) 能夠盡可能準確地預測 \(y\).

Training set 包含了期望的 output \(y\), 因此稱為 supervised learning.

舉例來說, 給定 1 萬張圖片, 標示每張圖片是否包含人臉, 據此 training model, 讓 model 能夠預測新的圖片是否包含人臉.

舉例來說, 給定 m 組房屋坪數、臥房數、層數、屋齡及其成交價的資料, 對於坪數為 \(x_1\), 臥房數為 \(x_2\), 層數為 \(x_3\), 屋齡為 \(x_4\) 的房屋, 預測其成交價 \(y\).
Training set: m 組房屋坪數、臥房數、層數、屋齡及其成交價的資料

\(x_1\): 坪數

\(x_2\): 臥房數

\(x_3\): 層數

\(x_4\): 屋齡

\(x_1, x_2, x_3, x_4\): features

n: 4 (feature 數為 4)

y: 成交價
在 training 的過程中, 會餵 data 給 model, model 作出預測, 並根據預測的結果和期望的結果的誤差修正 model 的參數, 使得預測能夠越來越準確.
2. 非指導式學習 (Unsupervised Learning)
在 unsupervised learning 下, 並沒有提供 learning algorithm (model) 期望的答案.

主要的應用是分群 (clustering), 把資料根據變數之間的關聯性進行分群.

舉例來說, 給定 1 萬條新聞, 根據不同的屬性 (財經, 政治, 健康, 娛樂...) 自動進行分類.

特徵工程 (Feature Engineering)




Features 是指輸入給 model 有哪些維度的變數 \(x_1, x_2, ..., x_n\).

Feature engineering 是指, 決定要有哪些 features.

Features 選得越好, 預測的結果會越準確.

但並沒有一定的準則來判斷要放哪些 features 進來是比較好的.

如果不容易判斷應該要放哪些 features 進來, 可採用 feature learning algorithm, 讓 model 自動學習 features.

特徵學習 (Feature Learning)




以 multi-layer neural network 為例, hidden layers 就是自動學習到的 features.

舉例:


第 1 層 hidden layer 學習到的 features: blobs, edges

第 2 層 hidden layer 學習到的 features: noses, eyes, cheeks

第 3 層 hidden layer 學習到的 features: faces

深度學習 (Deep Learning)




Deep learning 的 hidden layers 較多, 當在 input 與 output 之間有複雜的非線性關聯性時, deep learning 可做出更準確的預測.

此外, deep learning 可以偵測到連續的資料之間較長的非線性時間相依性.

基礎概念


邏輯回歸 (logistic regression)




當我們要預測的 y 是 continuous value, 此 learning algorithm 稱之為 regression.
舉例來說, 給定 1 萬組人臉及其年齡的資料. 輸入一張新的人臉, 預測其年齡.
當我們要預測的 y 是 discrete value, 此 learning algorithm 稱之為 logistic regression 或 classification.
舉例來說, 給定 1 萬組腫瘤大小及其為良性或惡性的資料. 對於大小為 S 的腫瘤, 預測它是屬於良性或惡性.

給定 1 萬張包含人, 貓, 狗的圖片. 輸入一張新的圖片, 判斷是人, 貓, 或狗.
Logistic regression 採用 sigmoid function 作為 hypothesis function, 把 input 轉換為 0 到 1 之間的值, 可視作 \(y = 1\) 的機率, 用來預測結果是 0 或是 1.
Sigmoid function: \( g(z) = \frac{1}{1 + e^{-z}} \)



\( z = \theta^T x \)

\( h_\theta (x) = g( \theta^T x ) = g(z) \)

\(h_\theta (x)\): estimated probability that y = 1 on input x

\( h_{\theta}(x) = P(y=1|x;\theta) \): probability that \(y = 1\), given \(x\), parameterized by \(\theta\)
類神經網路 (artificial neural network) 裡的每個 neuron 就是在做 logistic regression.

類神經網路 (artificial neural network)




類神經網路把 input 轉換成第 1 個 layer 的 feature, 再把第 1 個 layer 的 feature 轉換成第 2 個 layer 的 feature, 以此類推, 在最後一個 layer (output layer) 作出預測.



\( a_i^{(j)} \): "activation" of unit \( i \) in layer \( j \)

\( \Theta^{(j)} \): matrix of weights controlling function mapping from layer \( j \) to layer \( j+1 \)

\( a_1^{(2)} = g(\Theta_{10}^{(1)}x_0 + \Theta_{11}^{(1)}x_1 + \Theta_{12}^{(1)}x_2 + \Theta_{13}^{(1)}x_3) \)

\( a_2^{(2)} = g(\Theta_{20}^{(1)}x_0 + \Theta_{21}^{(1)}x_1 + \Theta_{22}^{(1)}x_2 + \Theta_{23}^{(1)}x_3) \)

\( a_3^{(2)} = g(\Theta_{30}^{(1)}x_0 + \Theta_{31}^{(1)}x_1 + \Theta_{32}^{(1)}x_2 + \Theta_{33}^{(1)}x_3) \)

\( h_{\Theta}(x) = a_1^{(3)} = g(\Theta_{10}^{(2)}a_0^{(2)} + \Theta_{11}^{(2)}a_1^{(2)} + \Theta_{12}^{(2)}a_2^{(2)} + \Theta_{13}^{(2)}a_3^{(2)}) \)

原本餵給 model 的 inputs (features) 是 \(x_1, x_2, x_3 \), 而最後是根據 \( a_1^{(2)}, a_2^{(2)}, a_3^{(2)} \) 計算出 \( h_{\Theta}(x) \), 進行預測。

因此本質上等於是 neural network 學習到了新的 features \( a_1^{(2)}, a_2^{(2)}, a_3^{(2)} \), 據此進行預測.

Neural network 藉由 backpropagation algorithm 找出一組 \(\Theta\), 使得預測的結果是夠準確的 (誤差是夠小的).

類神經網路單元 (logistic unit)




\( x =
\begin{bmatrix}
x_0
\\ x_1
\\ x_2
\\ x_3
\end{bmatrix}, \theta =
\begin{bmatrix}
\theta_0
\\ \theta_1
\\ \theta_2
\\ \theta_3
\end{bmatrix} \)

\( \theta \): weights or parameters

\( g(z) = \frac{1}{1 + e^{-z}} \)

\( z = \theta^T x \)

\( h_{\theta}(x) = g( \theta^T x ) = g(z) \)

\( h_{\theta}(x) \): sigmoid (logistic) activation function

捲積深度學習 (Convolutional Deep Learning)


捲積 (Convolution)


Discrete convolution:
\(s(t) = (x * w)(t) = \sum_{a=-\infty}^{\infty}x(a)w(t-a) \)

\(x\): input

\(w\): kernel

\(s\): feature map
在 machine learning 的應用, input 通常是 multi-dimensional array of data, kernel 通常是 multi-dimensional array of parameters, 這些 multi-dimensional arrays 稱為 tensors.

若以 2-dimensional image I 作為 input, 並使用 2-dimensional kernel K:
\( S(i, j) = (I * K)(i, j) = \sum_m \sum_n I(m, n) K(i-m, j-n) \)
通常, neural network 會實作 cross-correlation (實際上是 convolution without flipping the kernel, 習慣上, 也稱此為 convolution):
\( S(i, j) = (I * K)(i, j) = \sum_m \sum_n I(i+m, j+n) K(m, n) \)

舉例:
Input Image:


Kernel (edge detector):
\(\begin{bmatrix}
-1 & -1 & -1 \\
-1 & 8 & -1 \\
-1 & -1 & -1
\end{bmatrix} \)

Feature map:

池化 (Pooling)


Pooling 是把鄰近的幾個 input, 做運算, 可降低資訊量, 同時保留重要的資訊.
以 max pooling 為例, 會把鄰近的 input 取 max, 作為 output.
當 input 資訊有平移或旋轉等變化時, pooling 仍可保留其中的特徵 (invariance to local translation).

當我們更在乎資訊是否具有某個特徵, 而不是資訊中的哪個位置完全符合某個特徵, pooling 的 invariance to local translation 的特性是很有幫助的.

捲積神經網路 (Convolutional Neural Network, CNN)


當 neural network 中至少有 1 個 layer 採用 convolution 運算來取代 general matrix multiplication, 這種 neural network 就稱為 Convolutional Network (CNN).

Convolutional layer 的 parameter 可透過學習不斷調整, 使得可以萃取出重要的資訊.
舉例來說, 進行 face detection, 各層 convolutional layer 分別可辨識出: blogs/edges, noses/eyes/cheeks, faces.


通常 CNN 會採用多個 convolutional layer, 而各個 layer 會依序萃取出越來越抽象的資訊.

CNN 通常會採用 pooling layer, 如此當 input 資訊有平移或旋轉等變化時, 仍可以辨認出來. Pooling 也有助於降低 memory 的需求及運算量.

延伸閱讀


[NVIDIA Developer Blog] Deep Learning in a Nutshell: Core Concepts, Tim Dettmers

[學習筆記] 機器學習: 邏輯回歸 (Machine learning: Logistic Regression)

[學習筆記] 機器學習: 神經網路的結構 (Machine Learning: Neural Networks: Representation)

[學習筆記] 機器學習: 神經網路的學習 (Machine Learning: Neural Networks: Learning)

[書籍] Deep Learning, Ian Goodfellow, Yoshua Bengio, and Aaron Courville