模型训练中batch_size的选择
總結:訓練過程中,batch_size的選取對模型精度和模型泛化能力的影響:
總結:如何確定batch_size
樣本類別數目較少,而且模型沒有BN層,batch_size就設置得較小一點。
樣本類別數目較多,而且模型沒有BN層,batch_size就設置得較大一點。盡量保證一個batch里面各個類別都能取到樣本。
數據集很小的時候,可以采取Full Batch Learning。每次用所有的訓練集進行訓練。
https://www.zhihu.com/question/32673260
卷積網絡訓練太慢?Yann LeCun:已解決CIFAR-10,目標 ImageNet:
CSDN翻譯鏈接:https://www.csdn.net/article/2015-01-16/2823579
kaggle英文鏈接:http://blog.kaggle.com/2014/12/22/convolutional-nets-and-cifar-10-an-interview-with-yan-lecun/
總結一下:
深度機器學習中的batch的大小對學習效果有何影響?
知乎鏈接:https://www.zhihu.com/question/32673260
每次只訓練一個樣本,即 Batch_Size = 1。這就是在線學習(Online Learning)。使用在線學習,每次修正方向以各自樣本的梯度方向修正,橫沖直撞各自為政,難以達到收斂。
凸函數是一個定義在某個向量空間的凸子集C(區間)上的實值函數f,而且對于凸子集C中任意兩個向量, f((x1+x2)/2)>=(f(x1)+f(x2))/2,則f(x)是定義在凸子集c中的凸函數(該定義與凸規劃中凸函數的定義是一致的,下凸)。凹函數則定義相反。
關于batch_size的選取,ICLR 2017有一片文章可以借鑒:On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
主要思想就是:太大的batch size 容易陷入sharp minima,泛化性不好。
關于網絡的收斂:
http://blog.kaggle.com/2014/12/22/convolutional-nets-and-cifar-10-an-interview-with-yan-lecun/
問:在您看來,一個運作良好且不受“為什么它會運作良好”這一理論原因影響的卷積網絡是什么樣的?通常您是否偏好執行更甚于理論?如何平衡?
Lecun答:我不覺得執行與理論之間需要抉擇,如果能執行,就會有相關可解釋的理論。
另外,你談及的是什么樣的理論?是說泛化界限嗎( generalization bound )?卷積網絡有著限定的VC維(VC Dimension),因此兩者一致并有著典型的VC維。你還想要什么?是像SVM中那樣更嚴格的界限嗎?就我所知,沒有一個理論的界限會足夠嚴格,可以適用實際需求,所以我的確不太明白這個問題。當然,普通的VC維不夠嚴格,但是非泛型范圍(像SVMs)只會稍微欠缺一點嚴格性。
如果你希望的是收斂性證明(或保證),就有一點復雜了。多層網絡的損失函數不是凸值,因此簡易證明該函數為凸不可行。但是我們都知道實際上卷積網絡幾乎總是會收斂到同一水平,無論起點是什么(如果初始化完成正確)。有理論證明,有許許多多等效局部最小值,還有一個數字很小的“壞”局部最小值。因此收斂性并不會造成問題。(注:VC維用來表示模型的復雜度,機器學習基石課程上有提到)
轉自知乎:https://www.zhihu.com/question/32673260
沒有,按照我所了解的,目前除了SGD優化方法的變種都是為了增加棄坑速度而作的,即增加脫離局部最小值的速度,使得網絡更快的收斂。
非凸的本質難題是鞍點數目太多,除非深度網絡設計使得非凸的函數繪景類似一個漏斗(類似“V”型)且最小值就在漏斗尖口(“V”尖尖的底部)附近(CNN奇跡般的是),RMSprop方法會一沖到底,效率高。一些深度的貝葉斯模型不用初始化訓練,直接暴力利用上面的優化不一定有效果。原因可能(目前還很難理論分析)在于函數繪景類似一個W型或者VVV…V型,而不是單純的V型。直觀來說,尖尖底太多了,利用上面的優化的結果就仁者見仁,智者見智了。
彈性反向傳播(RProp)和均方根反向傳播(RMSProp)
都是一種權值更新算法,類似于SGD算法,其中,RMSProp是RProp算法的改良版。
RProp算法:首先為各權重變化賦一個初始值,設定權重變化加速因子與減速因子,在網絡前饋迭代中當連續誤差梯度符號不變時,采用加速策略,加快訓練速度;當連續誤差梯度符號變化時,采用減速策略,以期穩定收斂。網絡結合當前誤差梯度符號與變化步長實現BP,同時,為了避免網絡學習發生振蕩或下溢,算法要求設定權重變化的上下限。(動態的調節學習率)
此外,RPROP針對不同的權值參數,提供了一種差異化學習的策略:
不同權值參數的梯度的數量級可能相差很大,因此很難找到一個全局的學習步長。這時,我們想到了在full-batch learning中僅靠權值梯度的符號來選擇學習步長。rprop算法正是采用這樣的思想:對于網絡中的每一個權值參數,當其對應的前面兩個梯度符號相同時,則增大該權值參數對應的學習步長;反之,則減小對應的學習步長。并且,rprop算法將每一個權值對應的學習步長限制在百萬分之一到50之間。但是,prop算法為什么不能應用于mini-batch learning中。
假設有一個在線學習系統,初始的學習步長較小,在其上應用prop算法。這里有十組訓練數據,前九組都使得梯度符號與之前的梯度符號相同,那么學習步長就會增加九次;而第十次得來的梯度符號與之前的相反,那么學習步長就會減小一次。這樣一個過程下來,學習步長會增長很多(增大了9次學習步長,只減小了一次學習步長),如果系統的訓練數據集非常之大,那學習步長可能頻繁的來回波動,這樣肯定是不利于學習的。
改進版rmsprop:
rmsprop算法不再孤立地更新學習步長,而是聯系之前的每一次梯度變化情況,具體如下。rmsprop算法給每一個權值一個變量MeanSquare(w,t)用來記錄第t次更新步長時前t次的梯度平方的平均值,具體計算方法如下圖所示(注意,其中的系數0.9和0.1只是個例子,具體取值還要看具體情況)。然后再用第t次的梯度除上前t次的梯度的平方的平均值,得到學習步長的更新比例,根據此比例去得到新的學習步長。如果當前得到的梯度為負,那學習步長就會減小一點點;如果當前得到的梯度為正,那學習步長就會增大一點點。
總結
以上是生活随笔為你收集整理的模型训练中batch_size的选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件创建失败 无法继续下载_单机梦幻西游
- 下一篇: 西威变频器 服务器显示,西威变频器故障查