
神經網絡是一種機器學習算法,它可以提高許多用例(項目)的精确度。但是,很多時候我們建構的神經網絡的準确性可能不令人滿意,或者可能無法讓我們排在資料科學競賽排行榜的頭号位置。是以,我們一直在尋找更好的方法來改善模型的性能。并且有很多技術可以幫助我們實作這一目标,本文的目标就是向各位介紹這些技術,希望各位在本文的幫助下能夠建立自己的準确度更高的神經網絡。
檢查是否過度拟合
確定你的神經網絡在測試資料上表現良好的第一步是驗證你的神經網絡沒有過度拟合。OK,我們先介紹什麼是過度拟合?過度拟合發生在你的模型開始記憶訓練資料的值而不是從中學習時。更通俗的過度拟合介紹,可以點選檢視
激活引入非線性,池化預防過拟合(深度學習入門系列之十二)PS:作者新書馬上出版——《深度學習之美》。是以,當你的模型遇到一個它以前從未見過的資料時,它無法很好地處理它們。為了讓你更好地了解,讓我們來看一個類比。我們都會有一個善于背誦的同學,并且假設數學考試即将到來。你和你的朋友,善于記憶,從課本開始學習。你的朋友會記住教科書中的每一個公式,問題和答案,但是另一方面,你比他聰明,是以你決定建立直覺并解決問題,并學習這些公式如何發揮作用。考試日到了,如果試卷中的問題直接出自教科書,那麼你可能沒有你的朋友做得好,但如果問題不是教科書裡面的問題呢,那麼你在考試中一定相比你的朋友來說做得更好。
如何識别你的模型是否過度拟合?你可以交叉檢查訓練的準确性和測試的準确性。如果訓練的準确性遠遠高于測試的準确性,那麼你可以假設你的模型已經過度拟合。你還可以繪制圖表上的預測點來驗證,有一些技巧可以避免過度拟合:
·
資料正規化(L1或L2);
Dropout——随機丢棄神經元之間的連接配接,迫使網絡找到新的路徑并推廣;
提早停止——減少神經網絡的訓練,進而減少測試集中的錯誤。
超參數調整
超參數是你必須初始化到網絡的值,這些值在訓練時無法通過網絡獲知。例如:在卷積神經網絡中,一些超參數是核的大小、神經網絡中的層數、激活函數、損失函數、使用的優化器(梯度下降,RMSprop)、批量大小、要訓練的紀元數量等。
每個神經網絡都具有其最佳的超參數集合,因為這會提高神經網絡的準确性。你可能會問,“有那麼多的超參數,我該如何選擇每個使用的參數?”,告訴你一個不幸的消息,沒有直接的方法來确定每個神經網絡的最佳超參數集合,是以它主要是通過反複試驗獲得的。但是,對于剛剛提到的一些超參數有一些最佳實踐:
學習率——選擇最佳學習率非常重要,因為它決定了你的網絡是否收斂到最低值。選擇最高學習率幾乎不會讓你達到最低标準,因為你很有可能超越它。是以,你總是在最低點附近,但從來沒有收斂到它。選擇一個小的學習率可以幫助神經網絡收斂到最小值,但需要大量的時間。是以,你必須對網絡進行更長時間的訓練。較小的學習率也會使網絡容易陷入局部最小化,即由于學習率較低,網絡将會收斂到局部最小值,并且無法退出。是以,在設定學習率時一定要小心。
網絡體系結構——沒有标準體系結構可以在所有測試案例中為你提供高精度。你必須嘗試,嘗試不同的體系結構,然後從結果中獲得推論,然後再試一次。我建議的一個想法是使用經過驗證的架構,而不是建構自己的架構。例如:對于圖像識别任務,你有VGG net,Resnet,Google的Inception網絡等等。這些都是開源的,并且已經證明是非常準确的,是以,你可以複制他們的架構并調整它們以達到你的目的。
優化器和Loss function——有無數的選項供你選擇。事實上,如果需要,甚至可以定義自定義丢失函數。但常用的優化器是RMSprop,随機梯度下降和Adam,這些優化器似乎适用于大多數用例。如果你的用例是分類任務,那麼常用的損失函數是分類交叉熵。如果你正在執行回歸任務,均方誤差是最常用的損失函數。随意試驗這些優化器的超參數,以及不同的優化器和損失函數。
批處理大小和曆元數量——同樣,對于所有用例都沒有批處理大小和曆元的标準值。你必須嘗試并嘗試不同的,在一般情況下,批量值設定為8,16,32 ...曆元的數量取決于開發人員的偏好和他/她擁有的計算能力。
激活函數——激活函數将非線性功能輸入映射到輸出。激活函數非常重要,選擇正确的激活函數可幫助你的模型更好地學習。如今,整流線性單元(ReLU)是最廣泛使用的激活函數,因為它解決了漸變消失的問題。早期的Sigmoid和Tanh是使用最廣泛的激活函數。但是,他們遭遇了消失梯度的問題,即在反向傳播期間,當它們到達開始層時,梯度會減少。這阻止了神經網絡擴大到更多層次的更大尺寸。ReLU能夠克服這個問題,是以允許神經網絡具有大尺寸。
算法集合
如果單個神經網絡不如你所希望的那樣準确,你可以建立一個神經網絡集合并結合它們的預測能力。你可以選擇不同的神經網絡架構,并對資料的不同部分進行訓練,并将它們內建并使用其集體預測能力來獲得測試資料的高精度。假設你正在建造一隻貓和狗的分類器,0貓和1狗。當組合不同的貓和狗分類器時,集合算法的準确性會根據各個分類器之間的Pearson相關性而增加。讓我們看一個例子,拿3個模型并測量他們的個人準确性。
Ground Truth: 1111111111
Classifier 1: 1111111100 = 80% accuracy
Classifier 2: 1111111100 = 80% accuracy
Classifier 3: 1011111100 = 70% accuracy
三種模型的Pearson相關性很高,是以,将它們合并不會提高準确性。如果我們用多數投票合奏上述三個模型,我們得到以下結果。
Ensemble Result: 1111111100 = 80% accuracy
現在,讓我們看看三個模型的輸出之間Pearson相關性非常低。
Ground Truth: 1111111111
Classifier 1: 1111111100 = 80% accuracy
Classifier 2: 0111011101 = 70% accuracy
Classifier 3: 1000101111 = 60% accuracy
當我們把這三個比較弱的學習者合并時,我們得到以下結果。
Ensemble Result: 1111111101 = 90% accuracy
正如你在上面看到的,一個具有低Pearson相關性的弱學習者集合能夠勝過它們之間具有高Pearson相關性的集合。
缺乏資料
運用上述所有的技術後,如果你的模型在測試資料集中仍然表現不佳,則可能歸因于缺乏訓練資料。有許多用例可用的訓練資料量受到限制,如果你無法收集更多資料,則可以使用資料增強技術。
如果你正在處理圖像資料集,則可以通過剪切圖像、翻轉圖像、随機裁剪圖像等來增加訓練資料的新圖像。這可以為神經網絡訓練提供不同的示例。
數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!本文由@
愛可可愛生活@
阿裡雲雲栖社群組織翻譯。
文章原标題《 how-to-increase-the-accuracy-of-a-neural-network》, 譯者:虎說八道,審校:袁虎。 文章為簡譯,更為詳細的内容,請檢視 原文 。