有大佬聊深度學習時,忽然問了一個問題,若是一個float從0開始,以一個很小的步長好比0.000001不停作累加,最後會發生什麼?
固然是一臉懵逼,對問題自己以及背後的問題一無所知。照着他的提示,間斷作個實驗,結果貼在這裏:網絡
第一列是最後停留的數,第二列是累加次數,第三列是步長學習
stop: 3.05176e-05 total: 24945431 step: 1e-12
stop: 0.000244141 total: 24945431 step: 8e-12
stop: 0.00195312 total: 24945431 step: 6.4e-11
stop: 0.015625 total: 24945431 step: 5.12e-10
stop: 0.125 total: 24945431 step: 4.096e-09
stop: 1 total: 24945431 step: 3.2768e-08
stop: 8 total: 24945431 step: 2.62144e-07
stop: 64 total: 24945431 step: 2.09715e-06
stop: 512 total: 24945431 step: 1.67772e-05
stop: 4096 total: 24945431 step: 0.000134218
stop: 32768 total: 24945431 step: 0.00107374
stop: 262144 total: 24945431 step: 0.00858993
stop: 2.09715e+06 total: 24945431 step: 0.0687195
stop: 1.67772e+07 total: 24945431 step: 0.549756深度學習
浮點數之間的間隙遠超過個人想象,好比512.0f下一個浮點數的間隔大於0.00001,這意味這什麼,
若是神經網絡訓練過程當中,反向傳播中梯度太低,根本不會對參數有任何影響,梯度消失神經網絡