目錄
Ch4 - Neural Network and Classification
Binary Classification
二分類問題只需要一個輸出層結點,因爲我們只需指定一個閾值 threshold 就可以把結果分爲兩類。
當我們使用 Sigmoid 激活函數 + 交叉熵損失函數時,輸出層誤差有着十分簡潔的形式。詳細推導可以參考 爲什麼sigmoid激活函數,使用交叉熵損失函數更好。
Multiclass Classification
在多分類問題中,我們通常使輸出層的結點數目與分類數目相一致。
一個有效的策略是使用 one-hot 編碼,這時每一個輸出層結點都被映射到類向量的其中一個元素。
我們引入 Softmax 函數作爲激活函數,它不僅考慮了輸入數據的加權和,也考慮到了其他輸出結點的值。也就是說,對比 Sigmoid 函數,Softmax 函數考慮到了輸出結點之間的相對量級(relative magnitudes)。
Softmax 激活函數 + 交叉熵損失函數的誤差推導可以參考 簡單易懂的softmax交叉熵損失函數求導。注意這裏的誤差計算雖然看起來跟前面的 Sigmoid + 交叉熵 一樣,但這裏的 delta 和 e 是向量(之前的是標量),另外這樣的簡潔形式其實是 one-hot 編碼帶來的。
Ch5 - Deep Learning
在使用後向傳播算法時,添加額外的隱藏層反而常常導致較差的表現,深度學習爲我們提供瞭解決方案。實際上,深度學習並沒有任何關鍵技術上的革新,它帶來的是一系列細微的技術改良(technical improvements)的集合。
更深的網絡反而表現更差的原因是網絡沒有得到很好地訓練,後向傳播算法在訓練過程中存在着以下三個問題:Vanishing gradient, Over-fitting, Computational load.
解決梯度彌散/消失(Vanishing gradient )的一項代表性技術是使用 Rectified Linear Unit (ReLU) 激活函數。
Sigmoid 激活函數將輸出值限定在一定的範圍內,而 Relu 激活函數沒有此限制。另外,x > 0 時,導數爲 1,可見此時它能將誤差無衰減地向前傳遞。
解決過擬合問題的一項代表性技術是 Dropout(隨機失活),此外,添加正則項和使用更大的數據集也可有效避免模型過擬合。
最後,由於高性能硬件產品(GPU)的發展和其他一些算法(Batch normalization,批歸一化)的發現,深度學習的計算負荷(computational load)也被減輕到了一個可觀的水平。