深度學習入門教程(6)MNIST手寫數字識別

one_hot:

在多分類的網絡輸出層,我們會對於每一個輸出都有輸出一個概率矩陣表示該輸入對應每個分類的概率有多少,而我們實際的數據,爲了力求分類準確,應該是一個正確類別概率爲0,其餘分類概率均爲0的矩陣。而one_hot就是將我們把分類概率矩陣變爲0-1矩陣。

Batch:

我們有N個樣本參與訓練,每個樣本都會給不同方向的梯度帶來一個動量,但是一次全部計算是不現實的事情,尤其是在面對大數據量的時候,現有的硬件條件和速度並不能滿足要求,但是我們可以採用Batch的方法,一次只將部分的數據放入網絡訓練,雖然這樣做有失一定的準確性,但是隻要Batch設置的合理,整個函數的走向大趨勢依舊是往最小值點去的。一般將Batch設爲2的次冪,本人一般都是設在64左右,調整都以2的倍數進行,以滿足內存對齊的需求。

如果我們用全部的訓練集去訓練,走的曲線可能會貼近下面那條較爲平穩的線,但鑑於實際情況,我們可能無法一次訓練整個訓練集,我們採用Batch方法部分訓練,這樣走的方向可能更貼近上面的線,雖然迭代次數會增加,但是大方向是正確的,而且由於一次參與的數據量小,迭代過程進行得也比較快。

MNIST數據集訓練:

準確率上升趨勢:

可以見到,準確率在起初的上升還是比較快的,隨着迭代次數的增加,準確率趨於穩定,在某一個值震盪。

引起震盪有三種可能:

1)鞍點:在多元函數中,會存在一種點,他對於某些變量的梯度很大,對於某些變量的梯度很小,這可能導致我們的值不能按照目的往最低點去而是在鞍點附近震盪。

2)局部最小值:有可能因爲我們的步長設的過小,導致網絡的迭代陷入了某個局部最小值而沒有足夠的步長跳出,從而導致振盪現象。

3)全局最低點:我們知道,全局最低點只是一個點,想要通過梯度下降完全找到,在複雜的多元函數中,是十分困難的,要求的精度實在是太高,而我們的步長可能相對來說過大,因此也會在全局最低點附近震盪。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章