1. 程式人生 > >Fast.ai下十大深度學習技巧

Fast.ai下十大深度學習技巧

https://mp.weixin.qq.com/s/gf6Ebj9Nnh-QH7fLurH_WA
1.使用Fast.ai庫
Fast.ai庫是一個新手友好型的深度學習工具箱,而且是目前復現最新演算法的首要之選。每當Fast.ai團隊及AI研究者發現一篇有趣論文時,會在各種資料集上進行測試,並確定合適的調優方法。他們會把效果較好的模型實現加入到這個函式庫中,使用者可以快速載入這些模型。
於是,Fast.ai庫成了一個功能強大的工具箱,能夠快速載入一些當前最新的演算法實現,如帶重啟的隨機梯度下降演算法、差分學習率和測試時增強等等,這裡不逐一提及了。
下面會分別介紹這些技術,並展示如何使用Fast.ai庫來快速使用它們。
這個函式庫是基於PyTorch構建,構建模型時可以流暢地使用。
Fast.ai庫地址:

https://github.com/fastai/fastai
2.使用多個而不是單一學習率
差分學習率(Differential Learning rates)意味著在訓練時變換網路層比提高網路深度更重要。
基於已有模型來訓練深度學習網路,這是一種被驗證過很可靠的方法,可以在計算機視覺任務中得到更好的效果。
大部分已有網路(如Resnet、VGG和Inception等)都是在ImageNet資料集訓練的,因此我們要根據所用資料集與ImageNet影象的相似性,來適當改變網路權重。
在修改這些權重時,我們通常要對模型的最後幾層進行修改,因為這些層被用於檢測基本特徵(如邊緣和輪廓),不同資料集有著不同基本特徵。
3. 如何找到合適的學習率
學習率是神經網路訓練中最重要的超引數,沒有之一,但之前在實際應用中很難為神經網路選擇最佳的學習率。
Leslie Smith的一篇週期性學習率論文發現了答案,這是一個相對不知名的發現,直到它被Fast.ai課程推廣後才逐漸被廣泛使用。
這篇論文是:
Cyclical Learning Rates for Training Neural Networks
https://arxiv.org/abs/1506.01186

  1. 餘弦退火
    在採用批次隨機梯度下降演算法時,神經網路應該越來越接近Loss值的全域性最小值。當它逐漸接近這個最小值時,學習率應該變得更小來使得模型不會超調且儘可能接近這一點。
    餘弦退火(Cosine annealing)利用餘弦函式來降低學習率,進而解決這個問題
  2. 帶重啟的SGD演算法
    在訓練時,梯度下降演算法可能陷入區域性最小值,而不是全域性最小值。
    梯度下降演算法可以通過突然提高學習率,來“跳出”區域性最小值並找到通向全域性最小值的路徑。這種方式稱為帶重啟的隨機梯度下降方法(stochastic gradient descent with restarts, SGDR),這個方法在Loshchilov和Hutter的ICLR論文中展示出了很好的效果。
    這篇論文是:
    SGDR: Stochastic Gradient Descent with Warm Restarts
    https://arxiv.org/abs/1608.03983

    用Fast.ai庫可以快速匯入SGDR演算法。當呼叫learn.fit(learning_rate, epochs)函式時,學習率在每個週期開始時重置為引數輸入時的初始值,然後像上面餘弦退火部分描述的那樣,逐漸減小。
  3. 人格化你的啟用函式
    Softmax只喜歡選擇一樣東西;
    Sigmoid想知道你在[-1, 1]區間上的位置,並不關心你超出這些值後的增加量;
    Relu是一名俱樂部保鏢,要將負數拒之門外。
    ……
    以這種思路對待啟用函式,看起來很愚蠢,但是安排一個角色後能確保把他們用到正確任務中。
    正如fast.ai創始人Jeremy Howard指出,不少學術論文中也把Softmax函式用在多分類問題中。在DL學習過程中,我也看到它在論文和部落格中多次使用不當。
  4. 遷移學習在NLP問題中非常有效
    正如預訓練好的模型在計算機視覺任務中很有效一樣,已有研究表明,自然語言處理(NLP)模型也可以從這種方法中受益。
    在Fast.ai第4課中,Jeremy Howard用遷移學習方法建立了一個模型,來判斷IMDB上的電影評論是積極的還是消極的。
  5. 深度學習在處理結構化資料上的優勢
    Fast.ai課程中展示了深度學習在處理結構化資料上的突出表現,且無需藉助特徵工程以及領域內的特定知識。
    這個庫充分利用了PyTorch中embedding函式,允許將分類變數快速轉換為嵌入矩陣。
    9.更多內建函式:Dropout層、尺寸設定、TTA
    4月30日,Fast.ai團隊在斯坦福大學舉辦的DAWNBench競賽中,贏得了基於Imagenet和CIFAR10的分類任務。在Jeremy的奪冠總結中,他將這次成功歸功於fast.ai庫中的一些額外函式。
    10.
    創新力很關鍵
    在DAWNBench比賽中,Fast.ai團隊提出的模型不僅速度最快,而且計算成本低。要明白,要構建成功的DL應用,不只是一個利用大量GPU資源的計算任務,而應該是一個需要創造力、直覺和創新力的問題。
    本文中討論的一些突破,包括Dropout層、餘弦退火和帶重啟的SGD方法等,實際上是研究者針對一些問題想到的不同解決方式。與簡單地增大訓練資料集相比,能更好地提升準確率。
    矽谷的很多大公司有大量GPU資源,但是,不要認為他們的先進效果遙不可及,你也能靠創新力提出一些新思路,來挑戰效果排行榜。
    事實上,有時計算力的侷限也是一種機會,因為需求是創新的動力源泉。
    Huijialaiba來吧