1. 程式人生 > >fast.ai 深度學習筆記:第一部分第二課

fast.ai 深度學習筆記:第一部分第二課

原文:Deep Learning 2: Part 1 Lesson 2

作者:Hiromi Suenaga

回顧上一課 [01:02]

  • 我們使用 3 行程式碼來構建影象分類器。
  • 為了訓練模型,需要在PATH下以某種方式組織資料(在本例中為data/dogscats/ ):

 

  image

 

  • 應該有train資料夾和valid資料夾,並且在每個資料夾下都有帶有分類標籤的資料夾(例如本例中的cats ),其中包含相應的影象。
  • 訓練輸出: [epoch #, training loss, validation loss, accuracy]
 [ 0\. 0.04955 0.02605 0.98975] 

學習率 [4:54]

  • 學習率的基本思想是,它將決定我們解決方案改進的速度。

 

  image

 

  • 如果學習率太小,則需要很長時間才能達到最低點。
  • 如果學習率太大,它可能會在底部擺動。
  • 學習率查詢器( learn.lr_find )將在每個小批量之後提高學習率。 最終,學習率太高,損失會變得更糟。 然後,我們檢視學習率與損失的關係曲線,確定最低點並返回一個幅度,並選擇它作為學習率(下例中為1e-2
     )。
  • 小批量是我們每次檢視的一組影象,因此我們有效地使用 GPU 的並行處理能力(通常一次 64 或 128 個影象)
  • 在 Python 中:

 

  image

 

 

  image

 

 

  image

 

  • 通過調整這一個數字,你應該能夠獲得相當不錯的結果。 fast.ai 庫為你選擇其餘的超引數。 但隨著課程的進展,我們將瞭解到還有一些我們可以調整的東西,可以獲得更好的結果。 但學習率是我們設定的關鍵數字。
  • 學習率查詢器位於其他優化器(例如動量,Adam 等)的上層,並根據你正在使用的調整(例如高階優化器但不限於優化器)幫助你選擇最佳學習率。
  • 問題:在迭代期間改變學習率,優化器會發生什麼? 這個查詢器是否選擇了初始學習率? [14:05] 我們稍後會詳細瞭解優化器,但基本答案是否定的。 即使 Adam 的學習率也會除以先前的平均梯度以及最近的梯度的平方和。 即使那些所謂的“動態學習率”方法也具有學習率。
  • 使模型更好的最重要的事情是,為它提供更多資料。 由於這些模型有數百萬個引數,如果你訓練它們一段時間,它們就會開始所謂的“過擬合”。
  • 過擬合 - 模型開始在訓練集中看到影象的具體細節,而不是學習可以傳遞到驗證集的一般內容。
  • 我們可以收集更多資料,但另一種簡單方法是資料增強。

閱讀更多