[DeeplearningAI筆記]ML strategy_2_3遷移學習/多任務學習

機器學習策略-多任務學習

Learninig from multiple tasks

以爲有用的話,歡迎一塊兒討論相互學習~Follow Me

2.7 遷移學習 Transfer Learninig

  • 神經網絡能夠從一個任務中習得知識,並將這些知識應用到另外一個獨立的任務中.例如:你已經訓練好一個可以識別貓的系統,你利用這些知識或者這些知識的部分去完成更好的 閱讀X射線掃描圖.
  • 這就是所謂的-- 遷移學習

how-to

  • 假設你已經訓練好一個圖像識別神經網絡,首先用一個神經網絡,在(x,y)對上訓練,其中x是圖像,y是對象的標籤.

2017-11-06_135543

  • 如今把這個神經網絡拿出來,將其適應(遷移)到不一樣任務中所學到的知識,好比放射科診斷.
    1. 把神經網絡最後的輸出層刪除
    2. 進入到最後一層並將其權重刪除
    3. 爲最後一層從新賦予隨機權重
    4. 而後將神經網絡放在放射診斷數據上訓練

Tips

  • 若是進行遷移學習的數據量比較小,只須要從新訓練最後一兩層權重.可是若是進行遷移學習的數據量較大,建議從新訓練整個神經網絡.
  • 預訓練(pre-training): 若是從新訓練全部神經網絡層,那麼在圖像識別數據的初期訓練階段,咱們稱這個過程爲:預訓練
  • 微調(fine tuning): 在預訓練後的模型上放入遷移學習的數據進行訓練,這個過程稱爲:微調

why

  • 遷移學習的好處在於,以放射科圖像檢測的遷移學習爲例 在預訓練的過程當中,咱們學到了一些圖像識別中低層次特徵,不少結構信息,圖像形狀的信息,點,線,面的特徵.-- 邊緣檢測(detecting edges),曲線檢測(的tecting curves),陽性對象檢測(detecting positive objects) 應用或遷移到放射科診斷上來.從很是大的圖像識別數據庫中習得的這些能力,會有助於你的學習算法在放射科診斷作的更好.

Another Example

  • 假設你已經訓練出一個語音識別系統(speech recognition system),如今x是音頻(audio)或者音頻片斷輸入(audio snippets),y是聽寫文本(transcript). 咱們要使用這個系統"遷移學習"創建一個"喚醒詞"的系統.
  • 你可能須要去掉神經網絡的最後一層,而後加入新的輸出節點.但有時也能夠不止加入一個新節點,或者甚至往你的神經網絡加入幾個新層.而後把喚醒詞檢測問題的標籤"Y"喂進去訓練.
  • 這取決於你的訓練數據的多少,你可能只須要從新訓練網絡的新層,也許你須要從新訓練網絡中更多的層.

when Transfer learning makes sence

  • 遷移來源問題你有不少數據,但遷移目標問題你沒有那麼多數據.
    • 例如:假如在圖像識別任務中你有100W樣本,數據量至關多,你能夠學習低層次特徵,能夠在神經網絡的前幾層學到如何識別不少有用的特徵.
      • 可是對於"放射科任務",也許你只有100個樣本,因此你能夠將圖像識別預測的知識遷移到"放射科識別任務"中,即便你的放射科數據不多.
    • 例如:在"語音識別"任務中,也許你已經有1W小時數據,訓練過你的語言識別系統.因此你已經從這1W小時數據中學到了不少人類聲音的特徵.
      • 可是對於"觸發字檢測",也許你只有1小時數據,因此這數據過小,不能用來擬合不少參數.
      • 因此這種狀況下,你須要預先學到不少人類聲音的特徵,人類語言的組成部分等等知識,能夠幫你創建一個很好的喚醒字檢測器(wake word detector).即便你的數據集相對較小.

summary

  1. 若是你想從任務A遷移一些知識到任務B,當任務A和任務B都有相同的輸入X時,遷移學習是有意義的.
  • 例如在第一個例子中,輸入X都是圖片;在第二個例子中X都是聲音音頻.
  1. 當任務A的數據比數據B多得多時,遷移學習意義更大.
  • 全部這些假設的前提都是,你但願提升任務B的性能.
  • 由於任務B的每一個數據更有價值,對於任務B來講.一般任務A的數據量必須大得多,纔有幫助.
  1. 若是你以爲任務A的低層次特徵,能夠幫助任務B的學習,那遷移學習更有意義一些.

2.8 多任務學習 Multi-task learning

  • 在遷移學習中,你的步驟是串行的,你從任務A裏學到知識而後遷移到任務B中.在多任務學習中,你是同時開始學習的,試圖讓單個神經網絡同時作幾件事情,而後但願這裏的每一個任務都能幫到其餘全部任務.git

    Simplified autonomous driving Example

  • 假設你正在研發無人駕駛車輛,那麼你的無人駕駛車可能須要同時檢測不一樣的物體.(行人,車輛,停車標誌,交通燈...)github

2017-11-06_161607

  • 須要識別的物體假設即爲上述討論的四個,則最後一層設置4個神經元,一個4維向量,分別表示對"行人,車輛,停車標誌,交通燈"的預測.

2017-11-06_162158

其中多任務學習 Loss function 也有相應的變化.對於多任務學習:
\[Loss(\hat{y}^{(i)}_{(4, 1)})=\frac{1}{m}\sum_{i=1}^{m}\sum_{j=1}^{4}l(\hat{y}^{(i)}_{j},y^{(i)}_{j})\]算法

對於此處的loss函數l(交叉熵函數)的具體計算方式,詳情請見:數據庫

交叉熵損失函數詳解
神經網絡基礎網絡

  • 其中與以前例子最大的不一樣在於須要對檢測的多任務目標進行分別比較並相加\(\sum_{j=1}^{4}\) .
  • 這與softmax迴歸的主要區別在於,softmax迴歸將單個標籤分配給單個樣本,而這張圖能夠有不少不一樣的標籤,因此不是說每張圖都只是一張行人圖片,汽車圖片,停車標誌圖片,或者交通燈圖片,多個物體可能同時出如今一張圖裏.
  • 你須要遍歷全部的物體類型,檢測那類物體有沒有出如今圖中.
  • 若是你訓練了一個神經網絡,須要最小化這個成本函數,你作的就是多任務學習

when multi-task learning makes sence

  • 你訓練的一組任務能夠共用低層次特徵.例如對於無人駕駛車的例子,識別的物體都是道路上的標誌.
  • 每一個任務中學習的數據量很相近.
    • 假如你要識別100個任務,每一個任務大概有1000個樣本,因此若是你專一增強單個任務的性能,你只有1000個樣本去訓練這個任務,這是100項任務之一,可是經過其餘99項任務的訓練, 這些加起來一共有99000個樣本,這可能大幅提高算法性能,能夠提供不少知識來加強這個任務的性能
  • 若是你訓練一個 足夠大的神經網絡,多任務神經網絡和多個不一樣的單任務神經網絡效果基本一致(即單獨訓練識別行人,單獨識別交通標識牌...的神經網絡).
  • 通常來講, 遷移學習比多任務學習運用更多 ,可是在 計算機視覺-物體檢測 中有大量應用到多任務學習,而且比分別訓練不一樣的神經網絡檢測物體效果更好.
相關文章
相關標籤/搜索