新聞中心

EEPW首頁 > 智能計算 > 業(yè)界動態(tài) > 這7 個深度學習實用技巧,你掌握了嗎?

這7 個深度學習實用技巧,你掌握了嗎?

作者: 時間:2018-02-23 來源:網(wǎng)絡 收藏

  ▌ 兩全其美的辦法

本文引用地址:http://2s4d.com/article/201802/375972.htm

  最近已經(jīng)證明,可以得到兩全其美的結果:從 Adam 到SGD的高性能高速訓練! 這個想法是,實際上由于在訓練的早期階段SGD對參數(shù)調整和初始化非常敏感。 因此,我們可以通過使用Adam來開始訓練,這將節(jié)省相當長的時間,而不必擔心初始化和參數(shù)調整。 那么,一旦Adam獲得較好的參數(shù),我們可以切換到SGD +動量優(yōu)化,以達到最佳性能!

   

 

  Adam vs SGD 性能

  ▌ 3-如何處理不平衡數(shù)據(jù)

  在很多情況下,都要處理不平衡的數(shù)據(jù),特別是實際應用程序中。 一個簡單而實際的例子如下:訓練您的深度網(wǎng)絡以預測視頻流中是否有人持有致命武器。 但是在你的訓練數(shù)據(jù)中,你只有50個拿著武器的人的視頻和1000個沒有武器的人的視頻! 如果你只是用這些數(shù)據(jù)來訓練你的網(wǎng)絡,那么你的模型肯定會非常偏向于預測沒有人有武器!

  你可以做用以下的方法來解決它:

  在損失函數(shù)中使用類權重。 本質上就是,讓實例不足的類在損失函數(shù)中獲得較高的權重,因此任何對該類的錯分都將導致?lián)p失函數(shù)中非常高的錯誤。

  過度采樣:重復一些實例較少的訓練樣例,有助于平衡分配。 如果可用的數(shù)據(jù)很小,這個方法最好。

  欠采樣:一些類的訓練實例過多,可以簡單地跳過一些實例。 如果可用數(shù)據(jù)非常大,這個方法最好。

  為少數(shù)類增加數(shù)據(jù)??梢詾樯贁?shù)類創(chuàng)建更多的訓練實例! 例如,在前面檢測致命武器的例子中,你可以改變屬于具有致命武器的類別的視頻的顏色和光照等。

  ▌ 4-遷移學習

  正如我們所看到的,深層網(wǎng)絡需要大量的數(shù)據(jù)。遺憾的是,對于許多新的應用程序來說,這些數(shù)據(jù)可能很難得到并且開銷很大。 如果我們希望模型表現(xiàn)良好,可能需要數(shù)萬或數(shù)十萬個新的訓練樣例來進行訓練。 如果數(shù)據(jù)集不易獲取,則必須全部手動收集并標記。

  這就是遷移學習的起點。 通過遷移學習,我們不需要太多的數(shù)據(jù)! 這個想法是從一個在數(shù)百萬圖像上訓練過的網(wǎng)絡開始的,比如在ImageNet上預訓練的ResNet。 然后,我們將“重新調整ResNet模型,只重新訓練最后幾層。

  我們將ResNet從數(shù)百萬圖像中學到的信息(圖像特征)進行微調,以便將其應用于不同的任務。 因為跨域的圖像的特征信息經(jīng)常是非常相似的所以這個方法是可行的,但是這些特征的分析根據(jù)應用而不同。

   

 

  一個基本的遷移學習示例

  ▌ 5 – 用數(shù)據(jù)增強提高性能

  前面已經(jīng)說過:更多的數(shù)據(jù)=更好的表現(xiàn)。 除了遷移學習之外,另一種快速而簡單提高模型的性能的方法是數(shù)據(jù)增強。 數(shù)據(jù)增強是使用原始類別標簽的同時,改變數(shù)據(jù)集的原始圖像以合成一些新的訓練示例。例如,用于圖像數(shù)據(jù)增強的常見方式包括:

  水平和/或垂直旋轉翻轉圖像

  改變圖像的亮度和顏色

  隨機模糊圖像

  隨機從圖像裁剪塊

  基本上,你可以進行任何改變,改變圖像的外觀但不改變整體內容,例如你可以使用藍色狗的照片,但你仍然應該能夠清楚地看到,這是一個狗的照片。

   

  數(shù)據(jù)增強

  ▌ 6-通過集成提升模型!

  在機器學習中,集成訓練多個模型,然后將它們組合在一起以獲得更高的性能。 這個想法是在相同的數(shù)據(jù)集上對同一任務訓練多個深度網(wǎng)絡模型。 然后,模型的結果可以通過投票進行組合,即具有最高票數(shù)的類勝出。

  為了確保所有模型不同,可以使用隨機權重初始化和隨機數(shù)據(jù)增強。眾所周知,由于使用了多個模型,因此集成通常比單個模型更精確,從而從不同角度完成任務。在實際應用中,尤其是競賽中,幾乎所有頂級模型都使用集合方式。

   

  集成模型

  ▌ 7-加快剪枝

  我們知道模型精度隨深度而增加,但速度又如何呢? 更多的層意味著更多的參數(shù),更多的參數(shù)意味著更多的計算,更多的內存消耗和更慢的速度。理想情況下,我們希望在提高速度的同時保持高精度。我們可以通過剪枝來做到這一點。

   

  深度神經(jīng)網(wǎng)絡剪枝策略

  這個想法是,網(wǎng)絡中的許多參數(shù)是多余的,對輸出沒有太大貢獻。 如果可以根據(jù)貢獻值對網(wǎng)絡中的神經(jīng)元進行排名,那么就可以從網(wǎng)絡中移除低排名的神經(jīng)元,從而形成更小更快的網(wǎng)絡。 可以根據(jù)神經(jīng)元權重的L1 / L2均值(平均激活)、一些驗證集上神經(jīng)元不為零的次數(shù)以及其他方法來進行排序。 獲得更快/更小的網(wǎng)絡對于在移動設備上運行網(wǎng)絡非常重要。

  修剪網(wǎng)絡的最基本的方法是簡單地放棄某些卷積濾波器。 最近文章表明,這樣做是相當成功的。 這項工作中的神經(jīng)元排名相當簡單:每個濾波器的權重按照L1規(guī)范排名。 在每個修剪迭代中,對所有的過濾器進行排序,在所有層中修剪m個排名最低的過濾器,重新訓練和重復!

  最近的另一篇分析殘差網(wǎng)絡結構的論文中提出了修剪“過濾器”的關鍵特點。 作者指出,在刪除層的時候,具有殘差快捷連接(例如ResNets)的網(wǎng)絡比不使用任何快捷連接(例如VGG或AlexNet)的網(wǎng)絡在保持良好的準確性方面更為穩(wěn)健。這個有趣的發(fā)現(xiàn)具有重大的實際意義,因為它告訴我們,在修剪網(wǎng)絡進行部署和應用時,網(wǎng)絡設計至關重要(例如ResNets)。 所以使用最新最好的方法總是很好的!


上一頁 1 2 下一頁

關鍵詞: 深度學習

評論


相關推薦

技術專區(qū)

關閉