如何理解深度學習領域中的端到端 (end to end)
源自:(CK小世界)[https://ckblogs.cn]
前情提要
我已經有一年多沒有更新自己的部落格了,說來實在可惜,原本讓我引以為傲的部落格網站成為了久久不變的一堆程式碼,甚至讓我自己都不再敢點了進來。這期間,不斷有更新部落格的想法,但幾個問題一直困擾著我:
- 更新什麼主題?這個問題還好回答,有太多我在學習或者我尚不知道需要去學習的知識理論,有太多我得到的感觸和收穫。這段時間,我經歷了很多,無論是成績還是挫折,我覺得只要我想,沒有寫不出來的。關鍵在於第二個問題:
- 更新什麼內容?現在部落格網站如 部落格園、CSDN 、知乎乃至國外的部落格網站很多,當我想寫一點東西,或者想學一點東西的時候,我發現,部落格上已經總結的很到位了,寫的也很出色。計算機屆有一句話,叫做 “不要去造重複的輪子”,我擔心我所寫的東西並沒有創新的觀點便不值得寫。
如此以來,總是拖著,就久久沒有更新。
那為何突然又想寫了呢,而且是這個主題 如何理解深度學習領域中的端到端(end to end)
,我的思維歷程還是比較豐富的:
-
不斷學習,不斷進步:最近在北京參加實習,接觸到了太多前沿的技術,大語言模型日新月異,幾天之內就有新的成果產出,只有不斷學習和記錄,才能跟上前沿的步伐。
-
腳踏實地,虛心領會: 為了緊跟前沿步伐,在深度學習領域,我有太多一知半解的概念和理解不到位的點,然而我卻常常不認為很重要,我覺得這並沒有做到自己對自己最基本的要求:“虛心”。就比如這個概念,
端到端
,其實我在很多論文、書籍、部落格中看到了這個概念,但就是一晃而過,並沒有太多的停留,我覺得這是不合適的,工科學習,需要有腳踏實地的態度,所以我專門寫一篇對這個概念新的理解,以此開啟我部落格撰寫的新方向。 -
膜拜大神,不忘初心: 最近在研究 LLM 的外推技術的時候,不經意認識到了蘇劍林,蘇神,他提出了Transformer 中一種新的位置編碼 Rope ,是中國人對大模型領域最大的貢獻之一,在繼續瞭解的過程中,闖入了蘇神的部落格科學空間,發現他從 16 歲,就開始搭建自己的部落格網站,目前已經有幾千篇原創精緻博文涉及數學、天文、計算機、生活、科學等各個領域。讓我實在膜拜。想來自己搭建部落格網站的初心,不正是想成為像他這樣的人嗎?
蘇神部落格網站“科學空間”首頁
前情提要有點多,讓我們直接進入這個概念的理解,端到端 !
什麼是端到端
端到端的含義涉及到不同的領域,比如,在電腦科學和資訊科技領域中,端到端的概念指的是一種通訊方式,資料從傳送方直接傳輸到接受方,而不需要中間環境對資料內容進行解析和處理,在通訊領域內,端到端的模式強調的是資料傳輸過程中的直接性和完整性。
類似的,這個概念引申到深度學習和人工智慧領域,端到端的概念表示 模型可以直接利用輸入資料而不需要其他處理 。因此,我們可以看到,端到端或者非端到端,往往是形容一個模型對輸入資料的要求。如果模型可以直接透過輸入原始資料來得到輸出,那麼我們就說這個模型是端到端的,(可以理解為從輸入端直接到輸出端的)。
那與之相反的,傳統機器學習方法,往往不能直接利用原始資料,而需要提前對原始資料進行一定的處理,比如降維、特徵提取等方法,那麼這種方法就不能稱之為端到端的學習方法。
例如,我們可以用下面的兩張圖直觀表示端到端和非端到端:
端到端模型直接將原始資料作為輸出返回輸出結果,非端到端模型需要使用經過資料處理後的處理資料作為模型輸入
這兩張圖都是用 markdown 的 mermaid 畫的,簡單方便,以防止某些部落格網站不支援 markdown 的這個語法,下面以圖形方式呈現:
非端到端模型與端到端模型示例
為了更好的理解這兩種模型,我們需要舉個例子,在舉例之前,我首先想先介紹下,有哪些資料處理的方法,也就是對於非端到端模型需要去做的而端到端模型不需要做的步驟,在這個基礎上,可能更好的理解這個概念:
資料處理是機器學習和資料分析中的一個關鍵步驟,尤其是在非端到端模型中,這些步驟對於提高模型效能至關重要。以下是一些常見的資料處理方法,這些方法在非端到端模型中尤為重要,而在端到端模型中可能不那麼必要或完全不需要:
- 特徵工程:包括特徵選擇、特徵提取和特徵構造。這些步驟旨在從原始資料中識別、選擇和轉換出對模型預測最有用的資訊。
- 資料清洗:移除或填補缺失值、修正錯誤或不一致的資料、處理異常值等,以確保資料的質量和準確性。
- 資料轉換:將非數值型資料轉換為數值型資料(如透過獨熱編碼或標籤編碼),或者將連續資料離散化。
- 歸一化/標準化:調整資料的尺度,使其落在特定的範圍內(如[0, 1]或均值為0,標準差為1),以便於模型更好地學習。
- 降維:透過PCA、LDA等方法減少資料的維度,以減少計算複雜度和避免過擬合。
- 去相關:減少特徵之間的相關性,避免多重共線性問題,提高模型的穩定性。
- 資料平衡:在處理不平衡資料集時,透過過取樣少數類別或欠取樣多數類別來平衡各類別的樣本數量。
在端到端模型中,如深度學習網路(例如CNN、RNN等),很多這些預處理步驟可以被簡化或完全省略,因為這些模型能夠自動從原始資料中學習到有用的特徵表示。端到端模型的設計目標是直接從輸入資料到輸出結果,減少人為干預和預處理的需求。然而,即使在端到端模型中,適當的資料預處理仍然可能有助於提高模型的效能和訓練效率。
典型的端到端模型 —— CNN
CNN,卷積神經網路,算是我進入深度學習領域接觸到的第一個應用級別的神經網路,他以及眾多神經網路模型的端到端體現在於可以直接向模型輸入原始影像,而不需要如提取特徵這樣的處理,根本原因在於,CNN 一連串的隱藏層在不斷訓練和學習的過程中,已經學會了自動識別輸入影像的特徵,這也是深度學習神經網路裡最強大的能力之一,就是抽象輸入原始資料特徵。
典型的非端到端模型——SVM
支援向量機(SVM)是一種監督學習方法,主要用於分類和迴歸任務。SVM 的過程主要包括資料預處理、選擇核函式、訓練 SVM 模型、模型評估等方面。SVM使用核技巧來將資料對映到高維特徵空間,以便能夠找到一個超平面來分隔資料。選擇合適的核函式(如線性核、多項式核、徑向基函式(RBF)核等)是很重要的。而核函式的主要功能就是將原始資料轉換為一個新的空間,使得資料的分佈變得更加線性可分,從而簡化 SVM 的最佳化問題。因此,SVM 不能直接用原始資料,需要資料處理過程,因此,他不是端到端的模型。
其餘案例:
- Nvidia的基於CNNs的end-end自動駕駛,輸入圖片,直接輸出steering angle。從影片來看效果拔群,但其實這個系統目前只能做簡單的follow lane,與真正的自動駕駛差距較大。亮點是證實了end-end在自動駕駛領域的可行性,並且對於資料集進行了augmentation。連結:https://devblogs.nvidia.com/parallelforall/deep-learning-self-driving-cars/
- 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
- DeepMind神作Human-level control through deep reinforcement learning,其實也可以歸為end-end,深度增強學習開山之作,值得學習:http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html
- Princeton大學有個Deep Driving專案,介於end-end和傳統的model based的自動駕駛之間,輸入為圖片,輸出一些有用的affordance(實在不知道這詞怎麼翻譯合適…)例如車身姿態、與前車距離、距路邊距離等,然後利用這些資料透過公式計算所需的具體駕駛指令如加速、剎車、轉向等。連結:http://deepdriving.cs.princeton.edu/
參考:https://geek.csdn.net/65d6b0b3b8e5f01e1e4660c8.html
端到端學習的意義
端到端學習(End-to-End Learning)的意義在於它簡化了機器學習模型的設計和訓練過程,同時在許多情況下能夠提高模型的效能和泛化能力。以下是端到端學習的幾個關鍵意義:
- 簡化流程:端到端學習模型直接從原始輸入資料到最終輸出進行學習,無需複雜的特徵工程或預處理步驟。這大大簡化了模型的開發流程,減少了人工干預的需求。
- 自動特徵學習:端到端模型能夠自動發現並學習資料中的關鍵特徵,這些特徵對於完成特定任務(如分類、迴歸、序列預測等)是至關重要的。這種自動特徵學習的能力減少了對領域專家知識的依賴。
- 提高效能:在許多應用中,端到端學習模型已經證明能夠達到或超過傳統機器學習模型的效能。特別是在影像識別、自然語言處理和語音識別等領域,深度學習模型(一種端到端學習的方法)已經取得了突破性的成果。
- 泛化能力:端到端學習模型通常具有較好的泛化能力,因為它們能夠從大量資料中學習到複雜的模式和結構,而不是依賴於有限的、人為設計的特徵。
- 處理複雜資料:端到端學習模型特別適合處理高維和複雜的資料型別,如影像、影片和音訊資料。這些模型能夠捕捉到資料中的細微差別和深層次的關係。
- 可擴充套件性:端到端學習模型可以很好地擴充套件到大規模資料集和複雜任務,這在大資料時代尤為重要。