这些deep learning(rnn、cnn)调参的经验值得分享
| ? ? ? 由于機器學習(包括神經網絡)調參的經驗內容比較多,我的回答篇幅會較長些,我盡量濃縮每個知識點,歡迎各位討論指點。 ? ? ? 深度神經網絡,尤其是卷積神經網絡(CNN)允許由多個隱藏層組成的計算模型來學習具有多個抽象層次的數據表示。這些方法大大改善了視覺對象識別,對象檢測,文本識別以及藥物發現和基因組學等許多領域的現狀。 ? ? ? 另外,實際上在這個主題上全球已經發表了很多實用的論文,并且已經提供了一些高質量的開源機器學習工具包。然而,它可能缺乏關于如何從零開始實現不錯的機器學習模型的一些實踐細節。在這里將介紹一些實戰性的經驗技巧,即通過一些實用技巧用于快速構建和優化自己機器學習模型。 ? ? ? 假設你已經知道了機器學習的基本知識,下面我們將在機器學習模型,尤其是圖像相關任務的CNN中介紹實現細節(技巧或提示),主要包括6個方面: ? ? ? 激活功能的選擇; ? ? ? 數據增強; ? ? ? 對圖像進行預處理; ? ? ? 網絡的初始化; ? ? ? 訓練期間的技巧; ? ? ? 適當的正規化。 ? ? ? 激活函數的選擇 ? ? ? 深度神經網絡的關鍵因素之一是激活函數,將非線性帶入網絡。這里將介紹一些流行的激活函數的選擇技巧,并給出一點建議。 ? ? ? 一般神經網絡可以選擇Adam,因為Adam收斂速度的確要快一些,但結果總是不如其他優化算法。 ? ? ? Relu并不是一定比Tanh好,如果不太懂的話,用在不合適的網絡結構中,可能會導致梯度消失。 ? ? ? relu+bn。這套好基友組合是萬精油,可以滿足95%的情況,sigmoid也可以組合搭配,但效果總是沒有比relu好。 ? ? ? 訓練期間一些技巧 ? ? ? 首先考慮濾波器和池大小。在訓練期間,輸入圖像的大小優選為2的冪方,諸如32(例如,CIFAR-10),64,224(例如,常用的ImageNet),384或512等。此外,重要的是采用零填充的小濾波器(如3×3)和小跨度(如1),不僅減少了參數數量,而且提高了整個深度網絡的準確率。同時,上面提到的一個特殊情況,即具有步伐為1的3×3濾波器可以保持圖像/特征圖的空間大小。對于池化層,常用的池化大小為2×2。 ? ? ? 要選擇適合的學習率。建議用小批量數據(minibatch)來分割批次去訓練。因此,如果您采取這種方法,則不應總是更改學習率。為了獲得合適的learnigrate,利用驗證集是一個有效的方法。通常,訓練開始時一般學習率初設為0.1。在實踐中,如果你看到你在驗證集上停止了進展,把學習率除以2(或5),并繼續訓練,這可能會給你意想不到的驚喜。 ? ? ? 數據增強 ? ? ? 由于深層網絡需要訓練大量訓練圖像才能獲得滿意的性能,如果原始圖像數據集包含有限的訓練圖像,最好是進行數據增強以提高性能。而且,在訓練深度網絡時,數據增強成為必須要做的事情。 ? ? ? 數據增強有許多方法,比如流行的水平翻轉,隨機作物和顏色抖動。此外,您可以嘗試多個不同處理的組合,例如同時進行旋轉和隨機縮放。此外,可以嘗試將所有像素的飽和度和值(HSV顏色空間的S和V分量)提高到0.25和4之間(對于片內的所有像素都是相同的),將這些值乘以0.7和1.4,并添加到-0.1和0.1之間的值。此外,您可以在圖像/色塊中的所有像素的色調(HSV的H分量)之間添加[-0.1,0.1]之間的值。 ? ? ? 對圖像進行預處理 ? ? ? 現在我們已經獲得了大量的培訓樣本(圖像),但請不要急!其實有必要對這些圖像/作物進行預處理。在本節中,我們將介紹幾種預處理方法。 ? ? ? 第一個簡單的預處理方法是對數據進行歸一化處理,然后對它們進行正則化處理,這兩行代碼如下所示: ? ? ? 其中,X是輸入數據。這種預處理的另一種形式是對每個維度進行歸一化,使維度上的最小值和最大值分別為-1和1。如果你有理由相信不同的輸入特征具有不同的尺度(或單位),那么應用這個預處理只是有意義的,但它們應該與學習算法大致同等重要。在圖像的情況下,像素的相對尺寸已經近似相等(并且范圍從0到255),因此不必嚴格執行這個額外的預處理步驟。 |
總結
以上是生活随笔為你收集整理的这些deep learning(rnn、cnn)调参的经验值得分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你有哪些deep learning(rn
- 下一篇: Insightface项目爬坑指南+使用