2 8 多工學習

2022-05-28 06:27:09 字數 2247 閱讀 9338

在遷移學習中,你的步驟是序列的,你從任務a裡學習只是然後遷移到任務b。在多工學習中,你是同時開始學習的,試圖讓單個神經網路同時做幾件事情,然後希望這裡每個任務都能幫到其他所有任務。

假設你在研發無人駕駛車輛,那麼你的無人駕駛車可能需要同時檢測不同的物體,比如檢測行人、車輛、停車標誌,還有交通燈各種其他東西。如果這是輸入影象$}$ 那麼這裡不再是乙個標籤$}$,而是有 4 個標籤。在這個例子中,沒有行人,有一輛車,有乙個停車標誌,沒有交通燈。然後如果你嘗試檢測其他物體,也許$}$ 的維數會更高。

如果你從整體來看這個訓練集標籤和以前類似,我們將訓練集的標籤水平堆疊起來,像這樣$}$一直到$}$:

不過現在$}$是4×1向量,所以這些都是豎向的列向量,所以這個矩陣y現在變成4 × m矩陣。而之前,當y是單實數時,這就是1 × m矩陣。

那麼你現在可以做的是訓練乙個神經網路,來**這些y值,你就得到這樣的神經網路,輸入x,現在輸出是乙個四維向量y。請注意,這裡輸出我畫了四個節點,所以第乙個節點就是我們想**圖中有沒有行人,然後第二個輸出節點**的是有沒有車,這裡**有沒有停車標誌,這裡**有沒有交通燈,所以這裡$$是四維的。

要訓練這個神經網路,你現在需要定義神經網路的損失函式,對於乙個輸出$$,是個 4維向量,對於整個訓練集的平均損失:

$\frac\sum\limits_^m ^4 ,y_j^)} }$

$\sum\limits_^4 ,y_j^)}$ 這些單個**的損失,所以這就是對四個分量的求和,行人、車、停車標誌、交通燈,而這個標誌l指的是 logistic 損失,我們就這麼寫:

$l(\hat y_j^,y_j^) =  - y_j^\log \hat y_j^ - (1 - y_j^)\log (1 - \hat y_j^)$

整個訓練集的平均損失和之前分類貓的例子主要區別在於,現在你要對j = 1到 4 求和,這與 softmax 回歸的主要區別在於,與 softmax 回歸不同, softmax 將單個標籤分配給單個樣本。

如果你訓練了乙個神經網路,試圖最小化這個成本函式,你做的就是多工學習。因為你現在做的是建立單個神經網路,觀察每張圖,然後解決四個問題,系統試圖告訴你,每張圖裡面有沒有這四個物體。另外你也可以訓練四個不同的神經網路,而不是訓練乙個網路做四件事情。但神經網路一些早期特徵,在識別不同物體時都會用到,然後你發現,訓練乙個神經網路做四件事情會比訓練四個完全獨立的神經網路分別做四件事效能要更好,這就是多工學習的力量。

另乙個細節,好像每張圖都有全部標籤。事實證明,多工學習也可以處理影象只有部分物體被標記的情況。所以第乙個訓練樣本,我們說有人,給資料貼標籤的人告訴你裡面有乙個行人,沒有車,但他們沒有標記是否有停車標誌,或者是否有交通燈。也許第二個例子中,有行人,有車。但是,當標記人看著那張時,他們沒有加標籤,沒有標記是否有停車標誌,是否有交通燈等等。也許有些樣本都有標記,但也許有些樣本他們只標記了有沒有車,然後還有一些是問號。

即使是這樣的資料集,你也可以在上面訓練演算法,同時做四個任務,即使一些影象只有一小部分標籤,其他是問號或者不管是什麼。然後你訓練演算法的方式,即使這裡有些標籤是問號,或者沒有標記,這就是對j從 1 到 4 求和,你就只對帶 0 和 1 標籤的j值求和,所以當

有問號的時候,你就在求和時忽略那個項,這樣只對有標籤的值求和,於是你就能利用這樣的資料集。

那麼多工學習什麼時候有意義呢?當三件事為真時,它就是有意義的:

第一,如果你訓練的一組任務,可以共用低層次特徵。對於無人駕駛的例子,同時識別交通燈、汽車和行人是有道理的,這些物體有相似的特徵,也許能幫你識別停車標誌,因為這些都是道路上的特徵。

第二,這個準則沒有那麼絕對,所以不一定是對的。如果你專注於單項任務,如果想要從多工學習得到很大效能提公升,那麼其他任務加起來必須要有比單個任務大得多的資料量。要滿足這個條件,其中一種方法是,每個任務中的資料量很相近。

最後,多工學習會降低效能的唯一情況,和訓練單個神經網路相比效能更低的情況就是你的神經網路還不夠大。但如果你可以訓練乙個足夠大的神經網路,那麼多工學習肯定不會或者很少會降低效能,我們都希望它可以提公升效能,比單獨訓練神經網路來單獨完成各個任務效能要更好。

多工學習

最近一段時間multitask網路比較流行,比如做人臉檢測的時候,乙個網路完成 人臉和非人臉 二分類任務的同時也要進行boudingbox回歸或者人臉關鍵點回歸。以人臉檢測mtcnn為例,乙個網路包含三個任務。訓練的時候,乙個batch中的,一部分用於二分類 一部分用於boundingbox 回歸,...

多工學習

以人臉特徵點定位中的tcdcn模型 1 為例子,該模型思想 通過一些多樣的精細的任務,來優化提公升特徵點定位精度。就是在人臉特徵點檢測的時候,同時進行多個任務的學習,這些子任務包括 是否帶眼鏡,是否微笑和臉部的朝向等分類任務。使用這些輔助的屬性不僅可以起到一次性獲取感興趣的屬性,更重要的是子任務更好...

多工學習

什麼叫 多工 呢?簡單地說,就是作業系統可以同時執行多個任務。打個比方,你一邊在用瀏覽器上網,一邊在聽 一邊在用word趕作業,這就是多工,至少同時有3個任務正在執行。還有很多任務悄悄地在後台同時執行著,只是桌面上沒有顯示而已。現在,多核cpu已經非常普及了,但是,即使過去的單核cpu,也可以執行多...