什麼是深度學習?
- 45分鐘理解深度神經網絡和深度學習
http://staff.ustc.edu.cn/~lgliu
【緒言】
近年來,人工智能(Artificial Intelligence, AI)和深度學習(Deep Learning, DL)非常火爆,在各個領域得到了廣泛的應用。在筆者所從事的計算機圖形學領域,也出現了越來越多的使用深度學習方法來解決各種問題的研究工作。2018年7月初,筆者首次在第七屆中國科學技術大學《計算機圖形學前沿》暑期課程上講授和分享了筆者從數學(函數逼近論)的角度來對基於深度神經網絡(Deep Neural Network, DNN)的深度學習的理解和解釋。之後,不斷有學生來向筆者進一步詢問和交流有關資料和問題。爲了使學生們能夠更好、更快理解和使用深度神經網絡和深度學習,特撰寫此文。
本文的目的是幫助非人工智能領域的學生(主要是計算機圖形學領域的學生及筆者的學生)來搞懂深度學習(這裏指狹義的深度學習,即基於DNN的深度學習)的基本概念和方法。筆者嘗試用通俗的語言,從函數逼近論的角度來闡釋深度神經網絡的本質。由於筆者的主要研究領域爲計算機圖形學,而非人工智能領域,因此本文僅僅爲筆者從外行的角度對基於DNN的深度學習的粗淺理解,而非人工智能領域對DNN和深度學習的權威解釋。因而,筆者對其中的有些內容的理解是有限的,甚至是有誤的。如有不當之處,還請讀者指正!
一、 從數據擬合說起
在大學的《數學分析》、《微積分》或者《數值分析》中,大家都已學習並熟悉數據擬合問題及求解擬合問題的最小二乘法。
1.1. 數據擬合問題
在科學技術的各領域中,我們所研究的事件一般都是有規律(因果關係)的,即自變量集合與應變量集合之間存在的對應關係通常用映射來描述(特殊情況:實數集合到實數集合之間的映射稱爲函數)。這樣能根據映射(函數)規律作出預測並用於實際應用。
有些函數關係可由理論分析推導得出,不僅爲進一步的分析研究工作提供理論基礎,也可以方便的解決實際工程問題。比如,適合於宏觀低速物體的牛頓第二運動定律就是在實際觀察和歸納中得出的普適性力學定律。
但是,很多工程問題難以直接推導出變量之間的函數表達式;或者即使能得出表達式,公式也十分複雜,不利於進一步的分析與計算。這時可以通過諸如採樣、實驗等方法獲得若干離散的數據(稱爲樣本數據點),然後根據這些數據,希望能得到這些變量之間的函數關係,這個過程稱爲數據擬合(Data fitting),在數理統計中也稱爲迴歸分析(Regression analysis)。
這裏值得提一下,在實際應用中,還有一類問題是輸出的結果是離散型的(比如識別圖片裏是人、貓、狗等標籤的一種),此時問題稱爲分類(Classification)。
1.2. 數據擬合類型
我們先考慮最簡單的情形,即實數到實數的一元函數。假設通過實驗獲得了個樣本點。我們希望求得反映這些樣本點規律的一個函數關係,如圖1所示。
如果要求函數嚴格通過每個樣本點,即
|
, |
(1.1) |
則求解函數的問題稱爲插值問題(Interpolation)。
一般地,由於實驗數據帶有觀測誤差,因此在大部分情況下,我們只要求函數反映這些樣本點的趨勢,即函數靠近樣本點且誤差在某種度量意義下最小,稱爲逼近問題(Approximation)。若記在某點的誤差爲
|
(1.2) |
且記誤差向量爲。逼近問題就是要求向量的某種範數最小。一般採用歐氏範數(範數)作爲誤差度量的標準(比較容易計算),即求如下極小化問題:
|
. |
(1.3) |
圖1. 數據擬合。左:輸入的樣本點;中:插值函數;右:逼近函數。
無論是插值問題還是逼近問題,一個首要的問題就是函數的類型的選擇和表示問題,這是《函數逼近論》中的一個比較「糾結」的問題。
二、 函數逼近論簡介
函數的表示是函數逼近論中的基本問題。在數學的理論研究和實際應用中經常遇到下類問題:在選定的一類函數中尋找某個函數,使它與已知函數(或觀測數據)在一定意義下爲最佳近似表示,並求出用近似表示而產生的誤差。這就是函數逼近問題。稱爲逼近函數或擬合函數。
在函數逼近問題中,逼近函數的函數類可以有不同的選擇;即使函數類選定了,在該類函數中確定的方式仍然是各式各樣的;對的近似程度(誤差)也可以有各種不同的定義。我們分別對這些問題進行解釋和討論。
2.1. 逼近函數類
在實際問題中,首先要確定函數的具體形式。這不單純是數學問題,還與所研究問題的運動規律及觀測數據有關,也與用戶的經驗有關。一般地,我們在某個較簡單的函數類中去尋找我們所需要的函數。這種函數類叫做逼近函數類。
逼近函數類可以有多種選擇,一般可以在不同的函數空間(比如由一些基函數通過線性組合所張成的函數空間)中進行選擇。如下是一些常用的函數類。
(1) 多項式函數類
次代數多項式,即由次數不大於的冪基的線性組合的多項式函數:
|
, |
(2.1) |
其中爲實係數。
更常用的是由次Bernstein基函數來表達的多項式形式(稱爲Bernstein多項式或Bezier多項式):
|
, |
(2.2) |
其中Bernstein基函數
(2) 三角多項式類
階三角多項式,即由階數不大於的三角函數基的線性組合的三角函數:
|
, |
(2.3) |
其中爲實係數。
這些是常用的逼近函數類。在逼近論中,還有許多其他形式的逼近函數類,比如由代數多項式的比構成的有理分式集(有理逼近);按照一定條件定義的樣條函數集(樣條逼近);徑向基函數(RBF逼近);由正交函數系的線性組合構成的(維數固定的)函數集等。
2.2. 萬能逼近定理
在函數逼近論中,如果一組函數成爲一組「基」函數,需要滿足一些比較好的性質,比如光滑性、線性無關性、權性(所有基函數和爲1)、局部支集、完備性、正性、凸性等。其中, 「完備性」是指,該組函數的線性組合是否能夠以任意的誤差和精度來逼近給定的函數(即萬能逼近性質)?
對於多項式函數類,我們有以下的「萬能逼近定理」:
【定理2.1 (Weierstrass逼近定理)】對上的任意連續函數,及任意給定的,必存在次代數多項式,使得
|
(2.4) |
|
|
|
|
Weierstrass逼近定理表明,只要次數足夠高,次多項式就能以任何精度逼近給定的函數。具體的構造方法有Bernstein多項式或Chebyshev多項式等,這裏不詳細展開。
類似地,由Fourier分析理論(或Weierstrass第二逼近定理),只要階數足夠高,階三角函數就能以任何精度逼近給定的周期函數。這些理論表明,多項式函數類和三角函數類在函數空間是「稠密」的,這就保障了用這些函數類來作爲逼近函數是「合理」的。
2.3. 逼近函數類選擇的「糾結」
在一個逼近問題中選擇什麼樣的函數類作逼近函數類,這要取決於被逼近函數本身的特點,也和逼近問題的條件、要求等因素有關。
在實際應用中,這裏其實存在着兩個非常「糾結」的問題。
第一,選擇什麼樣的逼近函數類?一般地,需要用戶對被逼近對象或樣本數據有一些「先驗知識」來決定選擇具體的逼近函數類。比如,如果被逼近的函數具有周期性,將三角函數作爲逼近函數是個合理的選擇;如果被逼近的函數具有奇點,將有理函數作爲逼近函數更爲合理,等等。
第二,即使確定了逼近函數類,選擇多高的次數或階數?比如,如果選擇了多項式函數類,根據Lagrange插值定理,一定能找到一個次多項式來插值給定的個樣本點。但如果較大,則這樣得到的高次多項式很容易造成「過擬合」(Overfitting)。而如果選擇的過小,則得到的多項式容易造成「欠擬合」(Underfitting)。如圖2所示。過擬合或欠擬合函數在實際應用中是沒有用的,因爲它們的預測能力非常差!
圖2. 用不同次數的多項式擬合樣本點(藍色點)。
左:欠擬合;中:合適的擬合;右:過擬合。
這裏有個概念需要提及一下。一個逼近函數「表達能力」體現在該函數的未知參數(即公式(2.1)-(2.3)中的係數)與樣本點個數的差,也稱爲「自由度」。如果逼近函數的未知參數越多,則表達能力越強。然而,在實際的擬合問題中,逼近函數的擬合能力並非越強越好。因爲如果只關注樣本點處的擬合誤差的話,非常強的表達能力會使得樣本點之外的函數值遠遠偏離期望的目標,反而降低擬合函數的預測性能,產生過擬合,如圖2 (右)所示。
人們發展出各種方法來減緩(不能完全避免)過擬合。比如,剔除樣本點中的噪聲(數據去噪)、增加樣本點數據量(數據增廣)、簡化預測模型、獲取額外數據進行交叉驗證、或對目標函數進行適當的正則化等。在此不詳細敘述。
在實際應用中,如何選擇擬合函數的數學模型(合適的逼近函數類及其階數),並不是一開始就能選好,往往須通過分析確定若干模型後,再經過實際計算、比較和調整才能選到較好的模型。需要不斷的試驗和調試(稱爲「調參」過程),是個需要豐富經驗的「技術活」。
2.4. 最小二乘法(Least Squares Method)
假設通過分析我們已經確定了逼近函數類及其次數。記基函數(一般線性無關)爲。記爲這些基函數所張成的線性空間(函數空間)。則逼近函數可記爲
|
, |
(2.5) |
其中爲待定權係數。
關於最小二乘法的一般提法是:對給定的一組樣本點數據,要求在函數類中找一個函數,使誤差的模的平方,即式(1.3),達到最小。
對於分析極小化誤差(1.3),可得關於係數向量的法方程
|
, |
(2.6) |
從而可求得
|
. |
(2.7) |
由於法方程是一個線性方程組,因此基於最小二乘法的函數求解也稱爲線性迴歸。
另外,我們可在誤差項中加個權,表示不同點處的數據比重不同,此時稱爲加權最小二乘方法(Weighted least squares, WLS)。另外,還有移動最小二乘法(Moving least squares, MLS)等其他最小二乘法的改進方法。此處不詳細敘述。
三、 稀疏表達和稀疏學習
在實際應用中, 2.3節中所述的兩個「糾結」問題時有發生。人們發展出不同的方法來嘗試解決。
3.1. 嶺迴歸(Ridge Regression)
當數據量較少的情況下,最小二乘法(線性迴歸)容易出現過擬合的現象,法方程的係數矩陣會出現奇異(非滿秩),此時迴歸係數會變得很大,無法求解。
這時在最小二乘法的結果(時(2.7))中加一個小擾動,使原先無法求廣義逆的情況變成可以求出其廣義逆,使得問題穩定並得以求解,即
|
. |
(3.1) |
事實上,這個解對應於如下極小化問題的解:
|
. |
(3.2) |
其中,參數稱爲正則化參數(嶺參數)。上述迴歸模型稱爲嶺迴歸,其與最小二乘法的區別在於多了關於參數的範數正則項。這一項是對的各個元素的總體的平衡程度,即限制這些權稀疏的方差不能太大。
實際應用中,如果嶺參數選取過大,會把所有係數均最小化(趨向於0),造成欠擬合;如果嶺參數選取過小,會導致對過擬合問題解決不當。因此嶺參數的選取也是一個技術活,需要不斷調參。對於某些情形,也可以通過分析選擇一個最佳的嶺參數來保證迴歸的效果,在此不詳細敘述。
3.2. Lasso迴歸(Least Absolute Shrinkage and Selection Operator)
Lasso迴歸的極小化問題爲:
|
, |
(3.3) |
其中,正則項爲範數正則項。Lasso迴歸能夠使得係數向量的一些元素變爲0(稀疏),因此得到的擬合函數爲部分基函數的線性組合。
3.3. 稀疏表達與稀疏學習
根據Lasso迴歸的分析,我們可通過對迴歸變量施加範數(範數爲元素中非0元素的個數,在很多時候可以用範數近似)的正則項,以達到對迴歸變量進行稀疏化,即大部分迴歸變量爲0(少數迴歸變量非0)。這種優化稱爲稀疏優化。也就是說,對迴歸變量施加範數能夠「自動」對基函數進行選擇,值爲0的係數所對應的基函數對最後的逼近無貢獻。這些非0的基函數反映了的樣本點集合的「特徵」,因此也稱爲特徵選擇。
通過這種方法,爲了保證防止丟失一些基函數(特徵),我們往往可以多選取一些基函數(甚至可以是線性相關的),使得基函數的個數比輸入向量的維數還要大,稱爲「超完備」基(Over-complete basis)或過冗餘基,在稀疏學習中亦稱爲「字典」。然後通過對基函數的係數進行稀疏優化,選擇出合適(非0係數)的基函數的組合來表達逼近函數。
這在一定程度上克服了2.3節中所提出的兩個「糾結」的問題。因爲,這時可以選取較多的基函數及較高的次數,通過稀疏優化來選擇(「學習」)合適的基元函數,也稱爲稀疏學習。另外,基函數(字典)和稀疏係數也可以同時通過優化學習得到,稱爲字典學習。
對於矩陣形式(比如多元函數或圖像),矩陣的稀疏表現爲矩陣的低秩(近似爲核模很小),則對應着矩陣低秩求解問題。在此不詳細敘述。
稀疏學習與最近十年來流行的壓縮感知(Compressive sensing)理論與方法非常相關,也是機器學習領域的一種重要方法。其深厚的理論基礎由華裔數學家陶哲軒(2006年國際數學家大會菲爾茲獎得主)、斯坦福大學統計學教授David Donoho(2018年國際數學家大會高斯獎得主)等人所建立,已成功用於信號處理、圖像與視頻處理、語音處理等領域。在此不詳細展開介紹。
近年來,筆者及其團隊成功地將稀疏學習的理論和方法推廣用於三維幾何建模與處理中,在計算機圖形學領域已發表十餘篇相關論文(包括在頂級期刊ACM Transactions on Graphics上發表了4篇論文)。有興趣的讀者可詳細查看筆者的相關論文:
[3-1] Xu et al. Survey on Sparsity in Geometry Modeling and Processing. Graphical Models, 82, 160-180, 2015. (三維幾何處理的稀疏優化方法的綜述論文)
[3-2] Wang et al. Construction of Manifolds via Compatible Sparse Representations. ACM Transactions on Graphics, 35(2), Article 14: 1-10, 2016. (基於基函數稀疏選擇的曲面生成)
[3-3] Xiong et al. Robust Surface Reconstruction via Dictionary Learning. ACM Transactions on Graphics (Proc. Siggraph Asia), 33(6), Article 1: 1-12, 2014. (基於字典學習的曲面重建)
[3-4] Zhang et al. Local Barycentric Coordinates. ACM Transactions on Graphics (Proc. Siggraph Asia), 33(6), Article 1: 1-12, 2014. (基於稀疏優化的局部重心座標)
[3-5] Hu et al. Co-Segmentation of 3D Shapes via Subspace Clustering. Computer Graphics Forum (Proc. Symposium on Geometry Processing), 31(5): 1703-1713, 2012. (基於特徵稀疏選擇的三維形狀共同分割)
[3-6] Jin et al. Unsupervised Upright Orientation of Man-Made Models. Graphical Models (Proc. GMP), 74(4): 99-108, 2012. (基於矩陣低秩優化的三維形狀正向計算)
圖3. 稀疏學習方法用於三維幾何的建模與處理(筆者的工作)。
四、 高維的逼近函數
上面討論了映射爲一元函數的情形。上述的有關概念和方法同樣可以推廣至多元函數()及向量值函數()的情形(如圖4)。
圖4. 不同情形(維數)的逼近函數。
左上:一元函數;右上:多元函數;左下:一元向量值函數;右下:多元向量值函數。
4.1. 多元函數
假設有多元函數,即,的一組測量樣本數據。設中的一組基函數爲。要求函數
|
, |
(4.1) |
使得誤差
|
(4.2) |
的平方和最小。這與式(1.3)和2.4節的極值問題完全一樣。係數, 同樣通過求解法方程得到。上述過程稱爲多元函數的最小二乘擬合。
在函數論中,高維空間中的基函數的構造也有許多方法。爲了簡便,在許多時候我們採用張量積形式的基函數,即每個基函數是各個維數的一元基函數的乘積形式。在計算機圖形學和計算機輔助幾何設計(CG&CAGD)領域經常採用。
4.2. 向量值函數
如果因變量有多個,即,稱爲向量值函數。比如空間螺旋線的參數方程
|
(4.3) |
|
|
|
|
就是一個從一維到三維的向量值函數。如果自變量的維數比應變量的維數低,則自變量可看作爲應變量的參數。在式(4.3)中,變量可看作爲該螺旋線的參數。
對於向量值函數,可以看成是多個一元函數或多元函數(一般共享基函數)即可,所有處理方法(包括最小二乘法)都是對每個函數分別操作的,與前面單個函數的處理方法完全一樣。如果用數學方式來表達,前面的很多符號由向量變爲矩陣的形式而已。詳細可查看《數學分析》。
五、 參數曲線曲面擬合
前面討論的函數所能表達的曲線比較簡單,無法表達封閉和多值的曲線。因此,在計算機圖形學和計算機輔助幾何設計中常用參數曲線曲面(本質是向量值函數,見4.2節)來表達幾何形狀,用於幾何造型。另外,在計算機圖形學中還有一種利用隱函數來表達曲線的方式,也常用於造型中,這裏不展開介紹。
5.1. 二維參數曲線
從數學來看,一條曲線的本徵維度是一維的,不論是從哪個維度的空間來看。從直觀來看,該曲線能被「拉」成爲一條直線或線段;即,一條有端點的曲線能和一條線段建立1-1對應,如圖5(左)所示。因此,嵌入到二維空間中的曲線可由單個參數來表達,即有如下形式的參數形式:
|
(5.1) |
|
|
|
|
其中爲該曲線的參數,, 均爲的函數,分別表示曲線上對應於參數的點的兩個座標分量。一般參數曲線表達爲。本質上,這是一個從到的向量值函數。
5.2. 三維參數曲面
類似地,一張二維流形曲面的本徵維度是二維的。一張曲面能與平面上的一塊區域建立1-1對應,如圖5(右)所示。因此,嵌入到三維空間中的曲面可由兩個參數來表達,即有如下形式的參數形式:
|
(5.2) |
|
|
|
|
其中爲該曲面的參數,, 均爲的二元函數,分別表示曲面上對應於參數的點的三個座標分量。一般參數曲面表達爲。本質上,這是一個從到的向量值函數。
圖5. 參數曲線曲面。左:單參數曲線;右:雙參數曲面。
5.3. 參數曲線曲面擬合
下面我們介紹如何使用參數曲線來擬合2D平面上的一組有序樣本點。
參數曲線擬合的問題描述如下:給定平面上一組有序樣本點,我們希望尋求一條擬合這些點的參數曲線關係。
如需決定一條擬合曲線,首先需要確定每個樣本點所對應的參數。對於一組有序的樣本點,所確定的一種參數分割,稱之爲這組樣本點的參數化。參數化的本質就是找一組恰當的參數來匹配這一組樣本點,以便使這條擬合出來的曲線美觀、合理。
在參數曲線擬合中,樣本點的參數化是個非常基本而重要的問題。不同的參數化,對擬合曲線的形狀會產生很大的影響。圖6顯示了三種參數化(均勻參數化、弦長參數化和中心參數化)對擬合曲線形狀的影響。
圖6. 不同的參數化導致不同的參數曲線擬合結果。
類似地,如果利用參數曲面來擬合空間中給定的一組樣本點,首先也需要確定這些樣本點在平面上的參數化,如圖7所示。在曲面參數化中,不僅需要建立樣本點及其參數的一一對應,我們還希望參數區域的網格保持原始網格的一些重要的幾何特性,比如角度、邊長等。
圖7. 三維曲面的參數化。
曲面參數化是計算機圖形學中非常基礎且重要的一個研究課題,也一直是研究熱點之一。筆者及所在的課題組也在這個課題方面作了大量的工作,有興趣的讀者可詳細查看筆者的相關論文:
(平面參數化)
[5-1] Ligang Liu, Lei Zhang, Yin Xu, Craig Gotsman, Steven J. Gortler. A Local/Global Approach to Mesh Parameterization. Computer Graphics Forum (Proc. Eurographics Symposium on Geometry Processing (SGP)), 27(5), 1495-1504, 2008.
[5-2] Ligang Liu, Chunyang Ye, Ruiqi Ni, Xiao-Ming Fu. Progressive Parameterizations. ACM Transactions on Graphics (Proc. Siggraph), 37(4), Article 41: 1-12, 2018.
(球面參數化)
[5-3] Xin Hu, Xiao-Ming Fu, Ligang Liu. Advanced Hierarchical Spherical Parameterizations. IEEE Transactions on Visualization and Computer Graphics, to appear, 2018.
[5-4] Chunxue Wang, Xin Hu, Xiaoming Fu, Ligang Liu. Bijective Spherical Parametrization with Low Distortion. Computers&Graphics (Proc. SMI), 58: 161-171, 2016.
[5-5] Chunxue Wang, Zheng Liu, Ligang Liu. As-Rigid-As-Possible Spherical Parameterization. Graphical Models (Proc. GMP), 76(5): 457-467, 2014.
(流形參數化)
[5-6] Lei Zhang, Ligang Liu, Zhongping Ji, Guojin Wang. Manifold Parameterization. Lecture Notes in Computer Science (Proc. Computer Graphics International), 4035, 160-171, 2006.
六、 從人工神經網絡的觀點來看擬合函數
爲了講清楚人工神經網絡(Artificial Neural Network,ANN),下面我們先從神經網絡的觀點來看傳統的擬合函數和曲線曲面。
6.1. 一元函數
對於一元的逼近函數
|
. |
(6.1) |
可以看成爲如圖8的三層神經網絡,其中只有一個隱層。隱層上有個節點,激活函數分別爲基函數(從這裏我們將基函數稱爲「激活函數」)。輸入層到隱層的權設爲常值1(圖8左),也可以看成爲將輸入層的值「直接代入」(不做任何變換,用虛線表示)到激活函數(圖8右)。隱層到輸出層的權爲基函數的組合係數。
中間隱層的輸出節點所形成的向量可看作爲輸入量的「特徵」。
現在我們開始用機器學習的語言來描述數據擬合的過程。整個神經網絡就是由中間節點的激活函數及權係數所決定的一個函數(6.1)。我們稱樣本點, 爲訓練數據(Training set),稱函數在訓練數據上的誤差度量爲損失函數(Loss function)。通過訓練數據來極小化損失函數得到權係數的過程稱爲「訓練」或「學習」。如果損失函數取爲(1.3)的形式,則網絡的訓練過程本質上就是前面所講的最小二乘法(2.4節)。
圖8. 一元逼近函數的神經網絡。左:輸入層到隱層的權係數均爲常值1;
右:輸入層到隱層看成爲「直接代入」(用虛線表示)。
6.2. 多元函數和向量值函數
考慮一般的逼近函數。設中的一組基函數爲。則函數可看成爲如下圖的一個三層的神經網絡。注意這裏隱層的激活函數都是維函數,從輸入層到隱層也是直接代入。輸出層的各個分量共享隱層的激活函數。
圖9. 多元函數和向量值函數的神經網絡。從輸入層到隱層是變量直接代入到激活函數。
6.3. 擬合曲線曲面
擬合曲線可以看作爲一個多層的神經網絡,如下圖所示。輸入層(樣本點)到參數化是一個變換,可看成爲一個神經網絡;參數化到輸出層是一個變換(單變量基函數組合),也是一個神經網絡。輸出層的兩個分量共享基函數。
隱層1的激活函數爲雙變量基函數;隱層3的激活函數爲單變量基函數。中間隱層(隱層1、2、3)的輸出節點所形成的向量均可分別看作爲輸入量在不同維數空間的「特徵」。
圖10. 擬合曲線的神經網絡。輸入層(樣本點)到參數化是一個神經網絡變換;
參數化到輸出層是一個神經網絡變換。
類似地,擬合曲面也可以看作爲一個如下圖的多層神經網絡。
圖11. 擬合曲面的神經網絡。
從曲線曲面擬合的過程及神經網絡結構來看,如果將整個網絡進行優化,則擬合的過程是尋求樣本點的參數化以及表達函數的基函數,使得擬合誤差極小化。在這裏,我們是知道給定樣本點的「本徵維數」,因此,人爲設置了第一個隱層的維數爲1(曲線)或2(曲面)。然而,在實際應用中,我們並不知道數據的本徵維數,此時需要利用其他方法(比如流形學習或降維方法)來「檢測」或「猜測」隱層的維數,或者直接根據經驗來不斷調參和測試。
需要提及的是,在計算機圖形學中,傳統的大部分方法是將參數化的問題和曲線曲面擬合問題分爲兩個問題來解決。有些工作專門做參數化,有些工作專門研究擬合問題。其中參數化的工作更爲重要,直接決定了擬合曲線曲面的質量。此處不詳述。
需要注意的是,本節只是從神經網絡的觀點來看曲線曲面的參數化和擬合的問題。在計算機圖形學中,我們不是簡單的通過上述網絡來求參數化(單個樣本點),而是要考慮更多的樣本點一起來求解參數化。這個後面還會詳細介紹。
七、 通用人工神經網絡
有了上述的理解,我們現在來理解和解釋人工神經網絡就非常容易了。
7.1. 函數擬合回顧
回顧前面所述的函數逼近論中的函數擬合問題,始終是存在着兩個「糾結」。一是選擇什麼樣的逼近函數類,即選擇什麼類型的基函數?二是選擇多高的次數或階數?
另一方面,如果從圖8或圖9的神經網絡的觀點來看,網絡的結構設置都存在着如下兩個「糾結」:
1. 隱層中的節點中使用什麼樣的激活函數(基函數)?
2. 隱層中設置多少個節點(基函數的次數)?
在傳統逼近論中,上述兩個問題就沒有好方法來解決(第一個問題針對具體問題可預先設定),是通過不斷試錯來看結果的好壞來決定的。這是因爲,雖然有些基函數的性質很好,但是次數或階數過高(比如多項式基或三角函數基),就會產生震盪,也容易產生過擬合,使得擬合函數的性態不好。因此,一般不會採用次數或結束太高的基函數。爲此,人們發展了分段擬合方法,即將數據分爲若干段,每段分別擬合,各段的擬合函數保證一定的光滑性,稱爲樣條函數。在逼近論和計算機圖形學領域,人們發展出了很多漂亮的樣條的理論與方法。
對於參數類型的高維曲線曲面,還存在着參數化的問題,這時還存在另一個糾結,就是要設置多少個隱層(圖10和圖11)?
7.2. 使用簡單元函數作爲激活函數
爲了克服上述兩個糾結的問題,是否可以通過其他形式來生成「基函數」?注意到,對於任意一個非常值的一元函數,這裏我們稱爲元函數,其沿着方向的平移函數以及沿着方向的伸縮函數都與原函數線性無關。也就是說,如果能有足夠多的變換所生成的函數,其線性組合所張成的函數空間就能有充分的表達能力。那麼這些函數(可能都線性無關)是否能構成逼近一般函數的「基函數」呢?
一個自然的想法就是,我們能否以這個作爲激活函數,讓網絡自動地去學習這些激活函數的變換,或者說去學習一些「基函數」,來表達所需要的擬合函數呢?這就是圖12所示的神經元。變量乘以一個伸縮,加上一個平移(稱爲偏置「bias」),即變量的仿射變換,成爲神經元的輸入;然後通過激活函數複合後成爲該神經元的輸出。
圖12. 一元(單變量)函數的神經元結構。
對於多變量的情形(多元函數),神經元的結構如圖13所示。變量的線性組合,加上一個平移(稱爲偏置「bias」),即變量的仿射變換,成爲神經元的輸入;然後通過激活函數複合後成爲該神經元的輸出。
圖13. 多元(多變量)函數的神經元結構。
不失一般性,我們下面就直接以多元函數的形式來介紹一般神經網絡的結構。對於向量值函數(是多維的),則分別將的各個維數分別看作一個多元函數處理而已,這些函數共享節點(基函數)即可。
7.3. 單隱層神經網絡
一個多元函數的神經網絡的結構如圖14所示,有一個輸入層,一個隱層及一個輸出層。輸入層除了變量外,還有一個常數節點1;隱層包含多個節點,每個節點的激活函數都是,隱層的輸出就是輸入層節點的線性組合加偏置(即仿射變換)代入到激活函數的複合函數;輸出層是這些複合函數的組合。
這個網絡的所有權係數,(輸入層與隱層之間的權及偏置項)及(隱層與輸出層之間的權,此層一般不用偏置項)作爲這個神經網絡的參數變量,需要通過極小化損失函數來求解的。這個過程稱爲「訓練」或「學習」。
與前面所述的逼近論中的擬合函數類似,網絡的隱層的節點數是需要通過不斷調試和嘗試來確定的。隱層的節點輸出稱爲輸入數據)的「特徵」。
圖14. 多元(多變量)函數的單隱層神經網絡結構。
整個網絡的學習過程本質上就是在學習所有的係數參數。最後得到的擬合函數爲一些函數的線性組合表達。這些組合函數實質上就是表達函數的「基函數」!
從函數逼近論的角度,我們可以這樣來理解神經網絡:神經網絡的學習過程本質上是在學習基函數!這些基函數是通過激活函數通過平移和伸縮(變量的仿射變換)來得到的!
當然,天下沒有免費的午餐。以前函數逼近論無法解決的兩個「糾結」這裏仍然存在:
第一個糾結是如何選取基函數?這裏使用激活函數,然後學習其變換來得到。
第二個糾結是選擇多少個基函數?這裏爲隱層的神經元個數。
從這個觀點來看,神經網絡本質上就是傳統的逼近論中的逼近函數的一種推廣。它不是通過指定的理論完備的基函數來表達函數的,而是通過簡單的基元函數(激活函數)的不斷變換得到的「基函數」來表達函數的。實質上是二層複合函數。
此時,我們當然要問個問題:將函數(隱層與輸出層之間的權,此層一般不用偏置項)作爲這個神經網絡的參數變量,需要通過極小化損失函數來求解的。這個過程稱爲「訓練」或「學習」。
與前面所述的逼近論中的擬合函數類似,網絡的隱層的節點數是需要通過不斷調試和嘗試來確定的。隱層的節點輸出稱爲輸入數據)的「特徵」。
圖14. 多元(多變量)函數的單隱層神經網絡結構。
整個網絡的學習過程本質上就是在學習所有的係數參數。最後得到的擬合函數爲一些函數的線性組合表達。這些組合函數實質上就是表達函數的「基函數」!
從函數逼近論的角度,我們可以這樣來理解神經網絡:神經網絡的學習過程本質上是在學習基函數!這些基函數是通過激活函數通過平移和伸縮(變量的仿射變換)來得到的!
當然,天下沒有免費的午餐。以前函數逼近論無法解決的兩個「糾結」這裏仍然存在:
第一個糾結是如何選取基函數?這裏使用激活函數,然後學習其變換來得到。
第二個糾結是選擇多少個基函數?這裏爲隱層的神經元個數。
從這個觀點來看,神經網絡本質上就是傳統的逼近論中的逼近函數的一種推廣。它不是通過指定的理論完備的基函數來表達函數的,而是通過簡單的基元函數(激活函數)的不斷變換得到的「基函數」來表達函數的。實質上是二層複合函數。
此時,我們當然要問個問題:將函數經過充分多的平移和伸縮(包括它們的組合)所線性張成的函數空間,其表達能力有多強?這個函數空間是否在所有函數空間是稠密的?如果問題是正確的,那麼就是說,對於任何一個給定的函數,總能找到函數的多次平移和縮放的函數,其線性組合能夠逼近給定的這個函數;也就是說,圖14中的神經網絡只要隱層的節點數足夠多,該網絡所表達的函數就能逼近任意的函數。
幸運的是,上述猜想在很多情況下是成立的!有以下的萬能逼近定理所保證。
7.4. 萬能逼近定理
記爲空間中的單位立方體,我們在這個定義域中來描述萬能逼近定理。記爲上的連續函數空間,爲上的可測函數空間,爲上相對測度的可積函數空間(即)。
設給定一元激活函數,首先給出如下定義。
【定義7.1】稱函數爲壓縮函數,如果單調不減,且滿足
, .
【定義7.2】稱函數爲可分辨的,若對於有限測度,由
,
可得到
【定義7.3】記
爲所有由激活函數變換及線性累加所構成的維函數空間(即具有個節點的單隱層神經網絡所表達的維函數)。
【定理7.1】若是壓縮函數,則在中一致稠密,在中按如下距離下稠密:
.
【定理7.2】若是可分辨的,則在中按連續函數距離下稠密。
【定理7.3】若是連續有界的非常值函數,則在中稠密。
【定理7.4】若是無界的非常值函數,則在中稠密。
上述定理這裏就不詳細解釋,稍微有些實分析和泛函分析的基礎就能看懂。用通俗的話來說,就是:對任意給定的一個爲一些函數的線性組合表達。這些組合函數實質上就是表達函數的「基函數」!
從函數逼近論的角度,我們可以這樣來理解神經網絡:神經網絡的學習過程本質上是在學習基函數!這些基函數是通過激活函數通過平移和伸縮(變量的仿射變換)來得到的!
當然,天下沒有免費的午餐。以前函數逼近論無法解決的兩個「糾結」這裏仍然存在:
第一個糾結是如何選取基函數?這裏使用激活函數,然後學習其變換來得到。
第二個糾結是選擇多少個基函數?這裏爲隱層的神經元個數。
從這個觀點來看,神經網絡本質上就是傳統的逼近論中的逼近函數的一種推廣。它不是通過指定的理論完備的基函數來表達函數的,而是通過簡單的基元函數(激活函數)的不斷變換得到的「基函數」來表達函數的。實質上是二層複合函數。
此時,我們當然要問個問題:將函數經過充分多的平移和伸縮(包括它們的組合)所線性張成的函數空間,其表達能力有多強?這個函數空間是否在所有函數空間是稠密的?如果問題是正確的,那麼就是說,對於任何一個給定的函數,總能找到函數的多次平移和縮放的函數,其線性組合能夠逼近給定的這個函數;也就是說,圖14中的神經網絡只要隱層的節點數足夠多,該網絡所表達的函數就能逼近任意的函數。
幸運的是,上述猜想在很多情況下是成立的!有以下的萬能逼近定理所保證。
7.4. 萬能逼近定理
記爲空間中的單位立方體,我們在這個定義域中來描述萬能逼近定理。記爲上的連續函數空間,爲上的可測函數空間,爲上相對測度的可積函數空間(即)。
設給定一元激活函數,首先給出如下定義。
【定義7.1】稱函數爲壓縮函數,如果單調不減,且滿足
, .
【定義7.2】稱函數爲可分辨的,若對於有限測度,由
,
可得到
【定義7.3】記
爲所有由激活函數變換及線性累加所構成的維函數空間(即具有個節點的單隱層神經網絡所表達的維函數)。
【定理7.1】若是壓縮函數,則在中一致稠密,在中按如下距離下稠密:
.
【定理7.2】若是可分辨的,則在中按連續函數距離下稠密。
【定理7.3】若是連續有界的非常值函數,則在中稠密。
【定理7.4】若是無界的非常值函數,則在中稠密。
上述定理這裏就不詳細解釋,稍微有些實分析和泛函分析的基礎就能看懂。用通俗的話來說,就是:對任意給定的一個中的函數,只要項數足夠多,中就存在一個函數爲上的連續函數空間,爲上的可測函數空間,爲上相對測度的可積函數空間(即)。
設給定一元激活函數,首先給出如下定義。
【定義7.1】稱函數爲壓縮函數,如果單調不減,且滿足
, .
【定義7.2】稱函數爲可分辨的,若對於有限測度,由
,
可得到
【定義7.3】記
爲所有由激活函數變換及線性累加所構成的維函數空間(即具有個節點的單隱層神經網絡所表達的維函數)。
【定理7.1】若是壓縮函數,則在中一致稠密,在中按如下距離下稠密:
.
【定理7.2】若是可分辨的,則在中按連續函數距離下稠密。
【定理7.3】若是連續有界的非常值函數,則在中稠密。
【定理7.4】若是無界的非常值函數,則在中稠密。
上述定理這裏就不詳細解釋,稍微有些實分析和泛函分析的基礎就能看懂。用通俗的話來說,就是:對任意給定的一個中的函數,只要項數足夠多,中就存在一個函數,使得在一定精度下逼近。也就是說,圖14所表達的單隱層的神經網絡所表達的維函數能夠逼近中的任意一個函數。
根據上述定理可知,函數只要滿足一定條件即可作爲一個合適的激活函數。但還是存在着一個巨大的「糾結」,就是隱層中的節點數量該取多大,仍是未知的。在實際中,這個是要不斷通過測試和調試來決定的,這個過程稱爲「調參」。
定理7.1-7.4的詳細證明可見以下論文。
[7-1] K. Hornik, et al. Multilayer feedforward networks are universal approximations. Neural Networks, 2: 359-366, 1989.
[7-2] G. Cybenko. Approximation by superpositions of a sigmoidal function. Math. Control Signals System, 2: 303-314, 1989.
[7-3] K. Hornik. Approximation capabilities of multilayer feedforward networks. Neural Networks, 4: 251-257, 1991.
7.5. 深度神經網絡:多隱層神經網絡
將上述的神經網絡的隱層進一步推廣到多層,即可得到多隱層的神經網絡,即深度神經網絡(深度的意思就是多層)。其網絡結構如圖15所示。
由於每相鄰的兩層的節點都是全部連接的,因此在機器學習領域,也叫做全連接神經網絡或多層感知機(Multi-Layer Perceptron, MLP)。
圖15只是顯示了的函數的神經網絡的結構。對於一般的的向量值函數,只要將最後輸出層多幾個節點即可,即,每個維度分量都是一個的函數,共享了前面的所有網絡層結構。
每個隱層的輸出 都可以看成輸入數據在不同維數空間下的 「特徵」。
注意不要在輸出層使用激活函數。因爲最後的輸出就是那些基函數的線性組合表達即可。
從數學上看,深度神經網絡就是一個多層複合函數。萬有逼近定理仍然成立。
圖15. 多元(多變量)函數的深度神經網絡結構。
類似地,深度神經網絡也能很強地表達中的任意的函數。在具體應用中,選用多少個隱層,每一隱層選用多少節點,這些都是需要根據損失函數的進行不斷調試的。這個過程也稱爲「調參」。
八、 深入理解深度神經網絡
8.1. 激活函數