你確定經歷過這樣的時刻,看着電腦屏幕抓着頭,困惑着:「爲何我會在代碼中使用這三個術語,它們有什麼區別嗎?」由於它們看起來實在太類似了。算法
爲了理解這些術語有什麼不一樣,你須要瞭解一些關於機器學習的術語,好比梯度降低,以幫助你理解。網絡
這裏簡單總結梯度降低的含義…機器學習
梯度降低函數
這是一個在機器學習中用於尋找最佳結果(曲線的最小值)的迭代優化算法。學習
梯度的含義是斜率或者斜坡的傾斜度。優化
降低的含義是代價函數的降低。blog
算法是迭代的,意思是須要屢次使用算法獲取結果,以獲得最優化結果。梯度降低的迭代性質能使欠擬合的圖示演化以得到對數據的最佳擬合。get
梯度降低中有一個稱爲學習率的參量。如上圖左所示,剛開始學習率更大,所以降低步長更大。隨着點降低,學習率變得愈來愈小,從而降低步長也變小。同時,代價函數也在減少,或者說代價在減少,有時候也稱爲損失函數或者損失,二者都是同樣的。(損失/代價的減少是一件好事)it
只有在數據很龐大的時候(在機器學習中,幾乎任什麼時候候都是),咱們才須要使用 epochs,batch size,迭代這些術語,在這種狀況下,一次性將數據輸入計算機是不可能的。所以,爲了解決這個問題,咱們須要把數據分紅小塊,一塊一塊的傳遞給計算機,在每一步的末端更新神經網絡的權重,擬合給定的數據。io
EPOCHS
當一個完整的數據集經過了神經網絡一次而且返回了一次,這個過程稱爲一個 epoch。
然而,當一個 epoch 對於計算機而言太龐大的時候,就須要把它分紅多個小塊。
爲何要使用多於一個 epoch?
我知道這剛開始聽起來會很奇怪,在神經網絡中傳遞完整的數據集一次是不夠的,並且咱們須要將完整的數據集在一樣的神經網絡中傳遞屢次。可是請記住,咱們使用的是有限的數據集,而且咱們使用一個迭代過程即梯度降低,優化學習過程和圖示。所以僅僅更新權重一次或者說使用一個 epoch 是不夠的。
隨着 epoch 數量增長,神經網絡中的權重的更新次數也增長,曲線從欠擬合變得過擬合。
那麼,幾個 epoch 纔是合適的呢?
不幸的是,這個問題並無正確的答案。對於不一樣的數據集,答案是不同的。可是數據的多樣性會影響合適的 epoch 的數量。好比,只有黑色的貓的數據集,以及有各類顏色的貓的數據集。
BATCH SIZE
一個 batch 中的樣本總數。記住:batch size 和 number of batches 是不一樣的。
BATCH 是什麼?
在不能將數據一次性經過神經網絡的時候,就須要將數據集分紅幾個 batch。
正如將這篇文章分紅幾個部分,如介紹、梯度降低、Epoch、Batch size 和迭代,從而使文章更容易閱讀和理解。
迭代
理解迭代,只須要知道乘法表或者一個計算器就能夠了。迭代是 batch 須要完成一個 epoch 的次數。記住:在一個 epoch 中,batch 數和迭代數是相等的。
好比對於一個有 2000 個訓練樣本的數據集。將 2000 個樣本分紅大小爲 500 的 batch,那麼完成一個 epoch 須要 4 個 iteration。