我在閱讀Neural Networks and Deep Learning(前兩章),我試圖按照自己的方式建立自己的ANN來對MNIST數據集中的數字進行分類。MNIST - 培訓卡住
我一直在撓頭,現在已經好幾天了,因爲我的實現在測試集(大約5734/10000)分類數字達到57%的精確度達到峯值之後達到10個紀元(訓練集的精度停滯後第十個時期,並且測試集的準確性可能因過度擬合而惡化)。
我正在使用與本書中幾乎相同的配置:2層前饋ANN(784-30-10),所有層完全連接;標準的sigmoid激活函數;二次成本函數;權重以相同的方式初始化(取自均值爲0,標準差爲1的高斯分佈) 唯一的區別是我使用在線培訓而不是批量/小批量培訓,學習率爲1.0而不是3.0(儘管我已經嘗試了小批量訓練+ 3.0的學習速度)
然而,我的實現並沒有在一堆時代之後通過60%的百分點,因爲在本書中ANN超過了90% 第一個時代幾乎完全相同的配置。 起初我搞砸了實現BP算法,但重新實現不同的反向傳播三次,在每個重新實現完全相同的結果後,我難倒...
結果反傳算法的例子產生:
使用上述相同配置(在線訓練+學習率爲1.0)的簡單前饋網絡:3個輸入神經元,2個隱藏神經元和1個輸出神經元。
初始權重初始化爲如下:
Layer #0 (3 neurons)
Layer #1 (2 neurons)
- Neuron #1: weights=[0.1, 0.15, 0.2] bias=0.25
- Neuron #2: weights=[0.3, 0.35, 0.4] bias=0.45
Layer #2 (1 neuron)
- Neuron #1: weights=[0.5, 0.55] bias=0.6
鑑於[0.0,0.5,1.0]的輸入,輸出爲0.78900331。 Backpropagating對於相同的輸入,並用1.0所需的輸出給出了以下的偏導數(DW =衍生物WRT重量,分貝=衍生物WRT偏壓):
Layer #0 (3 neurons)
Layer #1 (2 neurons)
- Neuron #1: dw=[0, 0.0066968054, 0.013393611] db=0.013393611
- Neuron #2: dw=[0, 0.0061298212, 0.012259642] db=0.012259642
Layer #2 (1 neuron)
- Neuron #1: dw=[0.072069918, 0.084415339] db=0.11470326
更新與這些偏導數的網絡產生一個校正的輸出值爲0.74862305。
如果任何人都將是一種足以證實上述結果,這將有助於我極大的,因爲我已經差不多排除了反傳被錯誤作爲問題的原因。
有沒有人處理MNIST問題曾經遇到過這個問題? 即使我應該檢查的東西的建議將有助於,因爲我真的迷失在這裏。