2.8 多任务学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 2.7 遷移學(xué)習(xí) | 回到目錄 | 2.9 什么是端到端的深度學(xué)習(xí) |
多任務(wù)學(xué)習(xí) (Multi-task Learning)
在遷移學(xué)習(xí)中,你的步驟是串行的,你從任務(wù) AAA 里學(xué)習(xí)只是然后遷移到任務(wù) BBB 。在多任務(wù)學(xué)習(xí)中,你是同時(shí)開(kāi)始學(xué)習(xí)的,試圖讓單個(gè)神經(jīng)網(wǎng)絡(luò)同時(shí)做幾件事情,然后希望這里每個(gè)任務(wù)都能幫到其他所有任務(wù)。
我們來(lái)看一個(gè)例子,假設(shè)你在研發(fā)無(wú)人駕駛車(chē)輛,那么你的無(wú)人駕駛車(chē)可能需要同時(shí)檢測(cè)不同的物體,比如檢測(cè)行人、車(chē)輛、停車(chē)標(biāo)志,還有交通燈各種其他東西。比如在左邊這個(gè)例子中,圖像里有個(gè)停車(chē)標(biāo)志,然后圖像中有輛車(chē),但沒(méi)有行人,也沒(méi)有交通燈。
如果這是輸入圖像 x(i)x^{(i)}x(i) ,那么這里不再是一個(gè)標(biāo)簽 y(i)y^{(i)}y(i) ,而是有4個(gè)標(biāo)簽。在這個(gè)例子中,沒(méi)有行人,有一輛車(chē),有一個(gè)停車(chē)標(biāo)志,沒(méi)有交通燈。然后如果你嘗試檢測(cè)其他物體,也許 y(i)y^{(i)}y(i) 的維數(shù)會(huì)更高,現(xiàn)在我們就先用4個(gè)吧,所以 y(i)y^{(i)}y(i) 是個(gè)4×1向量。如果你從整體來(lái)看這個(gè)訓(xùn)練集標(biāo)簽和以前類似,我們將訓(xùn)練集的標(biāo)簽水平堆疊起來(lái),像這樣 y(1)y^{(1)}y(1) 一直到 y(m)y^{(m)}y(m) :
Y=[∣∣∣?∣y(1)y(2)y(3)?y(m)∣∣∣?∣]Y=\left[\begin{matrix} | & | & | & \cdots & | \\ y^{(1)} & y^{(2)} & y^{(3)} & \cdots & y^{(m)} \\ | & | & | & \cdots & | \end{matrix}\right]Y=???∣y(1)∣?∣y(2)∣?∣y(3)∣?????∣y(m)∣????
不過(guò)現(xiàn)在 y(i)y^{(i)}y(i) 是4×1向量,所以這些都是豎向的列向量,所以這個(gè)矩陣 YYY 現(xiàn)在變成 4 x m 矩陣。而之前,當(dāng) yyy 是單實(shí)數(shù)時(shí),這就是 1 x m 矩陣。
那么你現(xiàn)在可以做的是訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),來(lái)預(yù)測(cè)這些 yyy 值,你就得到這樣的神經(jīng)網(wǎng)絡(luò),輸入 xxx ,現(xiàn)在輸出是一個(gè)四維向量 yyy 。請(qǐng)注意,這里輸出我畫(huà)了四個(gè)節(jié)點(diǎn),所以第一個(gè)節(jié)點(diǎn)就是我們想預(yù)測(cè)圖中有沒(méi)有行人,然后第二個(gè)輸出節(jié)點(diǎn)預(yù)測(cè)的是有沒(méi)有車(chē),這里預(yù)測(cè)有沒(méi)有停車(chē)標(biāo)志,這里預(yù)測(cè)有沒(méi)有交通燈,所以這里 y^\hat{y}y^? 是四維的。
要訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò),你現(xiàn)在需要定義神經(jīng)網(wǎng)絡(luò)的損失函數(shù),對(duì)于一個(gè)輸出 y^\hat{y}y^? ,是個(gè)4維向量,對(duì)于整個(gè)訓(xùn)練集的平均損失:
1m∑i=1m∑j=14L(y^j(i),yj(i))\frac1m\sum_{i=1}^m\sum_{j=1}^4L(\hat{y}^{(i)}_j,y^{(i)}_j)m1?i=1∑m?j=1∑4?L(y^?j(i)?,yj(i)?)
∑j=14L(y^j(i),yj(i))\sum_{j=1}^4L(\hat{y}^{(i)}_j,y^{(i)}_j)∑j=14?L(y^?j(i)?,yj(i)?) 這些單個(gè)預(yù)測(cè)的損失,所以這就是對(duì)四個(gè)分量的求和,行人、車(chē)、停車(chē)標(biāo)志、交通燈,而這個(gè)標(biāo)志 LLL 指的是logistic損失,我們就這么寫(xiě):
L(y^j(i),yj(i))=?yj(i)log?y^j(i)?(1?yj(i))log?(1?y^j(i))L(\hat{y}^{(i)}_j,y^{(i)}_j)=-y^{(i)}_j\log\hat{y}^{(i)}_j-(1-y^{(i)}_j)\log(1-\hat{y}^{(i)}_j)L(y^?j(i)?,yj(i)?)=?yj(i)?logy^?j(i)??(1?yj(i)?)log(1?y^?j(i)?)
整個(gè)訓(xùn)練集的平均損失和之前分類貓的例子主要區(qū)別在于,現(xiàn)在你要對(duì) j=1j=1j=1 到 444 求和,這與softmax回歸的主要區(qū)別在于,與softmax回歸不同,softmax將單個(gè)標(biāo)簽分配給單個(gè)樣本。
而這張圖可以有很多不同的標(biāo)簽,所以不是說(shuō)每張圖都只是一張行人圖片,汽車(chē)圖片、停車(chē)標(biāo)志圖片或者交通燈圖片。你要知道每張照片是否有行人、或汽車(chē)、停車(chē)標(biāo)志或交通燈,多個(gè)物體可能同時(shí)出現(xiàn)在一張圖里。實(shí)際上,在上一張幻燈片中,那張圖同時(shí)有車(chē)和停車(chē)標(biāo)志,但沒(méi)有行人和交通燈,所以你不是只給圖片一個(gè)標(biāo)簽,而是需要遍歷不同類型,然后看看每個(gè)類型,那類物體有沒(méi)有出現(xiàn)在圖中。所以我就說(shuō)在這個(gè)場(chǎng)合,一張圖可以有多個(gè)標(biāo)簽。如果你訓(xùn)練了一個(gè)神經(jīng)網(wǎng)絡(luò),試圖最小化這個(gè)成本函數(shù),你做的就是多任務(wù)學(xué)習(xí)。因?yàn)槟悻F(xiàn)在做的是建立單個(gè)神經(jīng)網(wǎng)絡(luò),觀察每張圖,然后解決四個(gè)問(wèn)題,系統(tǒng)試圖告訴你,每張圖里面有沒(méi)有這四個(gè)物體。另外你也可以訓(xùn)練四個(gè)不同的神經(jīng)網(wǎng)絡(luò),而不是訓(xùn)練一個(gè)網(wǎng)絡(luò)做四件事情。但神經(jīng)網(wǎng)絡(luò)一些早期特征,在識(shí)別不同物體時(shí)都會(huì)用到,然后你發(fā)現(xiàn),訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)做四件事情會(huì)比訓(xùn)練四個(gè)完全獨(dú)立的神經(jīng)網(wǎng)絡(luò)分別做四件事性能要更好,這就是多任務(wù)學(xué)習(xí)的力量。
另一個(gè)細(xì)節(jié),到目前為止,我是這么描述算法的,好像每張圖都有全部標(biāo)簽。事實(shí)證明,多任務(wù)學(xué)習(xí)也可以處理圖像只有部分物體被標(biāo)記的情況。所以第一個(gè)訓(xùn)練樣本,我們說(shuō)有人,給數(shù)據(jù)貼標(biāo)簽的人告訴你里面有一個(gè)行人,沒(méi)有車(chē),但他們沒(méi)有標(biāo)記是否有停車(chē)標(biāo)志,或者是否有交通燈。也許第二個(gè)例子中,有行人,有車(chē)。但是,當(dāng)標(biāo)記人看著那張圖片時(shí),他們沒(méi)有加標(biāo)簽,沒(méi)有標(biāo)記是否有停車(chē)標(biāo)志,是否有交通燈等等。也許有些樣本都有標(biāo)記,但也許有些樣本他們只標(biāo)記了有沒(méi)有車(chē),然后還有一些是問(wèn)號(hào)。
即使是這樣的數(shù)據(jù)集,你也可以在上面訓(xùn)練算法,同時(shí)做四個(gè)任務(wù),即使一些圖像只有一小部分標(biāo)簽,其他是問(wèn)號(hào)或者不管是什么。然后你訓(xùn)練算法的方式,即使這里有些標(biāo)簽是問(wèn)號(hào),或者沒(méi)有標(biāo)記,這就是對(duì) jjj 從1到4求和,你就只對(duì)帶0和1標(biāo)簽的 jjj 值求和,所以當(dāng)有問(wèn)號(hào)的時(shí)候,你就在求和時(shí)忽略那個(gè)項(xiàng),這樣只對(duì)有標(biāo)簽的值求和,于是你就能利用這樣的數(shù)據(jù)集。
那么多任務(wù)學(xué)習(xí)什么時(shí)候有意義呢?當(dāng)三件事為真時(shí),它就是有意義的。
第一,如果你訓(xùn)練的一組任務(wù),可以共用低層次特征。對(duì)于無(wú)人駕駛的例子,同時(shí)識(shí)別交通燈、汽車(chē)和行人是有道理的,這些物體有相似的特征,也許能幫你識(shí)別停車(chē)標(biāo)志,因?yàn)檫@些都是道路上的特征。
第二,這個(gè)準(zhǔn)則沒(méi)有那么絕對(duì),所以不一定是對(duì)的。但我從很多成功的多任務(wù)學(xué)習(xí)案例中看到,如果每個(gè)任務(wù)的數(shù)據(jù)量很接近,你還記得遷移學(xué)習(xí)時(shí),你從 AAA 任務(wù)學(xué)到知識(shí)然后遷移到 BBB 任務(wù),所以如果任務(wù) AAA 有1百萬(wàn)個(gè)樣本,任務(wù) BBB 只有1000個(gè)樣本,那么你從這1百萬(wàn)個(gè)樣本學(xué)到的知識(shí),真的可以幫你增強(qiáng)對(duì)更小數(shù)據(jù)集任務(wù) BBB 的訓(xùn)練。那么多任務(wù)學(xué)習(xí)又怎么樣呢?在多任務(wù)學(xué)習(xí)中,你通常有更多任務(wù)而不僅僅是兩個(gè),所以也許你有,以前我們有4個(gè)任務(wù),但比如說(shuō)你要完成100個(gè)任務(wù),而你要做多任務(wù)學(xué)習(xí),嘗試同時(shí)識(shí)別100種不同類型的物體。你可能會(huì)發(fā)現(xiàn),每個(gè)任務(wù)大概有1000個(gè)樣本。所以如果你專注加強(qiáng)單個(gè)任務(wù)的性能,比如我們專注加強(qiáng)第100個(gè)任務(wù)的表現(xiàn),我們用 A100A100A100 表示,如果你試圖單獨(dú)去做這個(gè)最后的任務(wù),你只有1000個(gè)樣本去訓(xùn)練這個(gè)任務(wù),這是100項(xiàng)任務(wù)之一,而通過(guò)在其他99項(xiàng)任務(wù)的訓(xùn)練,這些加起來(lái)可以一共有99000個(gè)樣本,這可能大幅提升算法性能,可以提供很多知識(shí)來(lái)增強(qiáng)這個(gè)任務(wù)的性能。不然對(duì)于任務(wù) A100A100A100 ,只有1000個(gè)樣本的訓(xùn)練集,效果可能會(huì)很差。如果有對(duì)稱性,這其他99個(gè)任務(wù),也許能提供一些數(shù)據(jù)或提供一些知識(shí)來(lái)幫到這100個(gè)任務(wù)中的每一個(gè)任務(wù)。所以第二點(diǎn)不是絕對(duì)正確的準(zhǔn)則,但我通常會(huì)看的是如果你專注于單項(xiàng)任務(wù),如果想要從多任務(wù)學(xué)習(xí)得到很大性能提升,那么其他任務(wù)加起來(lái)必須要有比單個(gè)任務(wù)大得多的數(shù)據(jù)量。要滿足這個(gè)條件,其中一種方法是,比如右邊這個(gè)例子這樣,或者如果每個(gè)任務(wù)中的數(shù)據(jù)量很相近,但關(guān)鍵在于,如果對(duì)于單個(gè)任務(wù)你已經(jīng)有1000個(gè)樣本了,那么對(duì)于所有其他任務(wù),你最好有超過(guò)1000個(gè)樣本,這樣其他任務(wù)的知識(shí)才能幫你改善這個(gè)任務(wù)的性能。
最后多任務(wù)學(xué)習(xí)往往在以下場(chǎng)合更有意義,當(dāng)你可以訓(xùn)練一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò),同時(shí)做好所有的工作,所以多任務(wù)學(xué)習(xí)的替代方法是為每個(gè)任務(wù)訓(xùn)練一個(gè)單獨(dú)的神經(jīng)網(wǎng)絡(luò)。所以不是訓(xùn)練單個(gè)神經(jīng)網(wǎng)絡(luò)同時(shí)處理行人、汽車(chē)、停車(chē)標(biāo)志和交通燈檢測(cè)。你可以訓(xùn)練一個(gè)用于行人檢測(cè)的神經(jīng)網(wǎng)絡(luò),一個(gè)用于汽車(chē)檢測(cè)的神經(jīng)網(wǎng)絡(luò),一個(gè)用于停車(chē)標(biāo)志檢測(cè)的神經(jīng)網(wǎng)絡(luò)和一個(gè)用于交通信號(hào)燈檢測(cè)的神經(jīng)網(wǎng)絡(luò)。那么研究員Rich Carona幾年前發(fā)現(xiàn)的是什么呢?多任務(wù)學(xué)習(xí)會(huì)降低性能的唯一情況,和訓(xùn)練單個(gè)神經(jīng)網(wǎng)絡(luò)相比性能更低的情況就是你的神經(jīng)網(wǎng)絡(luò)還不夠大。但如果你可以訓(xùn)練一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò),那么多任務(wù)學(xué)習(xí)肯定不會(huì)或者很少會(huì)降低性能,我們都希望它可以提升性能,比單獨(dú)訓(xùn)練神經(jīng)網(wǎng)絡(luò)來(lái)單獨(dú)完成各個(gè)任務(wù)性能要更好。
所以這就是多任務(wù)學(xué)習(xí),在實(shí)踐中,多任務(wù)學(xué)習(xí)的使用頻率要低于遷移學(xué)習(xí)。我看到很多遷移學(xué)習(xí)的應(yīng)用,你需要解決一個(gè)問(wèn)題,但你的訓(xùn)練數(shù)據(jù)很少,所以你需要找一個(gè)數(shù)據(jù)很多的相關(guān)問(wèn)題來(lái)預(yù)先學(xué)習(xí),并將知識(shí)遷移到這個(gè)新問(wèn)題上。但多任務(wù)學(xué)習(xí)比較少見(jiàn),就是你需要同時(shí)處理很多任務(wù),都要做好,你可以同時(shí)訓(xùn)練所有這些任務(wù),也許計(jì)算機(jī)視覺(jué)是一個(gè)例子。在物體檢測(cè)中,我們看到更多使用多任務(wù)學(xué)習(xí)的應(yīng)用,其中一個(gè)神經(jīng)網(wǎng)絡(luò)嘗試檢測(cè)一大堆物體,比分別訓(xùn)練不同的神經(jīng)網(wǎng)絡(luò)檢測(cè)物體更好。但我說(shuō),平均來(lái)說(shuō),目前遷移學(xué)習(xí)使用頻率更高,比多任務(wù)學(xué)習(xí)頻率要高,但兩者都可以成為你的強(qiáng)力工具。
所以總結(jié)一下,多任務(wù)學(xué)習(xí)能讓你訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)執(zhí)行許多任務(wù),這可以給你更高的性能,比單獨(dú)完成各個(gè)任務(wù)更高的性能。但要注意,實(shí)際上遷移學(xué)習(xí)比多任務(wù)學(xué)習(xí)使用頻率更高。我看到很多任務(wù)都是,如果你想解決一個(gè)機(jī)器學(xué)習(xí)問(wèn)題,但你的數(shù)據(jù)集相對(duì)較小,那么遷移學(xué)習(xí)真的能幫到你,就是如果你找到一個(gè)相關(guān)問(wèn)題,其中數(shù)據(jù)量要大得多,你就能以它為基礎(chǔ)訓(xùn)練你的神經(jīng)網(wǎng)絡(luò),然后遷移到這個(gè)數(shù)據(jù)量很少的任務(wù)上來(lái)。
今天我們學(xué)到了很多和遷移學(xué)習(xí)有關(guān)的問(wèn)題,還有一些遷移學(xué)習(xí)和多任務(wù)學(xué)習(xí)的應(yīng)用。但多任務(wù)學(xué)習(xí),我覺(jué)得使用頻率比遷移學(xué)習(xí)要少得多,也許其中一個(gè)例外是計(jì)算機(jī)視覺(jué),物體檢測(cè)。在那些任務(wù)中,人們經(jīng)常訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)同時(shí)檢測(cè)很多不同物體,這比訓(xùn)練單獨(dú)的神經(jīng)網(wǎng)絡(luò)來(lái)檢測(cè)視覺(jué)物體要更好。但平均而言,我認(rèn)為即使遷移學(xué)習(xí)和多任務(wù)學(xué)習(xí)工作方式類似。實(shí)際上,我看到用遷移學(xué)習(xí)比多任務(wù)學(xué)習(xí)要更多,我覺(jué)得這是因?yàn)槟愫茈y找到那么多相似且數(shù)據(jù)量對(duì)等的任務(wù)可以用單一神經(jīng)網(wǎng)絡(luò)訓(xùn)練。再次,在計(jì)算機(jī)視覺(jué)領(lǐng)域,物體檢測(cè)這個(gè)例子是最顯著的例外情況。
所以這就是多任務(wù)學(xué)習(xí),多任務(wù)學(xué)習(xí)和遷移學(xué)習(xí)都是你的工具包中的重要工具。最后,我想繼續(xù)討論端到端深度學(xué)習(xí),所以我們來(lái)看下一個(gè)視頻來(lái)討論端到端學(xué)習(xí)。
課程板書(shū)
| 2.7 遷移學(xué)習(xí) | 回到目錄 | 2.9 什么是端到端的深度學(xué)習(xí) |
總結(jié)
以上是生活随笔為你收集整理的2.8 多任务学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2.7 迁移学习-深度学习第三课《结构化
- 下一篇: 2.9 什么是端到端的深度学习-深度学习