假設在建立一個 機器學習系統時您試著 決定是否要使用端對端方式 讓我們看看一些優點跟缺點 對於端對端深度學習,您可以 有一些準則來看 端對端方式 對您的應用是否有希望 這裡是一些應用 端對端學習的好處 首先,端對端學習真的讓資料說話 如果您有足夠的 X,Y 資料 不管如何, 最合適對應從 X 到 Y 的函數 如果您訓練足夠大的神經網路 期望神經網路會找到(這個函數) 而使用單純的機器學習方式 您個神經網路學習從輸入 X 到 Y 或許比較能夠抓住資料的統計資訊 而不是被人為成見 迫使反應 舉個例子,在語音辨識中 早期的語音系統有 音素的記號,是基本的單位聲音像是 C, Ah, Te 對於 "cat" 這個字 我想音素是人類語言學家所創造出來的 我實際上這樣想,音素是 語言的想像, 是合理的方式來描述語言 但您想強迫您的學習演算法 用音素來思考是不明確的 而如果您讓您的學習演算法學習, 不管它想用什麼代表 而不是強迫您的學習演算法 使用音素來代表 那整體的表現會更佳 第二種好處是端對端深度學習是 需要比較少 手工設計的元件 而這可以簡化 您的設計工作流程 您不需要花很多的時間 在手工設計特徵 手工設計這些中間代表物 而缺點如何? 這裡有一些缺點 首先,它需要大量的資料 為了學習從 X直接對應到 Y 您或許需要很多的資料  X,Y 我們在前面的影片看到一些例子 您可以獲取很多子任務的資料 像是人臉辨識 我們可以找到很多資料來 從影像中找出人臉 同時認出這個人臉 當您找到人臉時 但就是比較少的資料 來做整體端對端的任務 所以在端對端學習中 X是輸入端,Y是輸出端 所以您需要很多  X,Y的資料 在輸入端跟輸出端來訓練這個系統 這也是為甚麼稱為端對端學習,因為您學習 直接對應從系統的一端 一直到系統的另一端 其他的缺點是這排除了 潛在有用的手工設計元件 機器學習的研究人員往往會 輕蔑手工設計的東西 但如果您沒有很多資料 您的學習演算法沒辦法 從您的資料得到太多的洞見, 如果您的資料集很小的話 所以手工設計的元件 可能真的是一種方式 來注入手工知識到演算法中 而這並不一定是壞事 我想學習演算法有 兩種主要的知識來源 一是資料,一是您的手工設計 是元件,特徵或者其他東西 所以當您有很多很多資料 手工設計比較不重要, 但當您沒有很多資料 小心使用手工設計系統 真的可以讓人們注入 很多的知識到這個問題上 進入演算法, 這會很有幫助 在端對端的一個缺點是 它排除了潛在有用的 手工設計元件 而手工設計元件可能會很有用 如果好好設計的話 它們也有可能是有害的,限制您的效能 就像如果您強迫演算法 用音素來思考 當或許它自己可以 找到更棒的表示方法 所以這像是劍的雙刃 可能會傷害,也可能有所幫助 當您的訓練在小的訓練集上時, 手工設計元件傾向於有幫助 如果您建立一個新的機器學學習系統, 您試著 決定要不要用 端對端深度學習 我想關鍵問題會是 您有足夠的資料來學習 複雜的函數從X對應到Y? 我並沒有正式的定義對於這段話 會有些複雜,但直覺上 如果您試著學習一個函數從X到Y 像是看這張影像 而辨識骨頭的位置 在這張影像上 或許這似乎是相對的比較簡單的問題 來辨識影像中骨頭的位置, 或許您需要這樣多的資料來完成這個任務 或者給一個人的照片 或許找尋影像中人臉的部分, 似乎不是很難的問題 所以或許您不需要 太多的資料來找出人臉 或者至少您可以找到足夠的資料 來解決這個任務,而相對的 求一個函數來從看手骨 直接對應到小孩子的年紀 似乎是比較複雜的問題,直觀上或許您需要 更多的資料來學習,如果您要應用 純粹端對端深度學習方式 所以讓我用一個更複雜的例子 來結束這段影片 您或許知道我花了一些時間 在幫忙 一個自動駕駛公司,Drive.ai 我其實對自動駕駛很興奮 所以您如何建立一個車子 會自動駕駛? 有一件事情您可以做 而這不是端對端深度學習方式 您可以拿您車子前面的影像當輸入, 或許用雷達,來達 (LiDAR - Light Detection and Ranging) 或其他感測器 但為了簡化描述 假設您拍了一張 在您前面或者周邊的照片 而為了安全的駕駛,您需要偵測 其他車輛,而您也需要偵測行人 當然,您需要偵測其他東西 但,我們簡化這個例子 找到了其他車輛跟行人 您需要規劃您的路徑 換句話說 如果您看到其他車輛在哪裡 行人在哪裡,您需要決定 如何來駕駛您的車子 操縱方向盤向哪一個路徑 在接下來幾秒鐘 而決定了您將往哪一個路徑開 或許這是一個從上往下看 的角度看您的車子 或許您決定往這個路徑開 這是所謂的路徑 您需要產生適當的操縱方向盤 來執行這個任務 跟加速以及煞車指令 所以從您的影像或者感測器輸入 來偵測車輛跟行人 這個使用深度學習 可以做得很好 但要找出其他的車輛跟行人怎麼走 來選擇這個路徑, 準確地知道如何移動您的車輛 通常這不會使用深度學習 取而代之,會使用一種軟體稱為移動規劃 而如果您學過機器人課程,您會學到移動規劃 而決定了往哪一個路徑, 您需要操縱方向盤來移動 這會有其他種演算法 我們稱之為控制演算法來 產生正確的決定 來決定到底要轉多少的方向盤 跟多少的加速或者煞車 所以我想這個例子描述的是 您希望使用機器學習 或者使用深度學習來 學習一些獨自的元件,而當您應用監督式學習 您應該小心選擇哪一種X,Y對應您想要 的學習,根據 您可以得到的資料做什麼任務 而相對的,談到 純粹端對端深度學習很令人興奮,您 拿一個影像然後 直接輸出到方向盤 但現有的資料 跟我們可以從神經網路學習的型態 這不會是最有希望的方式,或者說 這不是做得最好的團隊的作法 而我想這純粹端對端深度學習方式,實際上 比起這種比較複雜的方式較少希望 根據現有的資料跟我們今天 能夠訓練出的神經網路 所以這是端對端深度學習 它有時可以很好地工作, 但你也必須 注意你在哪裡可以應用端對端的深度學習 最後,謝謝您跟恭喜您 跟我走了這麼遠 如果您完成了上一週 跟這一週的影片 我認為您已經更聰明也更有策略 更能夠做好的優先順序決策 在如何讓您的機器學習專案往前邁進 甚至比起很多機器學習工程師 跟我在矽谷看到的研究人員 所以恭喜您至今所學到的, 我希望您現在能夠看一下 這個禮拜的功課,應該給您 另一種機會來練習這些想法, 確定您能夠掌握他們