深度學習的高維度問題
在研究或者使用深度學習技術時,大多數人都會被「維度」這個概念搞暈,無論是數據本身還是演算法結構,都面對著各種高維的理論概念,正確理解深度學習中和「維度」相關的概念是掌握深度學習方法過程中不可迴避的技術瓶頸。
數據的高維度問題
深度學習的目標是基於某些給定信息對未知變數進行預測。需要預測的變數,一般是單個變數,若是需要預測多個變數,則也拆成多個深度學習模型處理,因此對每個模型還是輸出單個變數。模型輸出的單個變數稱為標量,英文是Scalar,深度學習模型的輸出一般不涉及高維問題。在模型進行預測時,需要基於一些輸入的信息進行判斷,這些輸入信息往往不是單一變數,而是多個變數,因此深度學習中數據的高維問題往往是指模型輸入變數的高維問題。
向量(Vector)
對深度學習模型來說,向量是最基本的輸入數據的結構,每個維度上的數據可以表示一個進行預測的參考信息。一般的預測問題中,輸入數據都可以用向量表示,向量中的各個值可類比於多元線性回歸模型中的各個自變數的作用。
矩陣(Matrix)
深度學習模型的輸入可以是矩陣。矩陣可以理解為2維的數據平面,輸入數據存儲在一個棋盤一樣的網格里。每個數據點佔據這個「棋盤」的一個格子。當需要提取一個格子里的數據時,需要給定「行」和「列」兩個坐標。有人會問,我在做深度學習時,只需要知道輸入是多個「自變數」就可以了,為什麼需要用一個數據平面表示。其實,任何輸入數據都可以只用向量表示,而無需用更複雜的結構來表示。實際情況是,對於很多深度學習框架,在底層仍然是將數據矩陣轉化為向量進行計算。
既然如此,為什麼會有矩陣形式的輸入存在呢?道理也許是簡單的讓人無語的,只是為了方便!深度學習的很多模型是用於處理圖片的,將圖片的像素作為輸入,每張圖片按照網格進行切分成存儲著像素信息的矩陣。矩陣的每個格子里,都存儲著一個數字用於表示這個像素上有沒有「點」。整張圖片就用這個包含著有「點」或者沒有「點」的網格的矩陣表示出來了。
張量(Tensor)
除了矩陣以外,還有一種數據的輸入格式,叫「張量」。數據存儲在一條線上,叫向量,存儲在一個平面上,叫矩陣,再複雜點,就是存儲在一個立方體上… …對!數據可以存儲在更高維度的空間上。存儲在立方體上,就叫「方塊」?哦不,叫張量!或者確切地說,叫3維張量。張量還有更高維度的形式,4維,5維,…假設宇宙中存在這樣的數據結構。一般來說,4維的張量就可以處理大多數深度學習任務了,更高維的應用也有,比較不接地氣而已。張量是一個泛化的概念,可以描述任意空間結構的數據。這裡的維度不是數據的維度,而是指數據存儲結構的維度。向量是1維的張量,矩陣是2維的張量。因此,引入了張量的概念,就不需要考慮向量或者矩陣的定義了,都是Tensor。因此,在深度學習的程序框架內,一般都會提Tensor,很少講Vector或者Matrix。因為,Vector和Matrix本質上也是Tensor!
接著上面的說,一個3維的Tensor作為輸入,本質上和一個Vector作為輸入沒區別,數據搞這麼複雜,實際上還是因為數據原本就是長這麼噁心的。怎麼講呢?3維的張量也是用於處理圖片的輸入,只不過這個圖片的內容更加豐富!一個給定大小的平面可以被劃分成一個網格矩陣,用網格里的數字表示某個位置是不是要畫「點」,從而來描述一個給定的圖片。然而,基於矩陣的方法只能表示一個黑白的圖片,而無法表示彩色的圖片,因為這個網格平面里並沒有包含任何和與點的顏色有關的信息。於是,考慮到R.G.B三原色就可以表示任何色彩,故可以用三個矩陣描述這個畫面,每個矩陣對應一個顏色通道。這樣,一幅畫可以表示成多個「畫層」的疊加結果,每一層對應一個R.G.B顏色。由於畫面是多層的結構,故除了有長和寬,也有高的空間信息。
除了在深度學習模型的初始輸入層的數據輸入具有3維的張量的結構,其在中間的隱層中,也會出現3維的張量結構。隱層的張量結構主要存在於CNN(Convolutional Neural Networks)的應用中,即卷積神經網路。在CNN中的每個卷積層,包含多個卷積核,每個卷積核用於捕捉畫面中某種特定的結構,即通過卷積操作,每個卷積核將對輸入的圖片進行轉化生成一個對應的降維後的「畫層」。因此,即便CNN的隱層輸入只有一個「畫層」,但由於卷積核很多,仍然會出現多個「畫層」,從而生成3維的張量的數據結構。
更高維的情況 (Higher Dimensions)
除了3維的張量,還存在更高維度的張量,比如4維,可以考慮時間的維度。例如基於深度學習模型識別某個影片中出現的人物,某個輸入的像素點表示的含義,不僅和像素點的位置、顏色相關,還和像素點出現的時間相關。
總結:最後思考一個問題?為什麼要用張量,而不用向量表示輸入數據。其根本在於,張量除了存儲了數據外,還記錄了數據在存儲時的空間位置。這種數據空間位置的信息對於預測任務是非常有價值的。如果將高維的張量數據都轉化為向量的結構作為深度學習模型的輸入,則破壞了輸入變數原本的空間結構,丟失了數據固有蘊含的信息,使得深度學習模型的性能受到嚴重影響。此外,很多深度學習模型,如CNN,在模型設計時,本身就已經利用了基於對數據空間位置結構的假設,因此需要在輸入數據變數時儘可能地保留和數據存儲相關的結構信息。
推薦閱讀:
※世界類腦AI巨系統研究綜述,論ET大腦是不是全球首個類腦架構AI
※城市雲腦研究之三,人工智慧在城市雲腦建設中的地位與作用
※人們對徵信的十大誤區
※人工智慧浪潮襲來,人才儲備卻成致命短板
TAG:圖像識別 | 深度學習DeepLearning | 人工智慧 |