end-to-end 神經網絡

目錄

 

什麼是end-to-end

廣義的理解

狹義理解

個人觀點


什麼是end-to-end

end-to-end(端到端)是一個新的名詞,那麼什麼是端到端呢?

從字面意思理解就是:raw data 丟進去,期望的輸出吐出來,拿去訓練就能得到好看的結果。就像是一個黑盒,直接把原始數據輸入神經網絡的一端,從另一端得出我們需要的結果。

廣義的理解

端到端指的是輸入是原始數據,輸出是最後的結果,原來輸入端不是直接的原始數據,而是在原始數據中提取的特徵,這一點在圖像問題上尤爲突出,因爲圖像像素數太多,數據維度高,會產生維度災難,所以原來一個思路是手工提取圖像的一些關鍵特徵,這實際就是就一個降維的過程。
那麼問題來了,特徵怎麼提?
特徵提取的好壞異常關鍵,甚至比學習算法還重要,舉個例子,對一系列人的數據分類,分類結果是性別,如果你提取的特徵是頭髮的顏色,無論分類算法如何,分類效果都不會好,如果你提取的特徵是頭髮的長短,這個特徵就會好很多,但是還是會有錯誤,如果你提取了一個超強特徵,比如染色體的數據,那你的分類基本就不會錯了。
這就意味着,特徵需要足夠的經驗去設計,這在數據量越來越大的情況下也越來越困難。
於是就出現了端到端網絡,特徵可以自己去學習,所以特徵提取這一步也就融入到算法當中,不需要人來干預了。

經典機器學習方式是以人類的先驗知識將raw數據預處理成feature,然後對feature進行分類。

分類結果是否取決於特徵的好壞。所以過去的機器學習專家將大部分時間花在設計feature上,那是的機器學習有個更合適的名字

叫feature engineering.

後來人們發現,利用神經網絡,讓網絡自己學習如何抓取feature效果更佳。於是興起了represntation learning,這種方式對數據的擬合更佳靈活。

網絡進一步加深,多層次概念的representation learning將識別率達到了另一個新高度,於是你聽到了高機器學習的人都知道的名字:deep learning.實質多層次的特徵提取器與識別器統一訓練和預測的網絡。

end-to-end的好處:通過縮減人工預處理和後續處理,儘可能使模型從原始輸入到最終輸出,使模型更多客源根據數據自歐東調節的空間,增加模型的整體契合度。

上述觀點是從」是否需要人共提取raw feature」這個維度來理解end-to-end(端到端)的,有人工干預就是非端到端,反義,就是端到端。

狹義理解

個人認爲上述觀點不是非常準確的的,斯認爲end-to-end與raw feature沒有邏輯關係。因此,本人把上述的理解稱爲廣義上的理解。個人把自己對end-to-end的理解稱爲狹義上的理解。

斯是研究視覺的,下面從目標檢測的角度,來談談自己對end-to-end的理解

非end-to-end方法:
目前目標檢測領域,效果最好,影響力最大的還是RCNN那一套框架,這種方法需要先在圖像中提取可能含有目標的候選框(region proposal), 然後將這些候選框輸入到CNN模型,讓CNN判斷候選框中是否真的有目標,以及目標的類別是什麼。在我們看到的結果中,往往是類似與下圖這種,在整幅圖中用矩形框標記目標的位置和大小,並且告訴我們框中的物體是什麼。

 這種標記的過程,其實是有兩部分組成,一是目標所在位置及大小,二是目標的類別。在整個算法中,目標位置和大小其實是包含在region proposal的過程裏,而類別的判定則是在CNN中來判定的。目標位置檢測與類別判斷是分兩個階段進行的,而非結合在一起進行的,與上述所謂的(raw feature)沒有任何關係。(個人觀點)

end-to-end方法:
end-to-end方法的典型代表就是有名的yolo。前面的方法中,CNN本質的作用還是用來分類,定位的功能其並沒有做到。而yolo這種方法就是隻通過CNN網絡,就能夠實現目標的定位和識別。也就是原始圖像輸入到CNN網絡中,直接輸出圖像中所有目標的位置和目標的類別。這種方法就是end-to-end(端對端)的方法,一端輸入我的原始圖像,一端輸出我想得到的結果。只關心輸入和輸出,中間的步驟全部都不管。

個人觀點

ent-to-to的本質是你要解決的問題是多階段的或多步的(跟raw feature沒啥關係)。如果分階段學習的話,第一階段的最優解不能保證第二階段的問題達到最優。端到端把他們堆在一起來進行優化,確保最後階段的解達到最優。