《Structuring Machine Learning Projects》課堂筆記

Lesson 3 Structuring Machine Learning Projects

這篇文章其實是 Coursera 上吳恩達老師的深度學習專業課程的第三門課程的課程筆記。

參考了其他人的筆記繼續歸納的。

遷移學習 (Transfer learning)

深度學習中,最強大的理念之一就是,有的時候神經網絡可以從一個任務中習得知識,並將這些知識應用到另一個獨立的任務中。

假如說我們已經訓練好一個圖像識別神經網絡,如貓狗識別器之類的,然後我們讓它適應或者說遷移到放射科診斷,類似 X 射線掃描圖這種任務。需要做的是,把神經網絡最後的輸出層刪掉以及進入到最後一層的權重刪掉,然後爲最後一層重新賦予隨機權重,讓它在放射診斷數據上訓練。

經驗規則是,如果有一個小數據集,就只訓練輸出層前的最後一層或兩層;但是如果有很多數據,那麼也許可以重新訓練網絡中的所有參數。如果重新訓練所有參數的話,在圖像識別數據上的初期訓練階段,被稱爲預訓練 (pre-training);而在放射診斷數據上訓練的過程,被稱爲微調 (fine tuning)

爲什麼遷移學習會有效果呢?有很多低層次特徵,比如說邊緣檢測、曲線檢測、陽性對象檢測 (positive objects),從非常大的圖形識別數據庫中習得這些能力可能有助於我們的學習算法在放射診斷中做得更好。算法學到了很多結構信息,圖像形狀信息,其中一些知識可能會很有用。

多任務學習 (Multi-task learning)

在遷移學習中,步驟是串行的,從任務 A 裏學習只是然後遷移到任務 B。在多任務學習中,任務是同時開始學習的,試圖讓單個神經網絡同時做幾件事情,然後希望每個任務都能幫到其他所有任務。

以下面這個例子來說明。

假設我們在研發無人駕駛車輛,那麼需要同時檢測不同的物體,比如行人、車輛、停車標誌以及交通燈等。

上圖中輸入的圖像是 \(x^{(i)}\),對應的標籤 \(y^{(i)}\) 不再是一個數值,而是一個向量。假設,現在我們就檢測 4 個類別,那麼 \(y^{(i)}\) 就是一個 \(4\times1\) 的向量。那麼現在我們訓練一個神經網絡,輸入 \(x\),輸出是一個四維向量 \(\hat{y}\)

對於這個神經網絡的代價函數如下
\[ J(W^{[1]},b^{[1]},\dots)=\frac{1}{m}\sum^m_{i=1}\sum^4_{j=1}L(\hat{y}_j^{(i)},y_j^{(i)}) \]
其中 \(\sum^4_{j=1}L(\hat{y}_j^{(i)},y_j^{(i)})\) 是單個樣本的損失函數,也就是對四個分量的求和。
\[ L(\hat y_{j}^{(i)},y_{j}^{(i)}) = - y_{j}^{(i)}\log\hat y_{j}^{(i)} - (1 - y_{j}^{(i)})log(1 - \hat y_{j}^{(i)}) \]
如果訓練的一組任務可以共用低層次特徵時,多任務學習可以提供一種有效的方式。

References

[1] Coursera深度學習教程中文筆記

[2] 深度學習 500 問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章