一個最激動人心的最新發展 在深度學習中
是端對端深度學習的興起
所以什麼是端對端學習？
簡單的說，有一些資料處理系統
或者學習系統需要多重階段的處理
而端對端深度學習做的是
它可以拿所有的階段
取代它通常只要一個 單一的神經網路
讓我們看幾個例子
拿語音辨識當例子
您的目標是拿輸入 x 像是語音片段
將它映射到輸出 Y
也就是對照語音的腳本
傳統上，語音辨識需要 很多階段的處理
首先，您會提取一些特徵
一些手工設計的語音特徵
如果您聽過 MFCC
那是一種演算法來提取一些 手工設計的語音特徵的集合
而提取了一些低階的特徵後
您或許會用上一些 機器學習的演算法
來找出語音片段中的音素
所以音素是聲音的基本單位
舉個例子，"cat" 是由三個聲音組成
也就是 Cu Ah 跟 Tu 所以可以提取這些
然後您把音素串在一起 變成單字
然後您將單字串在一起 變成語音片段的腳本
相對於這種許多階段的管線
端對端深度學習做的是
您可以訓練大的神經網路， 只要輸入語音片段
它會直接輸出對應的腳本
一個有趣的社會效應在人工智慧是
當端對端深度學習開始作用的很好
有一些研究員，舉例來說
花了很多年在設計單一的管線步驟
所以有一些研究員在不同的學科， 不只是在語音辨識上
或許在電腦視覺上，或者其他領域
已經花了很多時間
寫了很多論文，或許甚至大半輩子
來手工設計這些特徵， 或者其它管線中的一部分
而當端對端深度學習 只是拿
最終的訓練集，學習著 如何從 x 直接映射到 y
真的繞過了 很多這些中間步驟
對於一些學科而言，要接受
這種另一種方式的 建立人工智慧的方式是很大的挑戰
因為這真的淘汰了
很多年的研究 在一些中間的元件
實際上，端對端深度學習的挑戰是
在這個系統作用得很好之前 您需要很多的資料
舉個例子，如果您訓練了 3,000
小時的資料 來建立語音辨識系統
那在傳統的管線
全傳統式的管線方式作用的很好
只是當您有很大的資料集
假設 10,000 小時的資料
或許到 100,000 小時的資料
那端對端的方式 開始作用得很好
所以當您有小的資料集
越傳統的管線方法 實際上作用的也很好
甚至於更好
而您需要大量的資料 讓端對端的方式真正發光
而如果您有中等量的資料
而也有所謂的中等方式，或許您的輸入語音
繞過一些特徵， 神經網路只學習如何輸出音素
然後再接一些階段
所以會近一步 邁向端對端學習
但並不全然是
所以這是一張臉部辨識的旋轉門，由
百度研究員林元慶建立的
這是一個攝影機，它會看著 一個人走進這個旋轉門
如果它認識這個人
這個旋轉門會 自動的讓這個人進入
所以，與其使用刷一個 RFID 的卡來進入這個設施
這逐漸在很多
中國大陸的辦公室使用， 希望越來越多的國家來使用
您可以接近旋轉門，如果它認識您的臉孔
它就會讓您進入， 不需要帶 RFID 的卡片
所以，您要怎樣建立這種系統？
您可以做的一件事是 只要看攝影機捕捉到的影像
是吧，我想我畫的不好
但或許這是攝影機的影像
而您知道，當有人接近這個旋轉門
所以這或許是您攝影機 捕捉的影像為影像 X
一件您可以做的事是學習一個函數
直接從影像 X 對應到人員 Ｙ
實際上，這並不是最佳的方式
一個問題是
當人們接近旋轉門時， 可能從不同的方向接近
所以可能在綠色的位置
可能在藍色的位置
有時候比較靠近攝影機
所以看起來影像比較大
有時候太接近攝影機
所以臉部看起來較大
所以它實際上 在建立這個旋轉門時
不僅僅拿原始的影像
餵給神經網路 試著找出一個人的身份
取而代之，今天最佳的方式是
似乎是多步驟的方式，第一
您跑一個軟體來偵測人臉
所以第一個偵測器來找出人臉
偵測到了人臉以後
您放大那個部分
那個影像，然後裁剪
所以那個人臉放在中央
然後這個影像，我用紅色畫的部分
這個會餵進神經網路
然後試著學習
或者估計這個人的身份
而研究人員發現
與其試著一個步驟 學習所有的東西
將這個問題分解成兩個步驟
首先先找出人臉
再來在看人臉 來找出他是誰
第二種方式讓學習演算法，或者說兩個學習演算法
來解決兩個簡單化的任務， 結果的表現更好
順便說一下，如果您想知道
第二個步驟如何作用， 我已經簡化這個討論
順便說一下，如果您想知道 第二個步驟如何作用
我已經簡化了一點點描述
第二個步驟實際上是訓練
就像您訓練您的網路般
拿著這二張影像
您的網路的工作是
拿這二張影像告訴您， 是否這兩個人是同一個人
所以如果您有 10,000 個員工在檔案裡
您可以拿紅色這個影像
很快地比較或許所有的
10,000 個員工的檔案，試著找出是否
這個紅色的影像，的確是您 10,000 個員工之一
您應該讓他進入這個設施， 應該讓他進入辦公室
這是一個旋轉門，給員工可以進出
這個地方， 為什麼兩個步驟的方式比較好？
實際上有兩個原因
其一是這兩個單獨的問題 個別解決比較簡單
其二，您有很多的資料對於個別這兩個任務
特別是，有很多的資料讓您可以偵測人臉
對於任務一
這個任務是看影像來找出
那裡是人臉的部分
所以有很多的資料
有很多的標籤資料 Ｘ
逗號 Y, 而 X 是影像， Ｙ是人臉的部分
所以您可以建立一個 神經網路來作好這個任務
然後分別的，有很多的資料給任務二
在今天，領先的公司假設
有上億張員工人臉照片
所以給予ㄧ個裁剪的影像
像是在這裡的紅色影像
今天領先的人臉辨識團隊
已經有上億張影像他們可以用來
使用看著這兩張照片，試著去
找出身份，或者找出是否是同一個人
所以也是有很多的資料在任務二
但是，相對的，如果您試著一次學習所有的事情
在 X, Y 樣子的資料會少很多
X 是從旋轉門得到的影像
而 Ｙ 是人的身份
因為您並沒有足夠的資料 來解決端對端的學習問題
但您的確有足夠的資料 來解決子問題一跟二
將其分解為兩個子問題，導致
比純粹端對端深度學習方式 更好的表現
雖然如果對於端對端方式 您有足夠的資料
或許端對端方式會比較好
但在今日，這並不是最佳的方式
讓我們再看一些例子
看一下機器翻譯
傳統上，機器翻譯系統 也是有很長，很複雜的管線
首先您拿英文
轉成文字，做文字分析
基本上，提取一堆文字的特徵，等等
經過許多許多的步驟， 您最後會
有一份從英文文字翻譯成法文
因為，對於機器翻譯
您有很多的 英文，法文成對的語句
端對端深度學習在 機器翻譯做得很好
而那是因為，在今天
獲取大量的 X-Y 資料集是可行的，
也就是英文句子跟相對的法文翻譯
在這個例子中
端對端深度學習 作用得很好
最後一個例子，假設您
想要看著一張小孩子的手 的 Ｘ光片
來預估小孩子的年紀
當我第一次聽到這個問題
我覺得這是很酷的 犯罪現場調查任務
可能您發現了一個 悲慘的小孩子的骨架
您希望知道 這個小孩子的資訊
實際上，這個問題的典型應用
從Ｘ光片預估小孩子的年紀
比我想像中的犯罪現場調查 要非戲劇化
實際上兒科醫生使用
這樣來預估是否 一個小孩生長發育正不正常
但是如果用非端對端方式來處理
會是您先找到圖像，然後分割或者辨識骨架
也就是找出那邊是那個骨頭部分
那邊是那個骨頭部分
那邊是那個骨頭部分在，等等
知道了不同骨頭的長度
您可以回去查閱表格來對照一下 平均骨頭長度
在小孩子的手上， 然後來預估小孩子的年紀
這種方式實際上 作用得很好
相對的，如果您直接從影像來判斷小孩子的年紀
您會需要很多的資料可以直接這樣做，據我所知
這種方式在今天還不可行
只因沒有足夠的資料 來做端對端的訓練方式
而相對，您可以想像 將這個分解為兩個步驟
第一步，是相對簡單的問題
或許您不需要太多的資料
或許您不需要太多的X光片 來分離出骨架來
而第二個任務，收集一些兒童手的資料
您也可以得到相當不錯的預估 而不需要太多資料
所以這種多步驟的方式 似乎比較有希望
或許比起端對端方式 更有希望
至少直到您可以獲取更多的資料 來做端對端方式之前
所以端對端深度學習可行
它真的可行，且它可以簡化系統，而不需要
您建立很多手工設計 單獨的元件
但它不是萬能藥
它並不總是可行
在下一個影片中
我想分享您更系統化的方式描述，什麼時候您應該
跟什麼時候不該使用端對端深度學習，
跟如何把這些複雜的機器學習 系統拼湊起來