簡單講就是,Input--->系統(這裏指神經網絡)--->Output(直接給出輸入,NN神經網絡就給出結果,一氣喝成!!!)html
借用一段對話:(http://dy.163.com/v2/article/detail/C3J6F2NJ0511AQHO.html)算法
機器之心:那你如今最主要的興趣是在視覺和在語言處理這方面的這個方向嗎?安全
田淵棟:這些方向都會有涉及。但如今時代不一樣了,不該該把本身限制在視覺或者某個特定方向。網絡
機器之心:不是一個專門的應用。框架
田淵棟:對,由於感受上天然語言處理、圖像、語音,這些基本上都是應用了。因此說若是必要的話,其實能夠在這個中間進行切換,或者作一些交叉的方向。之前作這三個方向,可能須要大量的領域知識,特別是作天然語言處理,要學之前語言學的文獻。要作分詞,好比說每一個詞給一些詞性。要作一些語法的分析、語素的分析,有不少不少的步驟。但如今的趨勢是從頭至尾都讓機器學。機器學習
機器之心:就是他們說的 end-to-end。函數
田淵棟:是的,end-to-end 端對端的學習。好比說天然語言這一塊,並無比之前的效果好太多,但整個流程變得很簡單方便,未來進步的速度可能就會變快。好比機器翻譯裏面,你把一個句子,直接經過神經網絡翻譯成另一個語言的句子,這樣就比之前快。之前可能要分詞呀,詞性標註呀,對每一個詞找到另一個語言對應的詞或者詞組,找到以後再從新排列一下,最後才產生一個句子。要經過幾個步驟,可是如今在概念上,只要一步就算出來。【注:如今基於神經網絡的翻譯系統確實比之前好不少了 】。性能
爲何會出現端對端呢?我以爲主要是由於神經網絡這個模型的優勢。神經網絡模型是個很是靈活可擴充的模型,隨便連一下,而後作後向傳遞就能夠了。你們一開始沒有意識到它的厲害,以爲作這個系統得要分幾步吧,神經網絡只是其中一步,前面和後面仍是經過傳統方式來作比較安全。後來你們就慢慢意識到,爲何不用神經網絡把整個系統打通?那樣的話,又省時效果也會更好。天然而然,你們都會思考端對端的思路。我以爲如今基本上端對端的效果,主要體如今整個迭代的速度上,從設計模型到訓練,到看到結果,到修改模型這樣一個循環的速度會很快,效果也一般會變得更好。人優化參數的時候,可能半小時優化一次,看看結果如何;機器優化參數,可能一秒就優化幾百次。因此這個時間的改進是數量級上的改進。學習
數據集的得到,如今主要是在網上花錢,人工標註。好比說一張圖幾塊錢的,而後讓人去作。就發動羣衆的力量嘛,看你們有沒有空。有空閒着無聊了,就標註兩張。這樣把力量聚集起來。優化
來源:知乎
著做權歸做者全部。
討論:
張旭--------------------------------->
端到端指的是輸入是原始數據,輸出是最後的結果,原來輸入端不是直接的原始數據,而是在原始數據中提取的特徵,這一點在圖像問題上尤其突出,由於圖像像素數太多,數據維度高,會產生維度災難,因此原來一個思路是手工提取圖像的一些關鍵特徵,這實際就是就一個降維的過程。
那麼問題來了,特徵怎麼提?
特徵提取的好壞異常關鍵,甚至比學習算法還重要,舉個例子,對一系列人的數據分類,分類結果是性別,若是你提取的特徵是頭髮的顏色,不管分類算法如何,分類效果都不會好,若是你提取的特徵是頭髮的長短,這個特徵就會好不少,可是仍是會有錯誤,若是你提取了一個超強特徵,好比染色體的數據,那你的分類基本就不會錯了。
這就意味着,特徵須要足夠的經驗去設計,這在數據量愈來愈大的狀況下也愈來愈困難。
因而就出現了端到端網絡,特徵能夠本身去學習,因此特徵提取這一步也就融入到算法當中,不須要人來干預了。
YJango---------------------------->
經典機器學習方式是以人類的先驗知識將raw數據預處理成feature,而後對feature進行分類。分類結果十分取決於feature的好壞。因此過去的機器學習專家將大部分時間花費在設計feature上。那時的機器學習有個更合適的名字叫feature engineering 。
後來人們發現,利用神經網絡,讓網絡本身學習如何抓取feature效果更佳。因而興起了representation learning。這種方式對數據的擬合更加靈活。
網絡進一步加深,多層次概念的representation learning將識別率達到了另外一個新高度。因而你聽到了是個搞機器學習的人都知道的名字:deep learning。實指多層次的特徵提取器與識別器統一訓練和預測的網絡。
end to end的好處:經過縮減人工預處理和後續處理,儘量使模型從原始輸入到最終輸出,給模型更多能夠根據數據自動調節的空間,增長模型的總體契合度。
拿語音識別爲具體實例。廣泛方法是將語音信號轉成頻域信號,並能夠進一步加工成符合人耳特色的MFCC進行編碼(encode)。也能夠選擇Convolutional layers對頻譜圖進行特徵抓取。這樣可在encode的部分更接近end to end 中的第一個end。
但識別出的結果並不能夠告訴咱們這段語音究竟是什麼。DNN-HMM混合模型還須要將DNN識別出的結果經過HMM來解碼(decode)。而RNN-CTC就將HMM的對齊工做交給了網絡的output layer來實現。在decode的部分更接近end to end 中的第二個end。
王贇---------------------------->
個人理解跟@YJango 不太同樣。我就在語音識別的範圍內說說個人理解吧。
傳統的語音識別系統,是由許多個模塊組成的,包括聲學模型、發音詞典、語言模型。其中聲學模型和語言模型是須要訓練的。這些模塊的訓練通常都是獨立進行的,各有各的目標函數,好比聲學模型的訓練目標是最大化訓練語音的機率,語言模型的訓練目標是最小化 perplexity。因爲各個模塊在訓練時不能互相取長補短,訓練的目標函數又與系統總體的性能指標(通常是詞錯誤率 WER)有誤差,這樣訓練出的網絡每每達不到最優性能。
針對這個問題,通常有兩種解決方案:
「端到端訓練」和「端到端模型」的區分,在 [2] 的 introduction 部分有比較好的論述。
與 @YJango 的答案不一樣,我以爲「輸入是語音波形(raw waveform)」並非端到端模型的本質特徵,端到端模型的輸入也能夠是特徵序列(MFCC 等)。端到端模型的本質特徵是把聲學模型、發音詞典、語言模型這些傳統模塊融合在一塊兒。
參考文獻:
[1] Yajie Miao, Mohammad Gowayyed, and Florian Metze, "EESEN: End-to-End Speech Recognition using Deep RNN Models and WFST-based Decoding," in Proc. ASRU 2015.
[2] William Chan, et al. "Listen, attend and spell: A neural network for large vocabulary conversational speech recognition," in Proc. ICASSP 2016.
陳永志-------------->
我從目標檢測角度來講說我對end-to-end的理解。
非end-to-end方法:
目前目標檢測領域,效果最好,影響力最大的仍是RCNN那一套框架,這種方法須要先在圖像中提取可能含有目標的候選框(region proposal), 而後將這些候選框輸入到CNN模型,讓CNN判斷候選框中是否真的有目標,以及目標的類別是什麼。在咱們看到的結果中,每每是相似與下圖這種,在整幅圖中用矩形框標記目標的位置和大小,而且告訴咱們框中的物體是什麼。
這種標記的過程,實際上是有兩部分組成,一是目標所在位置及大小,二是目標的類別。在整個算法中,目標位置和大小實際上是包含在region proposal的過程裏,而類別的斷定則是在CNN中來斷定的。這種標記的過程,實際上是有兩部分組成,一是目標所在位置及大小,二是目標的類別。在整個算法中,目標位置和大小實際上是包含在region proposal的過程裏,而類別的斷定則是在CNN中來斷定的。
end-to-end方法:
end-to-end方法的典型表明就是有名的yolo。前面的方法中,CNN本質的做用仍是用來分類,定位的功能其並無作到。而yolo這種方法就是隻經過CNN網絡,就可以實現目標的定位和識別。也就是原始圖像輸入到CNN網絡中,直接輸出圖像中全部目標的位置和目標的類別。這種方法就是end-to-end(端對端)的方法,一端輸入個人原始圖像,一端輸出我想獲得的結果。只關心輸入和輸出,中間的步驟所有都無論。
楊楠---------------------->
end-end在不一樣應用場景下有不一樣的具體詮釋,對於視覺領域而言,end-end一詞多用於基於視覺的機器控制方面,具體表現是,神經網絡的輸入爲原始圖片,神經網絡的輸出爲(能夠直接控制機器的)控制指令,如:
1. Nvidia的基於CNNs的end-end自動駕駛,輸入圖片,直接輸出steering angle。從視頻來看效果拔羣,但其實這個系統目前只能作簡單的follow lane,與真正的自動駕駛差距較大。亮點是證明了end-end在自動駕駛領域的可行性,而且對於數據集進行了augmentation。連接:https://devblogs.nvidia.com/parallelforall/deep-learning-self-driving-cars/
2. Google的paper: Learning Hand-Eye Coordination for Robotic Grasping with Deep Learning and Large-Scale Data Collection,也能夠算是end-end學習:輸入圖片,輸出控制機械手移動的指令來抓取物品。這篇論文很贊,推薦:https://arxiv.org/pdf/1603.02199v4.pdf
3. DeepMind神做Human-level control through deep reinforcement learning,其實也能夠歸爲end-end,深度加強學習開山之做,值得學習:http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html
4. Princeton大學有個Deep Driving項目,介於end-end和傳統的model based的自動駕駛之間,輸入爲圖片,輸出一些有用的affordance(實在不知道這詞怎麼翻譯合適…)例如車身姿態、與前車距離、距路邊距離等,而後利用這些數據經過公式計算所需的具體駕駛指令如加速、剎車、轉向等。連接:http://deepdriving.cs.princeton.edu/
總之,end-end不是什麼新東西,也不是什麼神奇的東西,僅僅是直接輸入原始數據,直接輸出最終目標的一種思想。
胖子不胖------------------------>
其實就是joint learning.
end-to-end 的本質是你要解決的問題是多階段的或多步的(跟所謂的raw feature沒啥關係)。若是分階段學習的話,第一階段的最優解不能保證第二階段的問題達到最優。end-to-end把他們堆在一塊兒來優化,確保最後階段的解達到最優。
想飛的石頭-------------------------->
由於多層神經網絡被證實可以耦合任意非線性函數,經過一些配置能讓網絡去作之前須要人工參與的特徵設計這些工做,而後配置合適的功能如classifier,regression,而如今神經網絡能夠經過配置layers的參數達到這些功能,整個輸入到最終輸出無需太多人工設置,從raw data 到最終輸出指標。