YOLOR: 基於多工的統一網路
You Only Learn One Representation: 對於多工的統一網路
目錄
論文地址:https://arxiv.org/abs/2105.04206
專案地址:https://github.com/WongKinYiu/yolor
摘要
人們通過視覺、聽覺、觸覺以及過去的經驗來“理解”世界。人類的經驗可以通過正常的學習(我們稱之為顯性知識)或潛意識(我們稱之為隱性知識)來學習。這些通過正常學習或潛意識學習到的經驗將被編碼並儲存在大腦中。利用這些豐富的經驗作為一個巨大的資料庫,人類可以有效地處理資料,即使它們是事先看不見的。本文提出了一個統一網路,將內隱知識和外顯知識編碼在一起,就像人腦可以從正常學習和潛意識學習中學習知識一樣。統一網路可以生成一個統一的表示,同時服務於各種任務。我們可以在卷積神經網路中執行核空間對齊、預測精化和多工學習。結果表明,將內隱知識引入到神經網路中,有利於所有任務的執行。我們進一步分析了從所提出的統一網路中學習到的隱式表示,它顯示出很強的捕捉不同任務物理意義的能力。
1、介紹
如圖1所示,人類可以從不同的角度分析同一段資料。然而,經過訓練的卷積神經網路(CNN)模型通常只能實現一個目標。一般來說,從訓練過的CNN中提取出來的特徵通常對其他型別的問題適應性較差。造成上述問題的主要原因是我們只從神經元中提取特徵,而沒有利用CNN中豐富的內隱知識。在真實人腦執行時,上述隱性知識可以有效地輔助大腦完成各種任務。
隱性知識是指在潛意識中學習到的知識。然而,對於內隱學習如何運作以及如何獲得隱性知識,目前還沒有一個系統的定義。在神經網路的一般定義中,從淺層獲得的特徵通常稱為顯式知識,從深層獲得的特徵稱為隱式知識。本文將與觀察直接對應的知識稱為顯性知識。對於模型中隱含的與觀察無關的知識,我們稱之為隱性知識。
我們提出了一個統一的網路來整合隱式知識和顯式知識,使學習模型包含一個通用的表示,這個通用的表示使得子表示適合於各種任務。圖2(c)說明了擬議的統一網路體系結構。
構建上述統一網路的方法是將壓縮感知和深度學習結合起來,主要的理論基礎可以在我們之前的工作中找到[16,17,18]。在[16]中,我們證明了用擴充套件字典重構殘差的有效性。在[17,18]中,我們使用稀疏編碼來重建CNN的特徵圖,使其更具魯棒性。這項工作的貢獻總結如下:
- 我們提出了一個能夠完成各種任務的統一網路,它通過整合隱式知識和顯式知識來學習一個通用表示,通過這個通用表示可以完成各種任務。所提出的網路有效地提高了模型的效能,只需很小的額外成本(不到引數和計算量的1萬)。
- 將kernel空間對齊、預測修正和多工學習引入到內隱知識學習過程中,驗證了它們的有效性。
- 分別討論了利用向量、神經網路、矩陣分解等工具對隱含知識進行建模的方法,並驗證了其有效性。
- 我們證實了所提出的內隱表徵學習方法能夠準確地對應於特定的物理特徵,並且我們還以視覺的方式呈現了它。我們還證實,如果運算元符合目標的物理意義,它可以用來整合內隱知識和外顯知識,並會產生乘法效應。
- 結合最新的方法,我們提出的統一網路在目標檢測方面達到了與Scaled-YOLOv4-P7[15]相當的精度,推理速度提高了88%。
2、相關工作
我們對這一研究課題的相關文獻進行了綜述。本文的文獻綜述主要分為三個方面:
-
外顯深度學習:它將涵蓋一些基於輸入資料自動調整或選擇特徵的方法;
-
內隱深度學習:它將涵蓋內隱深度知識學習和內隱微分導數的相關文獻;
-
知識建模:列舉了幾種可以用來整合內隱知識和外顯知識的方法。
2.1 外顯深度學習
外顯深度學習可以通過以下方式進行。其中Transformer[14,5,20]是一種方式,它主要使用查詢、鍵或值來獲得自我關注。非區域網絡[21,4,24]是另一種獲取注意力的方式,它主要在時間和空間上提取成對的注意力。另一種常用的顯式深度學習方法[7,25]是通過輸入資料自動選擇合適的核心。
2.2 內隱深度學習
屬於內隱深度學習範疇的方法主要有內隱神經表徵[11]和深度均衡模型[2,3,19]。前者主要是獲得離散輸入的引數化連續對映表示,以執行不同的任務;後者是將隱式學習轉化為殘差形式的神經網路,並對其進行平衡點計算。
2.3 知識模型
對於屬於知識建模範疇的方法,主要包括稀疏表示[1,23]和記憶網路[22,12]。前者使用樣例、預定義過完備或學習詞典進行建模,後者則依賴於多種嵌入形式的結合來形成記憶體,使記憶體能夠動態地新增或更改。
3、如何讓內隱知識工作?
本研究的主要目的是建立一個能夠有效訓練內隱知識的統一網路,因此在後續的研究中,我們首先將重點放在如何訓練內隱知識和快速推理上。由於隱式表示\(z_{i}\)與觀測無關,我們可以把它看作一組常數張量\(Z=\{z_{1},z_{2},\cdots,z_{k}\}\)。在本節中,我們將介紹作為常量張量的內隱知識如何應用於各種任務。
3.1 多維空間降維
我們認為,一個好的表徵應該能夠在它所屬的多維空間中找到一個合適的投影,並有助於後續目標任務的順利完成。例如,如圖3所示,如果目標類別可以通過投影空間中的超平面成功分類,那將是最好的結果。在上面的例子中,我們可以利用投影向量的內積和隱式表示來達到降低流形空間維數的目的,有效地完成各種任務。
3.2 核心空間對齊
在多工和多頭神經網路中,核空間失調是一個常見的問題,圖4(a)舉例說明了多工和多頭神經網路中的核空間失調。為了解決這個問題,我們可以對輸出特徵和隱式表示進行加法和乘法,這樣就可以對核空間進行平移、旋轉和縮放,以對齊神經網路的每個輸出核空間,如圖4(b)所示。上述操作模式可廣泛應用於不同領域,如特徵金字塔網路(FPN)[8]中大物件與小物件的特徵對齊、利用知識提煉來整合大模型與小模型、零例域轉移的變換等問題。
3.3 更多的功能
除了可以應用於不同任務的功能外,內隱知識還可以擴充套件為更多的功能。如圖5所示,通過引入加法,可以使神經網路預測中心座標的偏移量。還可以引入乘法來自動搜尋錨點的超引數集,這是基於anchor的目標檢測經常需要的。此外,點乘法和串聯可分別用於執行多工特徵選擇和為後續計算設定前提條件。
4、統一網路的內隱知識
在本節中,我們將比較傳統網路和提出的統一網路的目標函式,並解釋為什麼引入隱含知識對訓練多用途網路很重要。同時,我們還將詳細闡述本文提出的方法。
4.1 內隱知識的公式
4.1.1 卷積網路
對於卷積網路的目標函式,如下:
\[\underset{\text{minimize}\ \varepsilon}{y}=f_{\theta}\left( \textbf{X}\right)+\varepsilon \]卷積網路訓練,即最小化誤差\(\varepsilon\),使卷積網路儘可能貼近真實資料 \(y\)。如圖6(a)所示,我們需要對同一標註有不同的樣本,以獲取資料的丰度。換句話說,我們期望得到的解空間僅對當前任務\(t_{i}\)是有區別的,並且對各種潛在任務中除\(t_{i}\)以外的任務是不變的,其中\(T=\left \{ t_{1},\cdots ,t_{n} \right \}\)。
對於一般用途的神經網路,我們希望所得到的表示能服務於\(T\)。因此,我們需要放鬆\(\varepsilon\),以便在流形空間上同時找到每個任務的解,如圖6(b)所示。然而,上述要求使得我們不可能用簡單的數學方法,如一個one-hot向量的最大值或歐氏距離的閾值來求解\(t_{i}\)。為了解決這個問題,我們必須對錯誤項\(\varepsilon\)進行建模,以便為不同的任務找到解決方案,如圖6(c)所示。
4.1.2 統一網路
為了訓練所提出的統一網路,我們將顯式知識和隱式知識結合起來對誤差項進行建模,然後用它來指導多用途網路的訓練過程。相應的訓練公式如下:
\[y=f_{\theta}\left( \textbf{x}\right)+\varepsilon + g_{\phi }\left ( \epsilon_{ex} \left ( \textbf{x} \right ), \epsilon_{im} \left ( \textbf{z} \right ) \right ) \\ \text{minimize} \quad \epsilon + g_{\phi }\left ( \epsilon_{ex} \left ( \textbf{x} \right ), \epsilon_{im} \left ( \textbf{z} \right ) \right ) \]其中\(\epsilon_{ex}\)和\(\epsilon_{im}\)是分別對觀測值\(\textbf{X}\)和潛在程式碼\(\textbf{Z}\)的顯式誤差和隱式誤差進行建模的運算。\(g_{\phi}\)這裡是一個特定於任務的操作,用於從顯性知識和隱性知識中組合或選擇資訊。
已有的將顯式知識整合到\(f_{θ}\)的方法,可以將(2)改寫為(3)。
\[y = f_{\theta}\left( \textbf{x}\right) \star g_{\phi}\left( \textbf{z}\right) \]其中\(\star\)表示了\(f\)和\(g\)之間的可能操作。在這項工作中,將使用第3節中介紹的運算子,即加法、乘法和級聯。
如果我們把誤差項的推導過程擴充套件到處理多個任務,我們可以得到如下公式:
\[F\left ( \textbf{x},\theta, \textbf{Z} ,\Phi ,Y,\Psi \right )=0 \]其中,\(\textbf{Z}=\left \{ \textbf{z}_{1},\textbf{z}_{2},\cdots ,\textbf{z}_{T} \right \}\)是不同任務的隱式程式碼,\(\Phi\)是用於從\(\textbf{Z}\)生成內隱知識表示的引數,\(\Psi\)用於從顯式表示和隱式表示的不同組合中計算最終輸出引數。
對於不同的任務 ,我們可以使用下面的公式獲得預測:
\[d_{\Psi }\left ( f_{\theta }\left ( \textbf{x} \right ), g_{\Phi }\left ( \textbf{z} \right ), y \right )=0 \]對於所有的任務我們都從一個統一表示\(f_{\theta }\left ( \textbf{x} \right )\),完成特定任務的隱式表示\(g_{\Phi }\left ( \textbf{z} \right )\)開始,最後用任務識別器\(d_{\Psi }\)完成不同的任務。
4.2 內隱知識建模
我們提出的隱性知識可以通過以下方式建模:
4.2.1 Vector / Matrix / Tensor
\[\textbf{z} \]向量\(\textbf{z}\)直接作為內隱知識的先驗,直接作為隱式表示。此時,必須假設每個維度彼此獨立。
4.2.2 神經網路
\[\textbf{Wz} \] 利用向量z作為隱式知識的先驗,然後利用權矩陣W進行線性組合或非線性化,成為隱式表示。此時,必須假設每個維度相互依賴。我們也可以使用更復雜的神經網路來生成隱式表示。或者用馬爾可夫鏈來模擬不同任務間隱式表示的相關性。
4.2.3 矩陣分解
\[\textbf{Z}^{T}\textbf{c} \] 利用多個向量作為隱式知識的先驗,這些隱式先驗基\(\textbf{Z}\)和係數\(\textbf{c}\)構成隱式表示。我們還可以進一步對\(\textbf{c}\)進行稀疏約束,並將其轉化為稀疏表示形式。此外,我們還可以對\(\textbf{Z}\)和\(\textbf{c}\)施加非負約束,將它們轉化為非負矩陣分解(NMF)形式。
4.3 訓練
假設我們的模型在開始時沒有任何先驗的隱式知識,也就是說,它不會對\(f_{\theta}\left( \textbf{x} \right)\)的顯式表示產生任何影響。當操作\(\star \in \left\{ addition,\ concatenation \right\}\),我們設定內隱知識服從\(\textbf{z} \sim N\left( 0, \ \sigma \right)\);當操作是乘法時,\(\textbf{z} \sim N\left( 1, \ \sigma \right)\)。這裡的標準差是一個非常接近零的數。對於\(\textbf{z}\)和\(\phi\),在訓練過程中均採用反向傳播演算法進行訓練。
4.4 推理
由於隱式知識與觀測值\(\textbf{x}\)無關,因此無論隱式模型\(g_{\phi}\)有多複雜,都可以在推理階段開始前將其化為一組常數張量。換句話說,隱式資訊的形成對演算法的計算複雜度幾乎沒有影響。另外,當上面的運算是乘法時,如果後面的層是一個卷積層,那麼我們用下面的(9)來積分。當遇到加法運算子時,如果前一層是卷積層並且沒有啟用函式,則使用下面所示的(10)進行積分。
\[\textbf{x}_{(l+1)}=\sigma \left( W_{l} \left( g_{\phi} \left( \textbf{z} \right) \textbf{x}_{l} \right) + b_{l} \right)\\ =\sigma \left( {W}'_{l} \left( \textbf{x}_{l} \right) + b_{l} \right) \]其中,\({W}'_{l}=W_{l} g_{\phi} \left( \textbf{z} \right)\)。
\[\textbf{x}_{(l+1)}= W_{l} \left( \textbf{x}_{l} \right) + b_{l} + g_{\phi} \left( \textbf{z} \right)\\ = W_{l} \left( \textbf{x}_{l} \right) + {b}'_{l} \]其中,\({b}'_{l}=b_{l} + g_{\phi} \left( \textbf{z} \right)\)
完!
清澈的愛,只為中國