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