深度學習基本概念簡介

GeekDragon發表於2024-04-16

一、Linear Models' Bias

上篇學習機器學習一文中,所構造的 $y = b + wx_0$ 函式是一個linear model亦即線性模型,但是linear models有缺陷的——它過於簡單了。實際應用中,我們所面臨的不會只是一個簡單的linear model,因此我們需要更復雜的models。

image
比如上圖中的紅色曲線,如何找到它的表示式呢?

image

可以透過許多條藍色的函式相加得到紅色曲線的函式。所有的Piecewise Linear Curves都可以用一組類似的“藍色函式 + 常數”來表達出來,即使是曲線也可以,如下圖:

image


二、如何找“藍色函式”?

Sigmoid Function
$y = c\frac{1}{1 + e ^ {-(b + wx_1)}} = c*sigmoid(b + wx_1)$
其函式影像如下表示:

image

我們可以對sigmoid函式中的引數做調整,得到不同形狀的sigmoid函式,來逼近藍色函式。
改變w可以改變sigmoid函式的斜率;改變b可以左右移動其位置;改變c可以改變其高度,如下圖:
image

所以不同的常數c,截距b和斜率w就會得到不同的sigmoid函式,然後將它們加起來就能夠逼近目標函式,即

\[y = b + \sum_{i}c_isigmoid(b_i + w_ix_1) \]

image

\[y = b + w_1 \longrightarrow y = b + \sum_{i}c_isigmoid(b_i + w_ix_1) \]


三、深度學習裡的三個步驟

仿照前面ML裡的三個步驟,我們也可以將其完全套在DL中

1. Function with unkonwn parameters
不同於ML裡我們定義的簡單的linear model,透過上面的分析我們可以得到一個全新的model——擁有更多features的model!
將前面的linear表示式代入sigmoid函式:

\[y = b + \sum_{j}w_jx_j \longrightarrow y = b + \sum_{i}c_isigmoid(b_i + \sum_{j}w_{ij}x_i) \]

其中:
\(j\)代表第\(j\)個feature(即第\(j\)天的點選量);\(i\)代表選擇第\(i\)個sigmoid函式;\(w_{ij}\)表示在第\(i\)個sigmoid函式中\(x_j\)的權值
如圖,分別代入計算就能得到:
image

\[r_1 = b_1 + w_{11}x_1 + w_{12}x_2 + w_{13}x_3 \]

\[r_2 = b_2 + w_{21}x_1 + w_{22}x_2 + w_{23}x_3 \]

\[r_3 = b_3 + w_{31}x_1 + w_{32}x_2 + w_{33}x_3 \]

由線性代數的知識可以發現,上面的三個式子可以寫作矩陣的乘法:

\[r = b + W x \]

\[\begin{bmatrix}r_1 \\ r_2 \\ r_3 \end{bmatrix} = \begin{bmatrix}b_1 \\ b_2 \\ b_3 \end{bmatrix} + \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \\ w_{31} & w_{32} & w_{33} \end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \\ x_3 \end{bmatrix} \]

然後將\(r\)代入sigmoid函式,記作\(a = \sigma(r)\),乘上係數\(c\),再加上\(b\)就得到最後的\(y\),即\(y = b + c^Ta\)
image

最終得到:$$y = b + c^T \sigma({\bf b} + Wx)$$(\(b\)\(\bf b\)區別開)

將W矩陣中的行或者列取出來,與\(b\)\(\bf b\)\(c^T\)豎著排列起來組成:

\[\theta = \begin{bmatrix} \theta_1 \\ \theta_2 \\ \theta_3 \\. \\. \\. \end{bmatrix} \]

就進入了第2步找Loss函式

2. Define Loss from Training Data
Loss函式與ML一節中講的一樣,定義函式\(L(\theta)\)
先給定一組引數代入\(y = b + c^T \sigma({\bf b} + Wx)\)計算出\(y\)的值,然後將其與真實值(label) \(\widehat{y}\)比較,得到誤差\(e\),最後便可得Loss函式的表示式:

\[L = \frac{1}{N}\sum_{n}e_n \]

進而到第3步找一個最優解的步驟

3. Optimization
\(\theta^\star = arg min_{\theta}L\)

  • (Randomly)Pick initial value \(\theta^0\)
    gradient \(g = \begin{bmatrix} \dfrac{\partial L}{\partial \theta_1}|_{\theta = \theta^0} \\ \dfrac{\partial L}{\partial \theta_2}|_{\theta = \theta^0} \\ . \\ . \\ . \end{bmatrix}\)
    可以記作:\(g =\nabla L(\theta^0)\)(就是梯度符號)

  • Compute gradient again and again
    \(g =\nabla L(\theta^0)\) \(\theta^1 \leftarrow \theta^0 - \eta g\)
    \(g =\nabla L(\theta^1)\) \(\theta^2 \leftarrow \theta^1 - \eta g\)
    \(g =\nabla L(\theta^2)\) \(\theta^3 \leftarrow \theta^2 - \eta g\)

還有另一種計算方式,將整個L中的資料分成N個batch(批),每批資料中有B個資料,與上面的方法略有差異,每次update時,是依次從每個batch裡取出資料來update,當把所有的batch更新過一遍,叫1個epoch(時期)
image


四、從sigmoid到ReLU

ReLU(Rectified Linear Unit)是另一種 Activation Function(啟用函式),前面提到的分段Sigmoid(Hard-Sigmoid)函式的表示式可能會很難寫出來,但是其可以看作是2個ReLU函式相加,ReLU函式的表示式如下: $$c*max(0, b + wx_1)$$

image

如此,我們前面y的表示式就可以變成:

\[y = b + \sum_{i}c_isigmoid(b_i + \sum_{j}w_{ij}x_i) \]

\[\longrightarrow \]

\[y = b + \sum_{2i}c_{i}max(0, b_i + \sum_{j}w_{ij}x_j) \]

注意換成ReLU函式後,\(i\)變為原來的2倍,因為2個ReLU函式才能合成一個Sigmoid函式


五、到底為什麼叫Deep Learning ?

上面的例子裡我們只套了一層啟用函式就得到了y的表示式,但是人們發現套的層數多一些預測的效果就會更好一些,所以不妨多套幾層:

image

其中我們用到的sigmoid或ReLU函式叫neuron(神經元),許多neuron套起來就叫neural network(神經網路)。後來人們又給它們取了新的名字,每一排的neuron叫作hidden layer(隱含層),有許多層layer所以叫作Deep Learning

image

但是層數越多不見得預測效果會越好,在課堂例項中,雖然隨著層數的增加,在訓練資料上的效果越來越好,但是在預測資料上誤差出現了增大,這便是overfitting(過擬合)

相關文章