在轉移學習時， 您有一種依序的步驟
您從任務Ａ學習， 然後轉移到任務Ｂ
在多工任務學習裡， 您同時開始
試著用一個神經網路， 同時一次做許多事情
然後每一個任務， 希望都能幫助到其他的任務
讓我們看另一個例子
假設您建立一個自動駕駛車輛， 建立一個自駕車
那您的自駕車需要偵測許多不同的東西
像是行人，偵測其他車輛， 偵測停車標誌
也要能偵測紅綠燈， 跟其他東西
舉個例子，在左邊這個例子， 有一個停止標誌在影像中
有一輛車在影像中， 但是沒有行人或者紅綠燈
所以如果這個影像，舉個例子 X(i)
那與其有一個標籤 Y(i), 您其實有四個標籤
在這個例子，沒有行人，有車子
有一個停止標誌， 沒有紅綠燈
而如果您試著偵測其他事
或許 Y(i) 有更多維度
但現在，讓我們只用四個
所以 y(i) 是一個 4 乘 1 向量
而如果您看整個訓練集
類似之前，我們會將訓練資料的標籤
水平疊起來像是， y(1) 到 y(m)
除了現在 y(i) 是 4乘1 向量， 每個都是高的列向量
所以這個矩陣 Ｙ 現在是 4 乘 m 的矩陣，而之前
當 y 是一個實數，所以 會是一個 1 乘 m 矩陣
您現在可以做的是 訓練神經網路來預測 Y 的值
所以您可以有一個神經網路輸入 Ｘ
輸出現在是 4 維度的 Ｙ 值
請注意這裡的輸出 我畫了四個節點
所以第一個節點我們 試著預測是否有行人
在這個影像中
第二個節點會預測 是否有其他車輛
預測是否有停止標誌， 這會預測是否有紅綠燈
所以這裡 y-hat 有四維度
所以訓練這個神經網路，您現在需要定義
神經網路的損失函數
所以給予一個預測輸出 y-hat，是4乘1維度
在您整個訓練集的平均損失
會是 1 除以 m，總和從 i = 1 到 m
總和從 j=1 到 4 的每一個 單獨的預測的損失
所以就只是總和四個元件的行人，車子，停止標誌
跟紅綠燈
而這個花體的 Ｌ是 一般的羅吉斯損失
將它直接寫下來
這是 - y_ji log y-hat_ji
(1 - y_ji) log (1 - y-hat_ji)
而跟先前二元分類法 最主要不同是
您現在要總和 J 等於 1 到 4
而跟 softmax 迴歸分析最主要的不同是
不像 softmax 迴歸分析要 指派一個標籤給每一個例子
這一個影像可以有多重的標籤
所以您並不是說每一個影像 要不是行人，
就是一輛車，一個停止標誌的圖像 ，一個紅綠燈的影像
您問的是每一張影像裡， 有沒有行人，車子，停止標誌
或者紅綠燈，多重物件 可以同時出現在同一個影像上
實際上，在前面的投影片中，我們同時有車子跟
停止標誌在影像中， 但是沒有行人跟紅綠燈
所以您並不指派一個 單一標籤給一個影像
您要透過不同的類別來問
每一個類別，這個類別，有這種型態的物件 出現在影像中嗎？
所以這是我說的，在這種設定下
一張影像可以有多重標籤
如果您訓練一個神經網路 來最小化這個成本函數
您就是在進行多工任務學習
因為您在建立一個 單一的神經網路看著
每個影像，基本上解決四個問題
它試著告訴您每張影像 是否有這四個物件在其中
而另一種方式您可以做的是， 分別訓練四個的神經網路
而非訓練一個網路來做四件事
但如果一些在神經網路的早期特徵可以在
不同的物件中分享的話， 那您會發現
訓練一個神經網路來做四件事，結果比
訓練四個完全分開的 神經網路來做這四件任務要好
所以這是多工學習的力量
還有一個細節
至今我描述的演算法好像 每個影像都有一個單一標籤
實際上，多工任務學習也可以 作用在即使一些影像
我們只標籤一些物件
所以在第一個訓練例子， 假設有人，您的標籤者告訴您
有行人，沒有車子， 但他們不關心是否
有停止標誌，或者是否有紅綠燈
而或許在第二個例子，有行人，也有車子，但
再一次，標籤者，他們看著這個影像， 他們並沒有將這些標籤標註
是否有停止標誌，是否有紅綠燈等等
或許一些例子全部都有標，或許一些例子
他們只是標籤是否有車子
所以有一些問號，等等
所以用這樣的資料集， 您還是可以訓練您的學習演算法
來一次做四件任務， 即使一些影像
只是標籤的子集， 其他的是一些問號，或者不關心
而您訓練您的 演算法的方式
即使一些這樣的標籤 是問號或者
真的未標籤，在總和從 J 從 1 到 4 時
您會總和 j 在 0 或 1 的值
所以當有問號時， 您只是在總和時忽略那一項
只是總和那些有標籤部分的值
所以這樣做 會讓您可以使用這個資料集
所以何時使用多工學習有意義？
我會說在以下三件事 為真時有意義
一是如果您訓練 在一組任務上可以從
分享低階特徵時有益
所以對於自駕車例子而言， 是有意義的，它要辨識紅綠燈
跟車子，行人，這些有類似的特徵
可以幫助您辨識停止標誌， 因為這些都是路的特徵
二，這比較不是硬性且快速的準則， 所以這並不一定永遠為真
但我看過很多成功的 多工任務學習設定是
每個任務的資料量 都很類似
所以您記得在轉移學習時， 您從一些任務Ａ中學習
轉移到任務Ｂ
所以如果您有上百萬個例子在任務Ａ， 然後有 1,000 例子
在任務Ｂ，那所有您從 百萬個例子學到的知識
可以真的幫助您擴增在 任務Ｂ中小很多的資料集上
多工任務學習呢？
在多工任務學習中， 您通常有比兩個多的任務
所以或許您有，之前是四個任務， 但假設您有 100 個任務
而您試著做多工任務學習， 同時試著辨識 100 個不同
型態的物件
所以您或許會發現您或許 每個任務有 1,000 個例子
如果您只關注 在一個任務的表現上
讓我們只關注在第 100 個任務， 您稱之為 A100
如果您試著單獨作 這個最終的任務
您會只有 1,000 個例子 在訓練這個任務
這個 100 個中間的一個任務， 但也使用其他 99 個任務做訓練的話
這會總計有 99,000 個訓練例子， 這會有很大的促進
可以給很多的知識來擴增這些
相對小的 1,000 個例子 您用在任務 A100 的訓練集
而對應其他 99 個任務， 也可以提供一些資料或者提供
一些知識來幫助每一個其他任務， 在這100個清單中的任務
第二點並不是一個硬性快速的準則，我試著這樣看
如果您關注在任一個任務上， 要得到很大的進展
其他任務總和下來 會是很大量的資料
比起單一任務而言
一個方式來滿足這一點， 如果很多的任務像我們
在右邊這個例子， 如果您在每個任務的資料量類似
但重點是如果您一個任務 已經有 1,000 個例子
那其他的任務最好也會有 比 1,000 更多個例子
那其他任務會幫助您在 最終任務上做得更好
最後，多工任務學習傾向於有意義 當您可以訓練
足夠大的神經網路來 在所有的任務上作用得很好
所以多工任務學習 的另一種方式是
在每個任務單獨 訓練神經網路
所以與其訓練一個神經網路在 行人，車子，停止標誌跟
紅綠燈的偵測，您可以訓練 一個神經網路對於
行人偵測，一個神經網路做車子偵測， 一個神經網路
做停止標誌偵測， 一個神經網路做紅綠燈偵測
有一個研究人員，Rich Carona, 多年前提出
多工任務學習唯一會 傷害整體表現，比起
單獨的神經網路而言是 如果您的神經網路不夠大
但如果您可以訓練足夠大的神經網路， 那多工任務學習
應該不會，或者 應該不至於傷害整體表現
而希望會真的幫助性能，比起如果您
訓練神經網路在單獨的 不同的任務上
所以這是多工任務學習
實作上，多工任務學習 使用上少於轉移學習
我看了很多的應用在轉移學習，您
想要解決一個 只有小量資料的問題
所以您找一個相關的問題 有很多的資料可以學習
轉移那個到 新的問題上
但多工任務學習就是比較少見到， 您有大量的任務
您想要做得很好
您可以同時訓練所有的任務
或許一個例子是電腦視覺
在物件偵測上，我看到越來越多的應用使用多工任務
在一個神經網路上，同時試著偵測整個全部物件
比起不同的神經網路 試著單獨偵測物件更好
但我會說平均而言，在今天，轉移學習 用的機會較多
比起多工任務學習而言，但兩者都是 有用的工具在您的兵工廠裡
總結一下
多工任務學習能夠 讓您訓練一個神經網路做很多任務
這樣會給您比較好的表現， 比起您單獨做這些任務
一個注意點，實作上， 我看到轉移學習
使用上比多工任務學習多
我看過很多的任務， 如果您想要解決機器學習問題
但相對的您的資料集比較小， 那轉移學習可以真的幫助您
如果您找到相關的問題， 但有較大的資料集
您可以訓練您個神經網路，從那裡
轉移到您有 較少資料的問題上
所以轉移學習 在今天用得很多
有一些應用使用多工任務學習
但我想多工任務學習 用得比轉移學習少
或許一個例外是 電腦視覺的物件偵測
我看到很多的應用， 訓練一個神經網路
來偵測很多的物件
而這比起分開 訓練神經網路要好
跟偵測可視物件
但平均而言，即使轉移訓練跟
多工任務學習通常 用類似的方式表現，實作上
看轉移學習的應用 遠多於多工任務學習
我想因為通常比較難來做設定， 去找出不同的
任務您會實際上 想要在一個神經網路上做訓練
再次，只有一些電腦視覺
物件偵測的例子 是最顯著的例外
所以這是多工任務學習
多工任務學習跟
轉移學習都是同樣重要的 在您的工具袋中
最後，我想要繼續前往 談論端對端深度學習
讓我們前往下一段影片， 來討論端對端學習