深度學習參考手冊
原創內容 Afshine Amidi 和 Shervine Amidi
翻譯: kevingo. 審閱: TobyOoO.
神經網路
神經網路是一種透過 layer 來建構的模型。經常被使用的神經網路模型包括了卷積神經網路 (CNN) 和遞迴式神經網路 (RNN)。
架構 神經網路架構所需要用到的詞彙描述如下:
我們使用 $i$ 來代表網路的第 $i$ 層、$j$ 來代表某一層中第 $j$ 個隱藏神經元的話,我們可以得到下面得等式:
其中,我們分別使用 $w$ 來代表權重、$b$ 代表偏差項、$z$ 代表輸出的結果。
激活函數 激活函數 是為了在每一層尾端的神經元帶入非線性轉換而設計的。底下是一些常見 激活函數:
Sigmoid | Tanh | ReLU | Leaky 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$ |
交叉熵損失函式 在神經網絡中,交叉熵損失 $L(z,y)$ 通常如下定義:
學習速率 學習速率通常用 $\alpha$ 或 $\eta$ 來表示,目的是用來控制權重更新的速度。學習速度可以是一個固定值,或是隨著訓練的過程改變。現在最熱門的最佳化方法叫作 Adam,是一種隨著訓練過程改變學習速率的最佳化方法。
反向傳播演算法 反向傳播演算法是一種在神經網路中用來更新權重的方法,更新的基準是根據神經網路的實際輸出值和期望輸出值之間的關係。權重的導數是根據連鎖律 (chain rule) 來計算,通常會表示成下面的形式:
因此,權重會透過以下的方式來更新:
更新權重 在神經網路中,權重的更新會透過以下步驟進行:
- 步驟一: 取出一個批次 (batch) 的資料
- 步驟二: 執行前向傳播演算法 (forward propagation) 來得到對應的損失值
- 步驟三: 將損失值透過反向傳播演算法來得到梯度
- 步驟四: 使用梯度來更新網路的權重
丟棄法 丟棄法 是一種透過丟棄一些神經元,來避免過擬和的技巧。在實務上,神經元會透過機率值的設定來決定要丟棄或保留
卷積神經網絡
卷積層的需求 我們使用 $W$ 來表示輸入資料的維度大小、$F$ 代表卷積層的 filter 尺寸、$P$ 代表對資料墊零 (zero padding) 使資料長度齊一後的長度,$S$ 代表卷積後取出的特徵 stride 數量,則輸出的維度大小可以透過以下的公式表示:
批次正規化 (Batch normalization) 它是一個藉由 $\gamma, \beta$ 兩個超參數來正規化每個批次 $\{x_i\}$ 的過程。每一次正規化的過程,我們使用 $\mu_B, \sigma_B^2$ 分別代表平均數和變異數。請參考以下公式:
批次正規化的動作通常在全連接層/卷積層之後、在非線性層之前進行。目的在於接納更高的學習速率,並且減少該批次學習初期對取樣資料特徵的依賴性。
遞歸神經網路 (RNN)
閘的種類 在傳統的遞歸神經網路中,你會遇到幾種閘:
輸入閘 | 遺忘閥 | 閘 | 輸出閘 |
要不要將資料寫入到記憶區塊中? | 要不要將存在在記憶區塊中的資料清除? | 要寫多少資料到記憶區塊? | 要不要將資料從記憶區塊中取出? |
長短期記憶模型 長短期記憶模型是一種遞歸神經網路,藉由導入遺忘閘的設計來避免梯度消失的問題
強化學習及控制
強化學習的目標就是為了讓代理 (agent) 能夠學習在環境中進化
定義
馬可夫決策過程 一個馬可夫決策過程 (MDP) 包含了五個元素 $(\mathcal{S},\mathcal{A},\{P_{sa}\},\gamma,R)$:
- $\mathcal{S}$ 是一組狀態的集合
- $\mathcal{A}$ 是一組行為的集合
- $\{P_{sa}\}$ 指的是,當 $s\in\mathcal{S}$、$a\in\mathcal{A}$ 時,狀態轉移的機率
- $\gamma\in[0,1[$ 是衰減係數
- $R:\mathcal{S}\times\mathcal{A}\longrightarrow\mathbb{R}$ 或 $R:\mathcal{S}\longrightarrow\mathbb{R}$ 指的是獎勵函數,也就是演算法想要去最大化的目標函數
策略 一個策略 $\pi$ 指的是一個函數 $\pi:\mathcal{S}\longrightarrow\mathcal{A}$,這個函數會將狀態映射到行為
注意:我們會說,我們給定一個策略 $\pi$,當我們給定一個狀態 $s$ 我們會採取一個行動 $a=\pi(s)$
價值函數 給定一個策略 $\pi$ 和狀態 $s$,我們定義價值函數 $V^{\pi}$ 為:
貝爾曼方程 最佳的貝爾曼方程是將價值函數 $V^{\pi^*}$ 和策略 $\pi^*$ 表示為:
注意:對於給定一個狀態 $s$,最佳的策略 $\pi^*$ 是:
價值迭代演算法 價值迭代演算法包含兩個步驟:
1) 針對價值初始化:
根據之前的值,迭代此價值的值:
最大概似估計 針對狀態轉移機率的最大概似估計為:
$Q$學習 演算法 $Q$學習 演算法是針對 $Q$ 的一個 model-free 的估計,如下: