深度學習參考手冊

Star

作者: 阿夫辛·阿米迪謝爾文·阿米迪

翻譯者: kevingo

審校者: TobyOoO

神經網路

神經網路是一種透過 layer 來建構的模型。經常被使用的神經網路模型包括了卷積神經網路 (CNN) 和遞迴式神經網路 (RNN)。

架構 神經網路架構所需要用到的詞彙描述如下:

Illustration

我們使用 $i$ 來代表網路的第 $i$ 層、$j$ 來代表某一層中第 $j$ 個隱藏神經元的話,我們可以得到下面得等式:

\[\boxed{z_j^{[i]}={w_j^{[i]}}^Tx+b_j^{[i]}}\]

其中,我們分別使用 $w$ 來代表權重、$b$ 代表偏差項、$z$ 代表輸出的結果。

激活函數 激活函數 是為了在每一層尾端的神經元帶入非線性轉換而設計的。底下是一些常見 激活函數:

SigmoidTanhReLULeaky ReLU
$g(z)=\displaystyle\frac{1}{1+e^{-z}}$$g(z)=\displaystyle\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$$g(z)=\textrm{max}(0,z)$$g(z)=\textrm{max}(\epsilon z,z)$
其中 $\epsilon\ll1$
IllustrationIllustrationIllustrationIllustration

交叉熵損失函式 在神經網絡中,交叉熵損失 $L(z,y)$ 通常如下定義:

\[\boxed{L(z,y)=-\Big[y\log(z)+(1-y)\log(1-z)\Big]}\]

學習速率 學習速率通常用 $\alpha$ 或 $\eta$ 來表示,目的是用來控制權重更新的速度。學習速度可以是一個固定值,或是隨著訓練的過程改變。現在最熱門的最佳化方法叫作 Adam,是一種隨著訓練過程改變學習速率的最佳化方法。

反向傳播演算法 反向傳播演算法是一種在神經網路中用來更新權重的方法,更新的基準是根據神經網路的實際輸出值 and 期望輸出值之間的關係。權重的導數是根據連鎖律 (chain rule) 來計算,通常會表示成下面的形式:

\[\boxed{\frac{\partial L(z,y)}{\partial w}=\frac{\partial L(z,y)}{\partial a}\times\frac{\partial a}{\partial z}\times\frac{\partial z}{\partial w}}\]

因此,權重會透過以下的方式來更新:

\[\boxed{w\longleftarrow w-\alpha\frac{\partial L(z,y)}{\partial w}}\]

更新權重 在神經網路中,權重的更新會透過以下步驟進行:

丟棄法 丟棄法 是一種透過丟棄一些神經元,來避免過擬和的技巧。在實務上,神經元會透過機率值的設定來決定要丟棄或保留

卷積神經網絡

卷積層的需求 我們使用 $W$ 來表示輸入資料的維度大小、$F$ 代表卷積層的 filter 尺寸、$P$ 代表對資料墊零 (zero padding) 使資料長度齊一後的長度,$S$ 代表卷積後取出的特徵 stride 數量,則輸出的維度大小可以透過以下的公式表示:

\[\boxed{N=\frac{W-F+2P}{S}+1}\]

批次正規化 它是一個藉由 $\gamma, \beta$ 兩個超參數來正規化每個批次 $\{x_i\}$ 的過程。每一次正規化的過程,我們使用 $\mu_B, \sigma_B^2$ 分別代表平均數和變異數。請參考以下公式:

\[\boxed{x_i\longleftarrow\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta}\]

批次正規化的動作通常在全連接層/卷積層之後、在非線性層之前進行。目的在於接納更高的學習速率,並且減少該批次學習初期對取樣資料特徵的依賴性。

遞歸神經網路 (RNN)

閘的種類 在傳統的遞歸神經網路中,你會遇到幾種閘:

輸入閘遺忘閥輸出閘
要不要將資料寫入到記憶區塊中?要不要將存在在記憶區塊中的資料清除?要寫多少資料到記憶區塊?要不要將資料從記憶區塊中取出?

LSTM 長短期記憶模型是一種遞歸神經網路,藉由導入遺忘閘的設計來避免梯度消失的問題

強化學習及控制

強化學習的目標就是為了讓代理 (agent) 能夠學習在環境中進化

定義

馬可夫決策過程 一個馬可夫決策過程 (MDP) 包含了五個元素 $(\mathcal{S},\mathcal{A},\{P_{sa}\},\gamma,R)$:

策略 一個策略 $\pi$ 指的是一個函數 $\pi:\mathcal{S}\longrightarrow\mathcal{A}$,這個函數會將狀態映射到行為

注意:我們會說,我們給定一個策略 $\pi$,當我們給定一個狀態 $s$ 我們會採取一個行動 $a=\pi(s)$

價值函數 給定一個策略 $\pi$ 和狀態 $s$,我們定義價值函數 $V^{\pi}$ 為:

\[\boxed{V^\pi(s)=E\Big[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+...|s_0=s,\pi\Big]}\]

貝爾曼方程 最佳的貝爾曼方程是將價值函數 $V^{\pi^<em>}$ 和策略 $\pi^</em>$ 表示為:

\[\boxed{V^{\pi^*}(s)=R(s)+\max_{a\in\mathcal{A}}\gamma\sum_{s'\in S}P_{sa}(s')V^{\pi^*}(s')}\]

注意:對於給定一個狀態 $s$,最佳的策略 $\pi^*$ 是:

\[\boxed{\pi^*(s)=\underset{a\in\mathcal{A}}{\textrm{argmax}}\sum_{s'\in\mathcal{S}}P_{sa}(s')V^*(s')}\]

價值迭代演算法 價值迭代演算法包含兩個步驟:

1) 針對價值初始化:

\[\boxed{V_0(s)=0}\]

2) 根據之前的值,迭代此價值的值:

\[\boxed{V_{i+1}(s)=R(s)+\max_{a\in\mathcal{A}}\left[\sum_{s'\in\mathcal{S}}\gamma P_{sa}(s')V_i(s')\right]}\]

最大概似估計 針對狀態轉移機率的最大概似估計為:

\[\boxed{P_{sa}(s')=\frac{\#\textrm{狀態 }s\textrm{ 下進行動作 }a\textrm{ 並且進入狀態 }s‘\textrm{ 的次數}}{\#\textrm{狀態 }s\textrm{ 下進行動作 }a\textrm{ 的次數}}}\]

Q學習 演算法 $Q$學習 演算法是針對 $Q$ 的一個 model-free 的估計,如下:

\[\boxed{Q(s,a)\leftarrow Q(s,a)+\alpha\Big[R(s,a,s')+\gamma\max_{a'}Q(s',a')-Q(s,a)\Big]}\]