機器學習中的世代、迭代和批大小
翻譯來源:https://medium.com/@ewuramaminka/epoch-iterations-batch-size-11fbbd4f0771
機器學習(ML)中的一些術語很容易被誤解或混淆。
為什麼呢
我的觀察是:大部分ML書籍或教程都沒有花時間在解釋這些名詞上面,而是更多的篇幅在他們討論的主題上,這樣會讓大部分人混淆。
在這篇短文裡面,我會花時間簡單講解一下ML中的Epoch和Iteration的主要區別。這裡已經假設各位讀者有人工神經網路的基礎,而且並不針對某一種特殊的ML種類。在我解釋之前,我們用一個非常相似的場景來作類比,希望這能幫助你理清頭緒!
假設有一個很好聽的音樂,有歌詞並且由6個小節組成。在第一次唱完一首歌(即1個Epoch),你也同時唱了了6個小節(即6個Iteration)。但是這不能保證你已經能不看歌詞重新唱這首歌了,因此你需要重複練習全曲(即Multiple Epochs)直到你會唱這首歌或者有自信你已經能獨自唱好這首歌的每個小節(即High learning acuracy)。
說回神經網路,在訓練一個神經網路之前我們有一個訓練資料集和一個用於擬合fit這個資料集的cost function(成本函式)。依據訓練集的特徵數(列)的多少,我們可以選擇低次或高次的多項式作為成本函式去擬合。之後我們可以通過計算梯度下降去優化我們的cost function。這是一種學習率為alpa的迭代優化演算法,用於使學習演算法的代價(cost)最小。在每個完整的訓練週期後,我們嘗試最小化梯度下降,直到我們達到可能的最低梯度下降(全域性最小或學習曲線的最小值)。
在全域性最小值下,我們可以確信,學習演算法已經達到了一個高水平的準確性,並足以對測試或其他未知資料進行預測。
如果我們的訓練資料集有1000條記錄,我們可以決定將它分成10個批(每批100條記錄——Batch Size為100)。因此,完成一個學習週期需要10個小節。另外,如果我們決定將1000個訓練集分成100批,那麼每個學習週期需要100個小節(每批次10條記錄——Batch Size為10)。
大家也都清楚了,這10或100個小節即Interation,在第10次或第100次小節訓練完之後,我們可以說完成了1次Epoch,也就是完成了一次訓練週期。每次Epoch結束之後,學習演算法就會比較和評估真實輸出和訓練集結果的差距,並優化學習引數,進行下一次訓練週期。由於不能保證梯度下降在第一個優化週期(Epoch)結束時會全域性優化或達到最佳優化,因此要達到理想的或較高的模型精度,往往需要幾個Epoch,而且Epoch的次數在不同的學習演算法中也不是固定的。
僅僅一個Epoch會導致欠擬合。但是,在達到全域性最小值後,如果Epoch次數太多,則會導致學習模型過擬合。理想情況下,正確的Epoch數量是學習模型達到最高準確度的時候。
分割Batch Size計算效率高,特別是在處理大量資料集時
雖然Epoch的概念仍然是優化學習演算法的基本概念,但它在學習模型(如人工神經網路或強化學習)中的具體應用可能因模型如何在每個週期後被修改以表現得更好而有所不同。
最後總結一下,Epoch是一個神經模型學習的整個訓練資料的完整週期。訓練資料可以分割成批,以增強計算能力。給定1000個資料集,它可以分為10批,即建立10次iterations。每批將包含100個資料集。因此,每個迭代的batch size 將是100。
相關文章
- 機器學習之迭代方法機器學習
- Alpha世代和Z世代:遊戲業的未來遊戲
- 關於python中可迭代物件和迭代器的一些理解Python物件
- RxJS 中的觀察者和迭代器模式JS模式
- 機器學習中的模型和資料機器學習模型
- ClubIntel:Y世代和Z世代對健身行業的影響Intel行業
- Windows批處理中的變數和值Windows變數
- 不用for迭代 --手工訪問迭代器中的元素.
- Jacobi迭代、Gauss_Seidel迭代和最佳因子SOR迭代的比較IDE
- python中的迭代器Python
- 你知道JavaScript中的可迭代物件與迭代器嗎JavaScript物件
- 迭代和增量的區別?
- Python迭代和迭代器詳解Python
- 訓練機器學習的資料集大小很重要 - svpino機器學習
- 迭代器,迭代器塊和資料管道
- 機器學習中的PR曲線和ROC曲線機器學習
- Iterables和迭代器
- 機器學習策略篇:詳解開發集和測試集的大小(Size of dev and test sets)機器學習dev
- python 中的迭代器和生成器簡單介紹Python
- 流批一體機器學習演算法平臺機器學習演算法
- 機器學習中的 CatBoost機器學習
- java當中的批處理Java
- JDBC當中的批處理JDBC
- 批處理中的符號符號
- 批處理中的for詳解
- Unity中的各種合批Unity
- 機器學習中的MLE、MAP和貝葉斯估計機器學習
- Python中迭代器的實現Python
- python中的迭代與遞迴Python遞迴
- 對遞迴和迭代的效率的思考和分析遞迴
- 更深入的理解 Python 中的迭代Python
- 更深入的理解Python中的迭代Python
- 靜態合批和動態合批
- MySQL中的大小寫敏感MySql
- mysql中的表大小限制MySql
- 淺談ES6中迭代器和生成器
- 如何獲取 PostgreSQL 資料庫中的表大小、資料庫大小、索引大小、模式大小、表空間大小、列大小SQL資料庫索引模式
- PHP的迭代器和生成器PHP