訓練機器學習的資料集大小很重要 - svpino
訓練神經網路的示例數量是我們可以用來影響訓練過程的基本工具。
在機器學習術語中,我們稱其為“批大小batch size”。批batch不過是將一組示例封裝成類似陣列的結構而已。
首先,一些背景知識
我們不能不專心討論訓練過程的工作原理。這是一個粗略的摘要,應該足以滿足我們的目的:
- 我們從訓練資料集中提取了一些示例資料。
- 我們透過模型執行該批次以計算結果。
- 我們發現該結果離需要的地方有多遠。
- 我們將模型的引數調整特定數量。
- 我們根據需要重複進行多次迭代。
我們用於建立批示例的數量是我們做出的第一個決定。這是一個至關重要的選擇,它將影響流程的工作方式。
我們有三種可能的選擇:
- 我們可以使用整個訓練資料集來建立一個長批次。
- 我們可以走到另一個極端,一次只使用一個示例。
- 我們可以放在中間,在每批資料中使用一些資料示例。
讓我們仔細考慮一下這些選項中的每一個。
一次使用整個資料集
機器學習從業者喜歡為所有事物想出一個名字。因此,他們決定將此過程稱為“批次梯度下降Gradient Descent ”。 Gradient Descent 是最佳化演算法的名稱,而 Batch批概念是因為我們將使用整個資料集。是的,我知道這沒有道理,但讓我們繼續吧。
如果我們使用資料集中的每個示例建立一個批處理,然後在整個過程中執行它,最後只更新一次模型,則將節省大量的處理時間。很好,但另一方面,可能很難同時在記憶體中容納很多示例,因此這不適用於大型資料集。
使用整個資料集計算模型更新的最有趣的方面是,我們正在消除資料中的所有噪聲,並建立小的且穩定的調整。這聽起來很無聊但可以預見。某些問題將從中受益,但是噪聲的缺乏可能會阻止演算法脫離次優解決方案。
一次只使用一個示例
這就是所謂的“隨機梯度下降Stochastic Gradient Descent”(通常稱為 SGD)
在這種情況下,我們為資料集中的每個示例調整模型的引數。在這裡,我們不必一次處理整個事情,因此我們不會有記憶體限制,而且我們將立即獲得有關培訓進行情況的反饋。
更新每個示例的引數將導致調整過程中產生很多噪音。這對於特定的問題是有好處的,因為它可以防止它們卡住(值會跳出陷阱),但是在訓練模型時也會產生難看,嘈雜的訊號。
中間取一些資料集
分散差異通常是一個好策略,這就是“小批次梯度下降Mini-Batch Gradient Descent”的作用:它使用資料集中的一些示例來計算對模型的更新。
這是一個很大的折衷,它為我們提供了先前兩種方法的優點,並避免了它們的問題。實際上,小批次梯度下降是常用的一種。不過,我們通常將其稱為“隨機梯度下降”,因為我們確實希望確保使其儘可能地令人困惑。當您聽到有人說“ SGD ”時,請記住,他們可能使用一批帶有多個示例的批處理。
我們需要回答的最後一個問題是您應該在一個批處理中包含多少個示例。已有大量研究對此做出回答,經驗證據表明,較小的批次效能更好。
為了更加具體,並引用 一篇 探討這一想法的好論文,“ (…)32是一個很好的預設值。”
讓我們總結一下
好吧,讓我們用一些實用的建議來快速總結一下。
在訓練過程的每次迭代中使用的示例數量至關重要。良好的做法是始終從32開始,除非您有充分的理由選擇其他尺寸。
獲得有效的模型後,請隨時嘗試使用不同的批次大小。通常,我不會偏離預設值太多,並且很少使用16、32、64或128以外的其他值。
並且,當然,向那些努力工作的人們敬酒,使他們使用名稱和縮寫來使我們感到受歡迎!
相關文章
- 機器學習的訓練集機器學習
- 6種方式處理機器學習中不平衡的資料集 - svpino機器學習
- 資料集訓練
- 機器學習操作基本步驟 - svpino機器學習
- 通俗講明白機器學習中的學習問題 - svpino機器學習
- 資料集訓練+1
- fashion資料集訓練
- 淺談深度學習訓練中資料規範化(Normalization)的重要性深度學習ORM
- 機器學習之資料集的劃分機器學習
- 小資料在機器學習中的重要性機器學習
- 瀏覽器中的機器學習:使用預訓練模型瀏覽器機器學習模型
- 機器學習筆記——資料集分割機器學習筆記
- 33個機器學習常用資料集機器學習
- 分散式機器學習常用資料集分散式機器學習
- Mxnet R FCN 訓練自己的資料集
- 機器學習之邏輯迴歸:模型訓練機器學習邏輯迴歸模型
- 機器學習-訓練模型的儲存與恢復(sklearn)機器學習模型
- 業界使用的兩種主要機器學習技術 -svpino機器學習
- 將機器學習投入生產的雲服務SageMaker - svpino機器學習
- 機器學習中的有標註資料集和無標註資料集機器學習
- 最強資料集集合:50個最佳機器學習公共資料集機器學習
- DeepLab 使用 Cityscapes 資料集訓練模型模型
- 機器學習之訓練神經網路:最佳做法機器學習神經網路
- keras-retinanet 用自己的資料集訓練KerasNaN
- 用SSD-Pytorch訓練自己的資料集PyTorch
- Mxnet-R-FCN-訓練自己的資料集
- 如何改善你的訓練資料集?(附案例)
- 祕籍 | 機器學習資料集網址大全機器學習
- 機器學習學習中,數學最重要!機器學習
- 100天搞定機器學習:模型訓練好了,然後呢?機器學習模型
- 機器學習:處理不平衡資料的5個重要技術機器學習
- 機器學習 | 資料歸一化的重要性你瞭解多少?機器學習
- 如何對SAP Leonardo上的機器學習模型進行重新訓練機器學習模型
- 谷歌colab訓練自己的資料集YOLOv3谷歌YOLO
- 機器學習高質量資料集大合輯機器學習
- 機器學習策略篇:詳解訓練/開發/測試集劃分(Train/dev/test distributions)機器學習AIdev
- “機器學習還是很難用!機器學習
- 【小白學PyTorch】5 torchvision預訓練模型與資料集全覽PyTorch模型