2.10 是否要使用端到端的深度学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 2.9 什么是端到端的深度學習 | 回到目錄 | 2.11 總結 |
是否要使用端到端的深度學習 (Whether to use end-to-end deep learning?)
假設你正在搭建一個機器學習系統,你要決定是否使用端對端方法,我們來看看端到端深度學習的一些優缺點,這樣你就可以根據一些準則,判斷你的應用程序是否有希望使用端到端方法。
這里是應用端到端學習的一些好處,首先端到端學習真的只是讓數據說話。所以如果你有足夠多的 (x,y)(x,y)(x,y) 數據,那么不管從 xxx 到 yyy 最適合的函數映射是什么,如果你訓練一個足夠大的神經網絡,希望這個神經網絡能自己搞清楚,而使用純機器學習方法,直接從 xxx 到 yyy 輸入去訓練的神經網絡,可能更能夠捕獲數據中的任何統計信息,而不是被迫引入人類的成見。
例如,在語音識別領域,早期的識別系統有這個音位概念,就是基本的聲音單元,如cat單詞的“cat”的Cu-、Ah-和Tu-,我覺得這個音位是人類語言學家生造出來的,我實際上認為音位其實是語音學家的幻想,用音位描述語言也還算合理。但是不要強迫你的學習算法以音位為單位思考,這點有時沒那么明顯。如果你讓你的學習算法學習它想學習的任意表示方式,而不是強迫你的學習算法使用音位作為表示方式,那么其整體表現可能會更好。
端到端深度學習的第二個好處就是這樣,所需手工設計的組件更少,所以這也許能夠簡化你的設計工作流程,你不需要花太多時間去手工設計功能,手工設計這些中間表示方式。
那么缺點呢?這里有一些缺點,首先,它可能需要大量的數據。要直接學到這個 xxx 到 yyy 的映射,你可能需要大量 (x,y)(x,y)(x,y) 數據。我們在以前的視頻里看過一個例子,其中你可以收集大量子任務數據,比如人臉識別,我們可以收集很多數據用來分辨圖像中的人臉,當你找到一張臉后,也可以找得到很多人臉識別數據。但是對于整個端到端任務,可能只有更少的數據可用。所以 xxx 這是端到端學習的輸入端, yyy 是輸出端,所以你需要很多這樣的 (x,y)(x,y)(x,y) 數據,在輸入端和輸出端都有數據,這樣可以訓練這些系統。這就是為什么我們稱之為端到端學習,因為你直接學習出從系統的一端到系統的另一端。
另一個缺點是,它排除了可能有用的手工設計組件。機器學習研究人員一般都很鄙視手工設計的東西,但如果你沒有很多數據,你的學習算法就沒辦法從很小的訓練集數據中獲得洞察力。所以手工設計組件在這種情況,可能是把人類知識直接注入算法的途徑,這總不是一件壞事。我覺得學習算法有兩個主要的知識來源,一個是數據,另一個是你手工設計的任何東西,可能是組件,功能,或者其他東西。所以當你有大量數據時,手工設計的東西就不太重要了,但是當你沒有太多的數據時,構造一個精心設計的系統,實際上可以將人類對這個問題的很多認識直接注入到問題里,進入算法里應該挺有幫助的。
所以端到端深度學習的弊端之一是它把可能有用的人工設計的組件排除在外了,精心設計的人工組件可能非常有用,但它們也有可能真的傷害到你的算法表現。例如,強制你的算法以音位為單位思考,也許讓算法自己找到更好的表示方法更好。所以這是一把雙刃劍,可能有壞處,可能有好處,但往往好處更多,手工設計的組件往往在訓練集更小的時候幫助更大。
如果你在構建一個新的機器學習系統,而你在嘗試決定是否使用端到端深度學習,我認為關鍵的問題是,你有足夠的數據能夠直接學到從 xxx 映射到 yyy 足夠復雜的函數嗎?我還沒有正式定義過這個詞“必要復雜度(complexity needed)”。但直覺上,如果你想從 xxx 到 yyy 的數據學習出一個函數,就是看著這樣的圖像識別出圖像中所有骨頭的位置,那么也許這像是識別圖中骨頭這樣相對簡單的問題,也許系統不需要那么多數據來學會處理這個任務。或給出一張人物照片,也許在圖中把人臉找出來不是什么難事,所以你也許不需要太多數據去找到人臉,或者至少你可以找到足夠數據去解決這個問題。相對來說,把手的X射線照片直接映射到孩子的年齡,直接去找這種函數,直覺上似乎是更為復雜的問題。如果你用純端到端方法,需要很多數據去學習。
視頻最后我講一個更復雜的例子,你可能知道我一直在花時間幫忙主攻無人駕駛技術的公司drive.ai,無人駕駛技術的發展其實讓我相當激動,你怎么造出一輛自己能行駛的車呢?好,這里你可以做一件事,這不是端到端的深度學習方法,你可以把你車前方的雷達、激光雷達或者其他傳感器的讀數看成是輸入圖像。但是為了說明起來簡單,我們就說拍一張車前方或者周圍的照片,然后駕駛要安全的話,你必須能檢測到附近的車,你也需要檢測到行人,你需要檢測其他的東西,當然,我們這里提供的是高度簡化的例子。
弄清楚其他車和形如的位置之后,你就需要計劃你自己的路線。所以換句話說,當你看到其他車子在哪,行人在哪里,你需要決定如何擺方向盤在接下來的幾秒鐘內引導車子的路徑。如果你決定了要走特定的路徑,也許這是道路的俯視圖,這是你的車,也許你決定了要走那條路線,這是一條路線,那么你就需要擺動你的方向盤到合適的角度,還要發出合適的加速和制動指令。所以從傳感器或圖像輸入到檢測行人和車輛,深度學習可以做得很好,但一旦知道其他車輛和行人的位置或者動向,選擇一條車要走的路,這通常用的不是深度學習,而是用所謂的運動規劃軟件完成的。如果你學過機器人課程,你一定知道運動規劃,然后決定了你的車子要走的路徑之后。還會有一些其他算法,我們說這是一個控制算法,可以產生精確的決策確定方向盤應該精確地轉多少度,油門或剎車上應該用多少力。
所以這個例子就表明了,如果你想使用機器學習或者深度學習來學習某些單獨的組件,那么當你應用監督學習時,你應該仔細選擇要學習的 xxx 到 yyy 映射類型,這取決于那些任務你可以收集數據。相比之下,談論純端到端深度學習方法是很激動人心的,你輸入圖像,直接得出方向盤轉角,但是就目前能收集到的數據而言,還有我們今天能夠用神經網絡學習的數據類型而言,這實際上不是最有希望的方法,或者說這個方法并不是團隊想出的最好用的方法。而我認為這種純粹的端到端深度學習方法,其實前景不如這樣更復雜的多步方法。因為目前能收集到的數據,還有我們現在訓練神經網絡的能力是有局限的。
這就是端到端的深度學習,有時候效果拔群。但你也要注意應該在什么時候使用端到端深度學習。最后,謝謝你,恭喜你堅持到現在,如果你學完了上周的視頻和本周的視頻,那么我認為你已經變得更聰明,更具戰略性,并能夠做出更好的優先分配任務的決策,更好地推動你的機器學習項目,也許比很多機器學習工程師,還有和我在硅谷看到的研究人員都強。所以恭喜你學到這里,我希望你能看看本周的作業,應該能再給你一個機會去實踐這些理念,并確保你掌握它們。
課程板書
| 2.9 什么是端到端的深度學習 | 回到目錄 | 2.11 總結 |
總結
以上是生活随笔為你收集整理的2.10 是否要使用端到端的深度学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.9 什么是端到端的深度学习-深度学习
- 下一篇: 2.11 总结-深度学习第三课《结构化机