[DeeplearningAI筆記]第三章2.9-2.10端到端學習
覺得有用的話,歡迎一起討論相互學習~
2.9 什么是端到端學習-What is End-to-end deeplearning
- 以前有一些數據處理系統或者學習系統,它們需要多個階段的處理. 端到端學習就是忽略中間的過程用單個神經網絡代替它.
Speech recognition example
- 你的目標是輸入X,比如說一段音頻,目標是將其映射到Y,就是這段音頻的聽寫文本.
- 傳統階段上,語音識別需要很多階段的處理,首先你要提取一些特征,一些手工設計的音頻特征.
- 例如使用MFCC-用來從音頻提取一組特定的人工設計的特征.
- 在提取一些低層次的特征之后,你可以使用 機器學習算法 在音頻片段中找到音位,音位是聲音的基本單元.例如Cat這個詞由三個音位構成,算法將Cu-Ah-Tu三個音位提取出來,然后將音位串在一起構成獨立的詞.然后你將詞串起來構成音頻片段的聽寫文本.
- 相比於傳統的流水線形式的算法,端到端的深度學習即是你訓練一個巨大的神經網絡, 輸入就是一段音頻,輸出直接是聽寫文本 .其直接繞過了傳統流水線機器學習系統的很多步驟.
- 但是需要注意的是,你可能需要大量數據才能讓系統表現得更好. 例如當你只有3000h的語音數據時,原先的機器學習系統會表現得更好,但是當你有10000h的語音數據或者是1000000h的語音數據時,端到端方法就開始體現出優勢了. 即小規模數據時流水線方式表現更好,但是當大數據集時,端到端的學習效果會更好.
- 倘若是中等數量級別的數據,我們也可以取中間的方法,繞過特征提取的環節直接輸出特征提取得到的音位.
- 傳統階段上,語音識別需要很多階段的處理,首先你要提取一些特征,一些手工設計的音頻特征.
Face recognition example
- 人臉識別門禁
- 當仔細觀察人臉識別系統中的相機所得相片會發現, 人可以從各種角度靠近門禁系統,所以相機得到的照片人所在的位置不固定,而且面部出現的位置和大小也各有差別 ,例如當人比較靠近相機時,臉會比較大,人臉比較遠離相機時,臉會比較小.
- 所以系統識別時,不是直接將相機所得圖片喂到神經網絡中,而是 一個多部方法,先檢測出相片中的人臉,找到人臉位置.然后放大圖片並裁剪圖片使人臉居中顯示,將此圖片放到網絡中,讓網絡去學習或者估計人臉的身份
- 研究人員發現,這個問題還可以分解為兩個更簡單的步驟:
- 弄清人臉在哪里.
- 看着臉,弄清楚這是誰.
- 對於辨認人臉的步驟,系統已經儲存了公司每個員工的照片信息, 我們要做的是將檢測到的人臉與數據庫中的人臉進行比較 .
- 這個例子告訴我們,即使你沒有足夠的數據來進行端到端學習,但是有足夠的數據來進行子任務1和子任務2.將其拆分為兩個步驟更好~.
More example
Machine translation
- 傳統上,機器翻譯系統也有一個很復雜的流水線:英文--得到文本--文本分析--提取特征-...-中文
- 現在英文到中文的翻譯已經有很多數據對,所以目前端到端的深度學習在機器翻譯領域非常好用.
Estimating child's age
- 通過觀察一個孩子手部的x光照片,估計一個孩子的年齡.
- 傳統上,拍攝x光--分割出每一塊骨頭--分辨出骨頭所在部位--查表看兒童對應段骨頭的平均長度--估計兒童的年齡.
- 但是這個例子還不能使用端到端的方式去訓練這個任務,因為我們沒法獲得足夠多的數據去訓練這個任務.
2.10 Whether to use end-to-end learning是否要使用端到端學習
pros and cons 優點和缺點
Pros
- 讓數據自己說話.
- 如果你有足夠多的(x,y)數據,不管從x到y最合適的函數映射是什么,如果你訓練一個足夠大的神經網絡,希望這個神經網絡能夠自己搞清楚.相比於傳統的機器學習方法,更能夠捕獲數據中的任何統計信息,而不是引入人類的成見.
- 例如舉個例子:在語音識別領域,早期的識別系統有音位的概念--就是基本的聲音識別單元.NG認為音位是人類語言學家生造出來的,NG認為音位實際是語音學家的幻想.用音位描述也許可行,但是 不要強迫你的學習算法以音位為單位進行思考,如果你讓你的學習算法學習它想學習的任意的表示方式而不是使用你的學習算法使用音位作為表示方式,那么整體表現可能會更好.
- 所需手工設計的組件更少
- 能簡化你的設計工作流程,你不需要花太多時間去手工設計功能,手工設計這些中間表示方式.
Cons
- 需要大量的數據
- 它排除了可能有用的手工設計組件
- 機器學習研究人員一般都比較鄙視手工設計的東西,但是如果你的數據量不夠的話.你的學習算法沒辦法從很小的訓練集數據中獲得洞察力,所以手工設計的組件在這種情況下是把人類知識直接注入算法的途徑.這有時候並不是一件壞事,有時候非常有效.
- NG認為機器學習系統有兩個重要的知識獲取來源,一個是數據另一個是人工設計的東西,可能是組件,功能或者其他的東西.
- 當你有成噸的數據時,手工設計的東西就不太重要了,但是你沒有太多的數據時,構造一個精心設計的系統實際上可以將人類對這個問題的很多認識直接注入到問題里.
Key question
- 是否使用端到端的算法取決於問題:你是否有大量的的數據能夠使系統直接學到從x到y足夠復雜的函數.