电竞比分网-中国电竞赛事及体育赛事平台

分享

什么是深度學(xué)習(xí)?

 taotao_2016 2018-08-17

【緒言】

近年來,人工智能(ArtificialIntelligence, AI)和深度學(xué)習(xí)(Deep Learning, DL)非?;鸨?,在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。在筆者所從事的計(jì)算機(jī)圖形學(xué)領(lǐng)域,也出現(xiàn)了越來越多的使用深度學(xué)習(xí)方法來解決各種問題的研究工作。20187月初,筆者首次在第七屆中國科學(xué)技術(shù)大學(xué)《計(jì)算機(jī)圖形學(xué)前沿》暑期課程上講授和分享了筆者從數(shù)學(xué)(函數(shù)逼近論)的角度來對(duì)基于深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)的深度學(xué)習(xí)的理解和解釋。之后,不斷有學(xué)生來向筆者進(jìn)一步詢問和交流有關(guān)資料和問題。為了使學(xué)生們能夠更好、更快理解和使用深度神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí),特撰寫此文。

本文的目的是幫助非人工智能領(lǐng)域的學(xué)生(主要是計(jì)算機(jī)圖形學(xué)領(lǐng)域的學(xué)生及筆者的學(xué)生)來搞懂深度學(xué)習(xí)(這里指狹義的深度學(xué)習(xí),即基于DNN的深度學(xué)習(xí))的基本概念和方法。筆者嘗試用通俗的語言,從函數(shù)逼近論的角度來闡釋深度神經(jīng)網(wǎng)絡(luò)的本質(zhì)。由于筆者的主要研究領(lǐng)域?yàn)?/span>計(jì)算機(jī)圖形學(xué),而非人工智能領(lǐng)域,因此本文僅僅為筆者從外行的角度對(duì)基于DNN的深度學(xué)習(xí)的粗淺理解,而非人工智能領(lǐng)域?qū)?/span>DNN和深度學(xué)習(xí)的權(quán)威解釋。因而,筆者對(duì)其中的有些內(nèi)容的理解是有限的,甚至是有誤的。如有不當(dāng)之處,還請(qǐng)讀者指正!

 

一、  從數(shù)據(jù)擬合說起

 

在大學(xué)的《數(shù)學(xué)分析》、《微積分》或者《數(shù)值分析》中,大家都已學(xué)習(xí)并熟悉數(shù)據(jù)擬合問題及求解擬合問題的最小二乘法。

1.1.           數(shù)據(jù)擬合問題

在科學(xué)技術(shù)的各領(lǐng)域中,我們所研究的事件一般都是有規(guī)律(因果關(guān)系)的,即自變量集合與應(yīng)變量集合之間存在的對(duì)應(yīng)關(guān)系通常用映射來描述(特殊情況:實(shí)數(shù)集合到實(shí)數(shù)集合之間的映射稱為函數(shù))。這樣能根據(jù)映射(函數(shù))規(guī)律作出預(yù)測并用于實(shí)際應(yīng)用。

有些函數(shù)關(guān)系可由理論分析推導(dǎo)得出,不僅為進(jìn)一步的分析研究工作提供理論基礎(chǔ),也可以方便的解決實(shí)際工程問題。比如,適合于宏觀低速物體的牛頓第二運(yùn)動(dòng)定律就是在實(shí)際觀察和歸納中得出的普適性力學(xué)定律。

但是,很多工程問題難以直接推導(dǎo)出變量之間的函數(shù)表達(dá)式;或者即使能得出表達(dá)式,公式也十分復(fù)雜,不利于進(jìn)一步的分析與計(jì)算。這時(shí)可以通過諸如采樣、實(shí)驗(yàn)等方法獲得若干離散的數(shù)據(jù)(稱為樣本數(shù)據(jù)點(diǎn)),然后根據(jù)這些數(shù)據(jù),希望能得到這些變量之間的函數(shù)關(guān)系,這個(gè)過程稱為數(shù)據(jù)擬合Data fitting),在數(shù)理統(tǒng)計(jì)中也稱為回歸分析Regression analysis)。

這里值得提一下,在實(shí)際應(yīng)用中,還有一類問題是輸出的結(jié)果是離散型的(比如識(shí)別圖片里是人、貓、狗等標(biāo)簽的一種),此時(shí)問題稱為分類Classification)。

 

1.2.           數(shù)據(jù)擬合類型

我們先考慮最簡單的情形,即實(shí)數(shù)到實(shí)數(shù)的一元函數(shù)。假設(shè)通過實(shí)驗(yàn)獲得了個(gè)樣本點(diǎn)。我們希望求得反映這些樣本點(diǎn)規(guī)律的一個(gè)函數(shù)關(guān)系,如圖1所示。

如果要求函數(shù)嚴(yán)格通過每個(gè)樣本點(diǎn),即

 

 ,

(1.1)

則求解函數(shù)的問題稱為插值問題(Interpolation)。

一般地,由于實(shí)驗(yàn)數(shù)據(jù)帶有觀測誤差,因此在大部分情況下,我們只要求函數(shù)反映這些樣本點(diǎn)的趨勢,即函數(shù)靠近樣本點(diǎn)且誤差在某種度量意義下最小,稱為逼近問題(Approximation)。若記在某點(diǎn)的誤差為

 

 

(1.2)

且記誤差向量為。逼近問題就是要求向量的某種范數(shù)最小。一般采用歐氏范數(shù)(范數(shù))作為誤差度量的標(biāo)準(zhǔn)(比較容易計(jì)算),即求如下極小化問題:

 

.

(1.3)

1. 數(shù)據(jù)擬合。左:輸入的樣本點(diǎn);中:插值函數(shù);右:逼近函數(shù)。

 

無論是插值問題還是逼近問題,一個(gè)首要的問題就是函數(shù)的類型的選擇和表示問題,這是《函數(shù)逼近論》中的一個(gè)比較“糾結(jié)”的問題。

 

二、  函數(shù)逼近論簡介

 

函數(shù)的表示是函數(shù)逼近論中的基本問題。在數(shù)學(xué)的理論研究和實(shí)際應(yīng)用中經(jīng)常遇到下類問題:在選定的一類函數(shù)中尋找某個(gè)函數(shù),使它與已知函數(shù)(或觀測數(shù)據(jù))在一定意義下為最佳近似表示,并求出用近似表示而產(chǎn)生的誤差。這就是函數(shù)逼近問題稱為逼近函數(shù)或擬合函數(shù)。

在函數(shù)逼近問題中,逼近函數(shù)的函數(shù)類可以有不同的選擇;即使函數(shù)類選定了,在該類函數(shù)中確定的方式仍然是各式各樣的;對(duì)的近似程度(誤差)也可以有各種不同的定義。我們分別對(duì)這些問題進(jìn)行解釋和討論。

 

1.            

2.            

2.1.            逼近函數(shù)類

在實(shí)際問題中,首先要確定函數(shù)的具體形式。這不單純是數(shù)學(xué)問題,還與所研究問題的運(yùn)動(dòng)規(guī)律及觀測數(shù)據(jù)有關(guān),也與用戶的經(jīng)驗(yàn)有關(guān)。一般地,我們在某個(gè)較簡單的函數(shù)類中去尋找我們所需要的函數(shù)。這種函數(shù)類叫做逼近函數(shù)類。

逼近函數(shù)類可以有多種選擇,一般可以在不同的函數(shù)空間(比如由一些基函數(shù)通過線性組合所張成的函數(shù)空間)中進(jìn)行選擇。如下是一些常用的函數(shù)類。

(1)  多項(xiàng)式函數(shù)類

次代數(shù)多項(xiàng)式,即由次數(shù)不大于的冪基的線性組合的多項(xiàng)式函數(shù):

 

,

(2.1)

其中為實(shí)系數(shù)。

更常用的是由Bernstein基函數(shù)來表達(dá)的多項(xiàng)式形式(稱為Bernstein多項(xiàng)式或Bezier多項(xiàng)式):

 

,

(2.2)

其中Bernstein基函數(shù)

(2)  三角多項(xiàng)式類

階三角多項(xiàng)式,即由階數(shù)不大于的三角函數(shù)基的線性組合的三角函數(shù):

 

,

(2.3)

其中為實(shí)系數(shù)。

 

這些是常用的逼近函數(shù)類。在逼近論中,還有許多其他形式的逼近函數(shù)類,比如由代數(shù)多項(xiàng)式的比構(gòu)成的有理分式集(有理逼近);按照一定條件定義的樣條函數(shù)集(樣條逼近);徑向基函數(shù)(RBF逼近);由正交函數(shù)系的線性組合構(gòu)成的(維數(shù)固定的)函數(shù)集等。

 

2.2.           萬能逼近定理

在函數(shù)逼近論中,如果一組函數(shù)成為一組“基”函數(shù),需要滿足一些比較好的性質(zhì),比如光滑性、線性無關(guān)性、權(quán)性(所有基函數(shù)和為1)、局部支集、完備性、正性、凸性等。其中, “完備性”是指,該組函數(shù)的線性組合是否能夠以任意的誤差和精度來逼近給定的函數(shù)(即萬能逼近性質(zhì))?

對(duì)于多項(xiàng)式函數(shù)類,我們有以下的“萬能逼近定理”:

【定理2.1 Weierstrass逼近定理)】對(duì)上的任意連續(xù)函數(shù),及任意給定的,必存在次代數(shù)多項(xiàng)式,使得

 

 

(2.4)

 

 

 

Weierstrass逼近定理表明,只要次數(shù)足夠高,次多項(xiàng)式就能以任何精度逼近給定的函數(shù)。具體的構(gòu)造方法有Bernstein多項(xiàng)式或Chebyshev多項(xiàng)式等,這里不詳細(xì)展開。

類似地,由Fourier分析理論(或Weierstrass第二逼近定理),只要階數(shù)足夠高,階三角函數(shù)就能以任何精度逼近給定的周期函數(shù)。這些理論表明,多項(xiàng)式函數(shù)類和三角函數(shù)類在函數(shù)空間是“稠密”的,這就保障了用這些函數(shù)類來作為逼近函數(shù)是“合理”的。

 

2.3.           逼近函數(shù)類選擇的“糾結(jié)”

在一個(gè)逼近問題中選擇什么樣的函數(shù)類作逼近函數(shù)類,這要取決于被逼近函數(shù)本身的特點(diǎn),也和逼近問題的條件、要求等因素有關(guān)。

在實(shí)際應(yīng)用中,這里其實(shí)存在著兩個(gè)非?!凹m結(jié)”的問題。

第一,選擇什么樣的逼近函數(shù)類?一般地,需要用戶對(duì)被逼近對(duì)象或樣本數(shù)據(jù)有一些“先驗(yàn)知識(shí)”來決定選擇具體的逼近函數(shù)類。比如,如果被逼近的函數(shù)具有周期性,將三角函數(shù)作為逼近函數(shù)是個(gè)合理的選擇;如果被逼近的函數(shù)具有奇點(diǎn),將有理函數(shù)作為逼近函數(shù)更為合理,等等。

第二,即使確定了逼近函數(shù)類,選擇多高的次數(shù)或階數(shù)?比如,如果選擇了多項(xiàng)式函數(shù)類,根據(jù)Lagrange插值定理,一定能找到一個(gè)次多項(xiàng)式來插值給定的個(gè)樣本點(diǎn)。但如果較大,則這樣得到的高次多項(xiàng)式很容易造成“過擬合”(Overfitting)。而如果選擇的過小,則得到的多項(xiàng)式容易造成“欠擬合”(Underfitting)。如圖2所示。過擬合或欠擬合函數(shù)在實(shí)際應(yīng)用中是沒有用的,因?yàn)樗鼈兊念A(yù)測能力非常差!

2. 用不同次數(shù)的多項(xiàng)式擬合樣本點(diǎn)(藍(lán)色點(diǎn))。

左:欠擬合;中:合適的擬合;右:過擬合。

 

這里有個(gè)概念需要提及一下。一個(gè)逼近函數(shù)“表達(dá)能力”體現(xiàn)在該函數(shù)的未知參數(shù)(即公式(2.1)-(2.3)中的系數(shù))與樣本點(diǎn)個(gè)數(shù)的差,也稱為“自由度”。如果逼近函數(shù)的未知參數(shù)越多,則表達(dá)能力越強(qiáng)。然而,在實(shí)際的擬合問題中,逼近函數(shù)的擬合能力并非越強(qiáng)越好。因?yàn)槿绻魂P(guān)注樣本點(diǎn)處的擬合誤差的話,非常強(qiáng)的表達(dá)能力會(huì)使得樣本點(diǎn)之外的函數(shù)值遠(yuǎn)遠(yuǎn)偏離期望的目標(biāo),反而降低擬合函數(shù)的預(yù)測性能,產(chǎn)生過擬合,如圖2 ()所示。

人們發(fā)展出各種方法來減緩(不能完全避免)過擬合。比如,剔除樣本點(diǎn)中的噪聲(數(shù)據(jù)去噪)、增加樣本點(diǎn)數(shù)據(jù)量(數(shù)據(jù)增廣)、簡化預(yù)測模型、獲取額外數(shù)據(jù)進(jìn)行交叉驗(yàn)證、或?qū)δ繕?biāo)函數(shù)進(jìn)行適當(dāng)?shù)恼齽t化等。在此不詳細(xì)敘述。

在實(shí)際應(yīng)用中,如何選擇擬合函數(shù)的數(shù)學(xué)模型(合適的逼近函數(shù)類及其階數(shù)),并不是一開始就能選好,往往須通過分析確定若干模型后,再經(jīng)過實(shí)際計(jì)算、比較和調(diào)整才能選到較好的模型。需要不斷的試驗(yàn)和調(diào)試(稱為“調(diào)參”過程),是個(gè)需要豐富經(jīng)驗(yàn)的“技術(shù)活”。

 

2.4.           最小二乘法(Least Squares Method

假設(shè)通過分析我們已經(jīng)確定了逼近函數(shù)類及其次數(shù)。記基函數(shù)(一般線性無關(guān))為。記為這些基函數(shù)所張成的線性空間(函數(shù)空間)。則逼近函數(shù)可記為

 

,

(2.5)

其中為待定權(quán)系數(shù)。

關(guān)于最小二乘法的一般提法是:對(duì)給定的一組樣本點(diǎn)數(shù)據(jù),要求在函數(shù)類中找一個(gè)函數(shù),使誤差的模的平方,即式(1.3),達(dá)到最小。

對(duì)于分析極小化誤差(1.3),可得關(guān)于系數(shù)向量的法方程

 

,

(2.6)

從而可求得

 

.

(2.7)

由于法方程是一個(gè)線性方程組,因此基于最小二乘法的函數(shù)求解也稱為線性回歸。

另外,我們可在誤差項(xiàng)中加個(gè)權(quán),表示不同點(diǎn)處的數(shù)據(jù)比重不同,此時(shí)稱為加權(quán)最小二乘方法(Weighted least squares, WLS)。另外,還有移動(dòng)最小二乘法(Moving least squares, MLS)等其他最小二乘法的改進(jìn)方法。此處不詳細(xì)敘述。

 

三、  稀疏表達(dá)和稀疏學(xué)習(xí)

 

在實(shí)際應(yīng)用中, 2.3節(jié)中所述的兩個(gè)“糾結(jié)”問題時(shí)有發(fā)生。人們發(fā)展出不同的方法來嘗試解決。

3.            

3.1.           嶺回歸(Ridge Regression

當(dāng)數(shù)據(jù)量較少的情況下,最小二乘法(線性回歸)容易出現(xiàn)過擬合的現(xiàn)象,法方程的系數(shù)矩陣會(huì)出現(xiàn)奇異(非滿秩),此時(shí)回歸系數(shù)會(huì)變得很大,無法求解。

這時(shí)在最小二乘法的結(jié)果(式(2.7))中加一個(gè)小擾動(dòng),使原先無法求廣義逆的情況變成可以求出其廣義逆,使得問題穩(wěn)定并得以求解,即

 

.

(3.1)

事實(shí)上,這個(gè)解對(duì)應(yīng)于如下極小化問題的解:

 

.

(3.2)

其中,參數(shù)稱為正則化參數(shù)(嶺參數(shù))。上述回歸模型稱為嶺回歸,其與最小二乘法的區(qū)別在于多了關(guān)于參數(shù)范數(shù)正則項(xiàng)。這一項(xiàng)是對(duì)的各個(gè)元素的總體的平衡程度,即限制這些權(quán)稀疏的方差不能太大。

實(shí)際應(yīng)用中,如果嶺參數(shù)選取過大,會(huì)把所有系數(shù)均最小化(趨向于0),造成欠擬合;如果嶺參數(shù)選取過小,會(huì)導(dǎo)致對(duì)過擬合問題解決不當(dāng)。因此嶺參數(shù)的選取也是一個(gè)技術(shù)活,需要不斷調(diào)參。對(duì)于某些情形,也可以通過分析選擇一個(gè)最佳的嶺參數(shù)來保證回歸的效果,在此不詳細(xì)敘述。

 

3.2.           Lasso回歸(Least Absolute Shrinkageand Selection Operator

Lasso回歸的極小化問題為:

 

,

(3.3)

其中,正則項(xiàng)為范數(shù)正則項(xiàng)。Lasso回歸能夠使得系數(shù)向量的一些元素變?yōu)?/span>0(稀疏),因此得到的擬合函數(shù)為部分基函數(shù)的線性組合。

 

3.3.           稀疏表達(dá)與稀疏學(xué)習(xí)

根據(jù)Lasso回歸的分析,我們可通過對(duì)回歸變量施加范數(shù)范數(shù)為元素中非0元素的個(gè)數(shù),在很多時(shí)候可以用范數(shù)近似)的正則項(xiàng),以達(dá)到對(duì)回歸變量進(jìn)行稀疏化,即大部分回歸變量為0(少數(shù)回歸變量非0)。這種優(yōu)化稱為稀疏優(yōu)化。也就是說,對(duì)回歸變量施加范數(shù)能夠“自動(dòng)”對(duì)基函數(shù)進(jìn)行選擇,值為0的系數(shù)所對(duì)應(yīng)的基函數(shù)對(duì)最后的逼近無貢獻(xiàn)。這些非0的基函數(shù)反映了的樣本點(diǎn)集合的“特征”,因此也稱為特征選擇

通過這種方法,為了保證防止丟失一些基函數(shù)(特征),我們往往可以多選取一些基函數(shù)(甚至可以是線性相關(guān)的),使得基函數(shù)的個(gè)數(shù)比輸入向量的維數(shù)還要大,稱為“超完備”基(Over-complete basis)或過冗余基,在稀疏學(xué)習(xí)中亦稱為“字典”。然后通過對(duì)基函數(shù)的系數(shù)進(jìn)行稀疏優(yōu)化,選擇出合適(非0系數(shù))的基函數(shù)的組合來表達(dá)逼近函數(shù)。

這在一定程度上克服了2.3節(jié)中所提出的兩個(gè)“糾結(jié)”的問題。因?yàn)?,這時(shí)可以選取較多的基函數(shù)及較高的次數(shù),通過稀疏優(yōu)化來選擇(“學(xué)習(xí)”)合適的基元函數(shù),也稱為稀疏學(xué)習(xí)。另外,基函數(shù)(字典)和稀疏系數(shù)也可以同時(shí)通過優(yōu)化學(xué)習(xí)得到,稱為字典學(xué)習(xí)。

對(duì)于矩陣形式(比如多元函數(shù)或圖像),矩陣的稀疏表現(xiàn)為矩陣的低秩(近似為核模很小),則對(duì)應(yīng)著矩陣低秩求解問題。在此不詳細(xì)敘述。

稀疏學(xué)習(xí)與最近十年來流行的壓縮感知(Compressive sensing)理論與方法非常相關(guān),也是機(jī)器學(xué)習(xí)領(lǐng)域的一種重要方法。其深厚的理論基礎(chǔ)由華裔數(shù)學(xué)家陶哲軒(2006年國際數(shù)學(xué)家大會(huì)菲爾茲獎(jiǎng)得主)、斯坦福大學(xué)統(tǒng)計(jì)學(xué)教授David Donoho2018年國際數(shù)學(xué)家大會(huì)高斯獎(jiǎng)得主)等人所建立,已成功用于信號(hào)處理、圖像與視頻處理、語音處理等領(lǐng)域。在此不詳細(xì)展開介紹。

近年來,筆者及其團(tuán)隊(duì)成功地將稀疏學(xué)習(xí)的理論和方法推廣用于三維幾何建模與處理中,在計(jì)算機(jī)圖形學(xué)領(lǐng)域已發(fā)表十余篇相關(guān)論文(包括在頂級(jí)期刊ACM Transactions onGraphics上發(fā)表了4篇論文)。有興趣的讀者可詳細(xì)查看筆者相關(guān)論文

[3-1]Xu et al. Survey on Sparsity in Geometry Modeling and Processing. GraphicalModels, 82, 160-180, 2015. (三維幾何處理的稀疏優(yōu)化方法的綜述論文)

[3-2]Wang et al. Construction of Manifolds via Compatible Sparse Representations.ACM Transactions on Graphics, 35(2), Article 14: 1-10, 2016. (基于基函數(shù)稀疏選擇的曲面生成)

[3-3]Xiong et al. Robust Surface Reconstruction via Dictionary Learning. ACMTransactions on Graphics (Proc. Siggraph Asia), 33(6), Article 1: 1-12, 2014. (基于字典學(xué)習(xí)的曲面重建)

[3-4]Zhang et al. Local Barycentric Coordinates. ACM Transactions on Graphics (Proc.Siggraph Asia), 33(6), Article 1: 1-12, 2014. (基于稀疏優(yōu)化的局部重心坐標(biāo))

[3-5]Hu et al. Co-Segmentation of 3D Shapes via Subspace Clustering. ComputerGraphics Forum (Proc. Symposium on Geometry Processing), 31(5): 1703-1713,2012. (基于特征稀疏選擇的三維形狀共同分割)

[3-6]Jin et al. Unsupervised Upright Orientation of Man-Made Models. GraphicalModels (Proc. GMP), 74(4): 99-108, 2012. (基于矩陣低秩優(yōu)化的三維形狀正向計(jì)算)

3. 稀疏學(xué)習(xí)方法用于三維幾何的建模與處理(筆者的工作)。

 

四、  高維的逼近函數(shù)

 

上面討論了映射為一元函數(shù)的情形。上述的有關(guān)概念和方法同樣可以推廣至多元函數(shù)()及向量值函數(shù)()的情形(如圖4)。

4. 不同情形(維數(shù))的逼近函數(shù)。

左上:一元函數(shù);右上:多元函數(shù);左下:一元向量值函數(shù);右下:多元向量值函數(shù)。

 

4.            

4.1.           多元函數(shù)

假設(shè)有多元函數(shù),即,的一組測量樣本數(shù)據(jù)。設(shè)中的一組基函數(shù)為。要求函數(shù)

 

,

(4.1)

使得誤差

 

 

(4.2)

的平方和最小。這與式(1.3)2.4節(jié)的極值問題完全一樣。系數(shù), 同樣通過求解法方程得到。上述過程稱為多元函數(shù)的最小二乘擬合。

在函數(shù)論中,高維空間中的基函數(shù)的構(gòu)造也有許多方法。為了簡便,在許多時(shí)候我們采用張量積形式的基函數(shù),即每個(gè)基函數(shù)是各個(gè)維數(shù)的一元基函數(shù)的乘積形式。在計(jì)算機(jī)圖形學(xué)和計(jì)算機(jī)輔助幾何設(shè)計(jì)(CG&CAGD)領(lǐng)域經(jīng)常采用。

 

4.2.           向量值函數(shù)

如果因變量有多個(gè),即,稱為向量值函數(shù)。比如空間螺旋線的參數(shù)方程

 

 

(4.3)

 

 

 

就是一個(gè)從一維到三維的向量值函數(shù)。如果自變量的維數(shù)比應(yīng)變量的維數(shù)低,則自變量可看作為應(yīng)變量的參數(shù)。在式(4.3)中,變量可看作為該螺旋線的參數(shù)。

對(duì)于向量值函數(shù),可以看成是多個(gè)一元函數(shù)或多元函數(shù)(一般共享基函數(shù))即可,所有處理方法(包括最小二乘法)都是對(duì)每個(gè)函數(shù)分別操作的,與前面單個(gè)函數(shù)的處理方法完全一樣。如果用數(shù)學(xué)方式來表達(dá),前面的很多符號(hào)由向量變?yōu)榫仃嚨男问蕉选T敿?xì)可查看《數(shù)學(xué)分析》。

 

五、  參數(shù)曲線曲面擬合

 

前面討論的函數(shù)所能表達(dá)的曲線比較簡單,無法表達(dá)封閉和多值的曲線。因此,在計(jì)算機(jī)圖形學(xué)和計(jì)算機(jī)輔助幾何設(shè)計(jì)中常用參數(shù)曲線曲面(本質(zhì)是向量值函數(shù),見4.2節(jié))來表達(dá)幾何形狀,用于幾何造型。另外,在計(jì)算機(jī)圖形學(xué)中還有一種利用隱函數(shù)來表達(dá)曲線的方式,也常用于造型中,這里不展開介紹。

 

5.            

5.1.           二維參數(shù)曲線

從數(shù)學(xué)來看,一條曲線的本征維度是一維的,不論是從哪個(gè)維度的空間來看。從直觀來看,該曲線能被“拉”成為一條直線或線段;即,一條有端點(diǎn)的曲線能和一條線段建立1-1對(duì)應(yīng),如圖5(左)所示。因此,嵌入到二維空間中的曲線可由單個(gè)參數(shù)來表達(dá),即有如下形式的參數(shù)形式:

 

(5.1)

 

 

 

其中為該曲線的參數(shù),, 均為的函數(shù),分別表示曲線上對(duì)應(yīng)于參數(shù)的點(diǎn)的兩個(gè)坐標(biāo)分量。一般參數(shù)曲線表達(dá)為。本質(zhì)上,這是一個(gè)從的向量值函數(shù)。

 

5.2.           三維參數(shù)曲面

類似地,一張二維流形曲面的本征維度是二維的。一張曲面能與平面上的一塊區(qū)域建立1-1對(duì)應(yīng),如圖5(右)所示。因此,嵌入到三維空間中的曲面可由兩個(gè)參數(shù)來表達(dá),即有如下形式的參數(shù)形式:

 

 

(5.2)

 

 

 

其中為該曲面的參數(shù),, 均為的二元函數(shù),分別表示曲面上對(duì)應(yīng)于參數(shù)的點(diǎn)的三個(gè)坐標(biāo)分量。一般參數(shù)曲面表達(dá)為。本質(zhì)上,這是一個(gè)從的向量值函數(shù)。

 

5. 參數(shù)曲線曲面。左:單參數(shù)曲線;右:雙參數(shù)曲面。

 

5.3.           參數(shù)曲線曲面擬合

下面我們介紹如何使用參數(shù)曲線來擬合2D平面上的一組有序樣本點(diǎn)。

參數(shù)曲線擬合的問題描述如下:給定平面上一組有序樣本點(diǎn),我們希望尋求一條擬合這些點(diǎn)的參數(shù)曲線關(guān)系。

如需決定一條擬合曲線,首先需要確定每個(gè)樣本點(diǎn)所對(duì)應(yīng)的參數(shù)。對(duì)于一組有序的樣本點(diǎn),所確定的一種參數(shù)分割,稱之為這組樣本點(diǎn)的參數(shù)化。參數(shù)化的本質(zhì)就是找一組恰當(dāng)?shù)膮?shù)來匹配這一組樣本點(diǎn),以便使這條擬合出來的曲線美觀、合理。

在參數(shù)曲線擬合中,樣本點(diǎn)的參數(shù)化是個(gè)非?;径匾膯栴}。不同的參數(shù)化,對(duì)擬合曲線的形狀會(huì)產(chǎn)生很大的影響。圖6顯示了三種參數(shù)化(均勻參數(shù)化、弦長參數(shù)化和中心參數(shù)化)對(duì)擬合曲線形狀的影響。

6. 不同的參數(shù)化導(dǎo)致不同的參數(shù)曲線擬合結(jié)果。

類似地,如果利用參數(shù)曲面來擬合空間中給定的一組樣本點(diǎn),首先也需要確定這些樣本點(diǎn)在平面上的參數(shù)化,如圖7所示。在曲面參數(shù)化中,不僅需要建立樣本點(diǎn)及其參數(shù)的一一對(duì)應(yīng),我們還希望參數(shù)區(qū)域的網(wǎng)格保持原始網(wǎng)格的一些重要的幾何特性,比如角度、邊長等。

7. 三維曲面的參數(shù)化。

曲面參數(shù)化是計(jì)算機(jī)圖形學(xué)中非?;A(chǔ)且重要的一個(gè)研究課題,也一直是研究熱點(diǎn)之一。筆者及所在的課題組也在這個(gè)課題方面作了大量的工作,有興趣的讀者可詳細(xì)查看筆者的相關(guān)論文

(平面參數(shù)化)

[5-1]Ligang Liu, Lei Zhang, Yin Xu, Craig Gotsman, Steven J. Gortler.  ALocal/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. ProgressiveParameterizations.  ACM Transactions on Graphics (Proc. Siggraph), 37(4),Article 41: 1-12, 2018.

(球面參數(shù)化)

[5-3]Xin Hu, Xiao-Ming Fu, Ligang Liu. Advanced Hierarchical SphericalParameterizations. IEEE Transactions on Visualization and Computer Graphics, toappear, 2018.

[5-4]Chunxue Wang, Xin Hu, Xiaoming Fu, Ligang Liu. Bijective SphericalParametrization with Low Distortion. Computers&Graphics (Proc. SMI), 58:161-171, 2016.

[5-5]Chunxue Wang, Zheng Liu, Ligang Liu. As-Rigid-As-Possible SphericalParameterization. Graphical Models (Proc. GMP), 76(5): 457-467, 2014.

(流形參數(shù)化)

[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.

 

 

六、  從人工神經(jīng)網(wǎng)絡(luò)的觀點(diǎn)來看擬合函數(shù)

 

為了講清楚人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN),下面我們先從神經(jīng)網(wǎng)絡(luò)的觀點(diǎn)來看傳統(tǒng)的擬合函數(shù)和曲線曲面。

 

6.            

6.1.           一元函數(shù)

對(duì)于一元的逼近函數(shù)

 

.  

(6.1)

可以看成為如圖8的三層神經(jīng)網(wǎng)絡(luò),其中只有一個(gè)隱層。隱層上有個(gè)節(jié)點(diǎn),激活函數(shù)分別為基函數(shù)(從這里我們將基函數(shù)稱為“激活函數(shù)”)。輸入層到隱層的權(quán)設(shè)為常值1(圖8左),也可以看成為將輸入層的值“直接代入”(不做任何變換,用虛線表示)到激活函數(shù)(圖8右)。隱層到輸出層的權(quán)為基函數(shù)的組合系數(shù)。

中間隱層的輸出節(jié)點(diǎn)所形成的向量可看作為輸入量的“特征”。

現(xiàn)在我們開始用機(jī)器學(xué)習(xí)的語言來描述數(shù)據(jù)擬合的過程。整個(gè)神經(jīng)網(wǎng)絡(luò)就是由中間節(jié)點(diǎn)的激活函數(shù)及權(quán)系數(shù)所決定的一個(gè)函數(shù)(6.1)。我們稱樣本點(diǎn), 為訓(xùn)練數(shù)據(jù)(Training set),稱函數(shù)在訓(xùn)練數(shù)據(jù)上的誤差度量為損失函數(shù)(Loss function)。通過訓(xùn)練數(shù)據(jù)來極小化損失函數(shù)得到權(quán)系數(shù)的過程稱為“訓(xùn)練”或“學(xué)習(xí)”。如果損失函數(shù)取為(1.3)的形式,則網(wǎng)絡(luò)的訓(xùn)練過程本質(zhì)上就是前面所講的最小二乘法(2.4節(jié))。

    

8. 一元逼近函數(shù)的神經(jīng)網(wǎng)絡(luò)。左:輸入層到隱層的權(quán)系數(shù)均為常值1;

右:輸入層到隱層看成為“直接代入”(用虛線表示)。

 

 

6.2.           多元函數(shù)和向量值函數(shù)

考慮一般的逼近函數(shù)。設(shè)中的一組基函數(shù)為。則函數(shù)可看成為如下圖的一個(gè)三層的神經(jīng)網(wǎng)絡(luò)。注意這里隱層的激活函數(shù)都是維函數(shù),從輸入層到隱層也是直接代入。輸出層的各個(gè)分量共享隱層的激活函數(shù)。

9. 多元函數(shù)和向量值函數(shù)的神經(jīng)網(wǎng)絡(luò)。從輸入層到隱層是變量直接代入到激活函數(shù)。

 

6.3.           擬合曲線曲面

擬合曲線可以看作為一個(gè)多層的神經(jīng)網(wǎng)絡(luò),如下圖所示。輸入層(樣本點(diǎn))到參數(shù)化是一個(gè)變換,可看成為一個(gè)神經(jīng)網(wǎng)絡(luò);參數(shù)化到輸出層是一個(gè)變換(單變量基函數(shù)組合),也是一個(gè)神經(jīng)網(wǎng)絡(luò)。輸出層的兩個(gè)分量共享基函數(shù)。

隱層1的激活函數(shù)為雙變量基函數(shù);隱層3的激活函數(shù)為單變量基函數(shù)。中間隱層(隱層12、3)的輸出節(jié)點(diǎn)所形成的向量均可分別看作為輸入量在不同維數(shù)空間的“特征”。

10. 擬合曲線的神經(jīng)網(wǎng)絡(luò)。輸入層(樣本點(diǎn))到參數(shù)化是一個(gè)神經(jīng)網(wǎng)絡(luò)變換;

參數(shù)化到輸出層是一個(gè)神經(jīng)網(wǎng)絡(luò)變換。

 

類似地,擬合曲面也可以看作為一個(gè)如下圖的多層神經(jīng)網(wǎng)絡(luò)。

11. 擬合曲面的神經(jīng)網(wǎng)絡(luò)。

 

從曲線曲面擬合的過程及神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來看,如果將整個(gè)網(wǎng)絡(luò)進(jìn)行優(yōu)化,則擬合的過程是尋求樣本點(diǎn)的參數(shù)化以及表達(dá)函數(shù)的基函數(shù),使得擬合誤差極小化。在這里,我們是知道給定樣本點(diǎn)的“本征維數(shù)”,因此,人為設(shè)置了第一個(gè)隱層的維數(shù)為1(曲線)或2(曲面)。然而,在實(shí)際應(yīng)用中,我們并不知道數(shù)據(jù)的本征維數(shù),此時(shí)需要利用其他方法(比如流形學(xué)習(xí)或降維方法)來“檢測”或“猜測”隱層的維數(shù),或者直接根據(jù)經(jīng)驗(yàn)來不斷調(diào)參和測試。

需要提及的是,在計(jì)算機(jī)圖形學(xué)中,傳統(tǒng)的大部分方法是將參數(shù)化的問題和曲線曲面擬合問題分為兩個(gè)問題來解決。有些工作專門做參數(shù)化,有些工作專門研究擬合問題。其中參數(shù)化的工作更為重要,直接決定了擬合曲線曲面的質(zhì)量。此處不詳述。

需要注意的是,本節(jié)只是從神經(jīng)網(wǎng)絡(luò)的觀點(diǎn)來看曲線曲面的參數(shù)化和擬合的問題。在計(jì)算機(jī)圖形學(xué)中,我們不是簡單的通過上述網(wǎng)絡(luò)來求參數(shù)化(單個(gè)樣本點(diǎn)),而是要考慮更多的樣本點(diǎn)一起來求解參數(shù)化。這個(gè)后面還會(huì)詳細(xì)介紹。

 

七、  通用人工神經(jīng)網(wǎng)絡(luò)

 

有了上述的理解,我們現(xiàn)在來理解和解釋人工神經(jīng)網(wǎng)絡(luò)就非常容易了。

7.            

7.1.           函數(shù)擬合回顧

回顧前面所述的函數(shù)逼近論中的函數(shù)擬合問題,始終是存在著兩個(gè)“糾結(jié)”。一是選擇什么樣的逼近函數(shù)類,即選擇什么類型的基函數(shù)?二是選擇多高的次數(shù)或階數(shù)?

另一方面,如果從圖8或圖9的神經(jīng)網(wǎng)絡(luò)的觀點(diǎn)來看,網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)置都存在著如下兩個(gè)“糾結(jié)”:

1.      隱層中的節(jié)點(diǎn)中使用什么樣的激活函數(shù)(基函數(shù))?

2.      隱層中設(shè)置多少個(gè)節(jié)點(diǎn)(基函數(shù)的次數(shù))?

在傳統(tǒng)逼近論中,上述兩個(gè)問題就沒有好方法來解決(第一個(gè)問題針對(duì)具體問題可預(yù)先設(shè)定),是通過不斷試錯(cuò)來看結(jié)果的好壞來決定的。這是因?yàn)椋m然有些基函數(shù)的性質(zhì)很好,但是次數(shù)或階數(shù)過高(比如多項(xiàng)式基或三角函數(shù)基),就會(huì)產(chǎn)生震蕩,也容易產(chǎn)生過擬合,使得擬合函數(shù)的性態(tài)不好。因此,一般不會(huì)采用次數(shù)或結(jié)束太高的基函數(shù)。為此,人們發(fā)展了分段擬合方法,即將數(shù)據(jù)分為若干段,每段分別擬合,各段的擬合函數(shù)保證一定的光滑性,稱為樣條函數(shù)。在逼近論和計(jì)算機(jī)圖形學(xué)領(lǐng)域,人們發(fā)展出了很多漂亮的樣條的理論與方法。

對(duì)于參數(shù)類型的高維曲線曲面,還存在著參數(shù)化的問題,這時(shí)還存在另一個(gè)糾結(jié),就是要設(shè)置多少個(gè)隱層(圖10和圖11)?

 

7.2.           使用簡單元函數(shù)作為激活函數(shù)

為了克服上述兩個(gè)糾結(jié)的問題,是否可以通過其他形式來生成“基函數(shù)”?注意到,對(duì)于任意一個(gè)非常值的一元函數(shù),這里我們稱為元函數(shù),其沿著方向的平移函數(shù)以及沿著方向的伸縮函數(shù)都與原函數(shù)線性無關(guān)。也就是說,如果能有足夠多的變換所生成的函數(shù),其線性組合所張成的函數(shù)空間就能有充分的表達(dá)能力。那么這些函數(shù)(可能都線性無關(guān))是否能構(gòu)成逼近一般函數(shù)的“基函數(shù)”呢?

 

一個(gè)自然的想法就是,我們能否以這個(gè)作為激活函數(shù),讓網(wǎng)絡(luò)自動(dòng)地去學(xué)習(xí)這些激活函數(shù)的變換,或者說去學(xué)習(xí)一些“基函數(shù)”,來表達(dá)所需要的擬合函數(shù)呢?這就是圖12所示的神經(jīng)元。變量乘以一個(gè)伸縮,加上一個(gè)平移(稱為偏置“bias”),即變量的仿射變換,成為神經(jīng)元的輸入;然后通過激活函數(shù)復(fù)合后成為該神經(jīng)元的輸出

12. 一元(單變量)函數(shù)的神經(jīng)元結(jié)構(gòu)。

對(duì)于多變量的情形(多元函數(shù)),神經(jīng)元的結(jié)構(gòu)如圖13所示。變量的線性組合,加上一個(gè)平移(稱為偏置“bias”),即變量的仿射變換,成為神經(jīng)元的輸入;然后通過激活函數(shù)復(fù)合后成為該神經(jīng)元的輸出。

13. 多元(多變量)函數(shù)的神經(jīng)元結(jié)構(gòu)。

不失一般性,我們下面就直接以多元函數(shù)的形式來介紹一般神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。對(duì)于向量值函數(shù)(是多維的),則分別將的各個(gè)維數(shù)分別看作一個(gè)多元函數(shù)處理而已,這些函數(shù)共享節(jié)點(diǎn)(基函數(shù))即可。

 

7.3.           單隱層神經(jīng)網(wǎng)絡(luò)

一個(gè)多元函數(shù)的神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖14所示,有一個(gè)輸入層,一個(gè)隱層及一個(gè)輸出層。輸入層除了變量外,還有一個(gè)常數(shù)節(jié)點(diǎn)1;隱層包含多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的激活函數(shù)都是,隱層的輸出就是輸入層節(jié)點(diǎn)的線性組合加偏置(即仿射變換)代入到激活函數(shù)的復(fù)合函數(shù);輸出層是這些復(fù)合函數(shù)的組合

這個(gè)網(wǎng)絡(luò)的所有權(quán)系數(shù),(輸入層與隱層之間的權(quán)及偏置項(xiàng))及(隱層與輸出層之間的權(quán),此層一般不用偏置項(xiàng))作為這個(gè)神經(jīng)網(wǎng)絡(luò)的參數(shù)變量,需要通過極小化損失函數(shù)來求解的。這個(gè)過程稱為“訓(xùn)練”或“學(xué)習(xí)”。

與前面所述的逼近論中的擬合函數(shù)類似,網(wǎng)絡(luò)的隱層的節(jié)點(diǎn)數(shù)是需要通過不斷調(diào)試和嘗試來確定的。隱層的節(jié)點(diǎn)輸出稱為輸入數(shù)據(jù))的“特征”。

14. 多元(多變量)函數(shù)的單隱層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。

整個(gè)網(wǎng)絡(luò)的學(xué)習(xí)過程本質(zhì)上就是在學(xué)習(xí)所有的系數(shù)參數(shù)。最后得到的擬合函數(shù)為一些函數(shù)的線性組合表達(dá)。這些組合函數(shù)實(shí)質(zhì)上就是表達(dá)函數(shù)的“基函數(shù)”!

從函數(shù)逼近論的角度,我們可以這樣來理解神經(jīng)網(wǎng)絡(luò):神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程本質(zhì)上是在學(xué)習(xí)基函數(shù)!這些基函數(shù)是通過激活函數(shù)通過平移和伸縮(變量的仿射變換)來得到的!

當(dāng)然,天下沒有免費(fèi)的午餐。以前函數(shù)逼近論無法解決的兩個(gè)“糾結(jié)”這里仍然存在:

第一個(gè)糾結(jié)是如何選取基函數(shù)?這里使用激活函數(shù),然后學(xué)習(xí)其變換來得到。

第二個(gè)糾結(jié)是選擇多少個(gè)基函數(shù)?這里為隱層的神經(jīng)元個(gè)數(shù)。

從這個(gè)觀點(diǎn)來看,神經(jīng)網(wǎng)絡(luò)本質(zhì)上就是傳統(tǒng)的逼近論中的逼近函數(shù)的一種推廣。它不是通過指定的理論完備的基函數(shù)來表達(dá)函數(shù)的,而是通過簡單的基元函數(shù)(激活函數(shù))的不斷變換得到的“基函數(shù)”來表達(dá)函數(shù)的。實(shí)質(zhì)上是二層復(fù)合函數(shù)。

此時(shí),我們當(dāng)然要問個(gè)問題:將函數(shù)經(jīng)過充分多的平移和伸縮(包括它們的組合)所線性張成的函數(shù)空間,其表達(dá)能力有多強(qiáng)?這個(gè)函數(shù)空間是否在所有函數(shù)空間是稠密的?如果問題是正確的,那么就是說,對(duì)于任何一個(gè)給定的函數(shù),總能找到函數(shù)的多次平移和縮放的函數(shù),其線性組合能夠逼近給定的這個(gè)函數(shù);也就是說,圖14中的神經(jīng)網(wǎng)絡(luò)只要隱層的節(jié)點(diǎn)數(shù)足夠多,該網(wǎng)絡(luò)所表達(dá)的函數(shù)就能逼近任意的函數(shù)。

幸運(yùn)的是,上述猜想在很多情況下是成立的!有以下的萬能逼近定理所保證。

 

7.4.           萬能逼近定理

空間中的單位立方體,我們在這個(gè)定義域中來描述萬能逼近定理。記上的連續(xù)函數(shù)空間,上的可測函數(shù)空間,上相對(duì)測度的可積函數(shù)空間(即)。

設(shè)給定一元激活函數(shù),首先給出如下定義。

【定義7.1】稱函數(shù)為壓縮函數(shù),如果單調(diào)不減,且滿足

,  .

【定義7.2】稱函數(shù)為可分辨的,若對(duì)于有限測度,由

,

可得到

【定義7.3】記

為所有由激活函數(shù)變換及線性累加所構(gòu)成的維函數(shù)空間(即具有個(gè)節(jié)點(diǎn)的單隱層神經(jīng)網(wǎng)絡(luò)所表達(dá)的維函數(shù))。

 

【定理7.1】若是壓縮函數(shù),則中一致稠密,在中按如下距離下稠密:

.

【定理7.2】若是可分辨的,則中按連續(xù)函數(shù)距離下稠密。

【定理7.3】若是連續(xù)有界的非常值函數(shù),則中稠密。

【定理7.4】若是無界的非常值函數(shù),則中稠密。

 

上述定理這里就不詳細(xì)解釋,稍微有些實(shí)分析和泛函分析的基礎(chǔ)就能看懂。用通俗的話來說,就是:對(duì)任意給定的一個(gè)中的函數(shù),只要項(xiàng)數(shù)足夠多,中就存在一個(gè)函數(shù),使得在一定精度下逼近。也就是說,圖14所表達(dá)的單隱層的神經(jīng)網(wǎng)絡(luò)所表達(dá)的維函數(shù)能夠逼近中的任意一個(gè)函數(shù)。

根據(jù)上述定理可知,函數(shù)只要滿足一定條件即可作為一個(gè)合適的激活函數(shù)。但還是存在著一個(gè)巨大的“糾結(jié)”,就是隱層中的節(jié)點(diǎn)數(shù)量該取多大,仍是未知的。在實(shí)際中,這個(gè)是要不斷通過測試和調(diào)試來決定的,這個(gè)過程稱為“調(diào)參”。

定理7.1-7.4的詳細(xì)證明可見以下論文。

[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.           深度神經(jīng)網(wǎng)絡(luò):多隱層神經(jīng)網(wǎng)絡(luò)

將上述的神經(jīng)網(wǎng)絡(luò)的隱層進(jìn)一步推廣到多層,即可得到多隱層的神經(jīng)網(wǎng)絡(luò),即深度神經(jīng)網(wǎng)絡(luò)(深度的意思就是多層)。其網(wǎng)絡(luò)結(jié)構(gòu)如圖15所示。

由于每相鄰的兩層的節(jié)點(diǎn)都是全部連接的,因此在機(jī)器學(xué)習(xí)領(lǐng)域,也叫做全連接神經(jīng)網(wǎng)絡(luò)或多層感知機(jī)(Multi-Layer Perceptron, MLP)。

15只是顯示了的函數(shù)的神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。對(duì)于一般的的向量值函數(shù),只要將最后輸出層多幾個(gè)節(jié)點(diǎn)即可,即,每個(gè)維度分量都是一個(gè)的函數(shù),共享了前面的所有網(wǎng)絡(luò)層結(jié)構(gòu)。

每個(gè)隱層的輸出 都可以看成輸入數(shù)據(jù)在不同維數(shù)空間下的 “特征”。

注意不要在輸出層使用激活函數(shù)。因?yàn)樽詈蟮妮敵鼍褪悄切┗瘮?shù)的線性組合表達(dá)即可。

從數(shù)學(xué)上看,深度神經(jīng)網(wǎng)絡(luò)就是一個(gè)多層復(fù)合函數(shù)。萬有逼近定理仍然成立。

15. 多元(多變量)函數(shù)的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。

類似地,深度神經(jīng)網(wǎng)絡(luò)也能很強(qiáng)地表達(dá)中的任意的函數(shù)。在具體應(yīng)用中,選用多少個(gè)隱層,每一隱層選用多少節(jié)點(diǎn),這些都是需要根據(jù)損失函數(shù)的進(jìn)行不斷調(diào)試的。這個(gè)過程也稱為“調(diào)參”。

 

八、  深入理解深度神經(jīng)網(wǎng)絡(luò)

 

8.            

8.1.           激活函數(shù)

7.4節(jié)中的萬能逼近定理可知,激活函數(shù)的選擇可以很多種。常用的激活函數(shù)如圖16所示。

16. 常用的激活函數(shù)。

 

在早期,Sigmoid函數(shù)和tanh函數(shù)是人們經(jīng)常使用的激活函數(shù)。近年來,隨著神經(jīng)網(wǎng)絡(luò)的隱層不斷增加后,人們偏向于使用ReLU函數(shù)作為激活函數(shù),這是因?yàn)?/span>ReLU函數(shù)的在x軸正向的導(dǎo)數(shù)是1,不容易產(chǎn)生梯度消失問題(見8.3節(jié))。這里值得一提的是,如果使用ReLU函數(shù)作為激活函數(shù),則最后生成的擬合函數(shù)為分片線性函數(shù)。

關(guān)于激活函數(shù)的解釋和討論,機(jī)器學(xué)習(xí)領(lǐng)域及互聯(lián)網(wǎng)上有很多文章進(jìn)行過解釋,都是解釋為“激活函數(shù)的主要作用是提供網(wǎng)絡(luò)的非線性建模能力,提供了分層的非線性映射學(xué)習(xí)能力”等等。我們從逼近論的角度,將非線性激活函數(shù)解釋為擬合函數(shù)的“基函數(shù)”生成器(如果激活函數(shù)為線性的,則無法生成表達(dá)非線性函數(shù)的基!),訓(xùn)練神經(jīng)網(wǎng)絡(luò)就是在學(xué)習(xí)這些基函數(shù),這是一種全新的觀點(diǎn),也是非常容易理解的。

 

8.2.           反向傳播算法(BP優(yōu)化算法)

從數(shù)學(xué)上看,深度神經(jīng)網(wǎng)絡(luò)就是一個(gè)多層復(fù)合函數(shù)。在機(jī)器學(xué)習(xí)中,這個(gè)復(fù)合函數(shù)的好壞依賴于對(duì)目標(biāo)函數(shù)最大化或者最小化的過程,我們常常把最小化的目標(biāo)函數(shù)稱為損失函數(shù)(Loss function),它主要用于衡量機(jī)器學(xué)習(xí)模型(此處為深度神經(jīng)網(wǎng)絡(luò))的預(yù)測能力。常見的損失函數(shù)有均方誤差(L2誤差)、平均絕對(duì)誤差(L1誤差)、分位數(shù)損失、交叉熵、對(duì)比損失等。損失函數(shù)的選取依賴于參數(shù)的數(shù)量、異常值、機(jī)器學(xué)習(xí)算法、梯度下降的效率、導(dǎo)數(shù)求取的難易和預(yù)測的置信度等若干方面。這里就不展開討論。

給定了一批訓(xùn)練數(shù)據(jù),計(jì)算神經(jīng)網(wǎng)絡(luò)的問題就是通過極小化損失函數(shù)來找到網(wǎng)絡(luò)中的所有權(quán)值參數(shù)(包括偏置參數(shù))。這個(gè)過程本質(zhì)上就是利用這個(gè)神經(jīng)網(wǎng)絡(luò)函數(shù)來擬合這些數(shù)據(jù),這個(gè)過程也稱為“訓(xùn)練”或“學(xué)習(xí)”。

誤差反向傳播算法(ErrorBack Propagation,BP)是神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)采用的一種通用方法。本質(zhì)是隨機(jī)梯度下降法。最早見于如下論文:

[8-1]David E. Rumelhart, Geoffrey E. Hinton, and Ronald J. Williams. Learninginternal representations by back-propagating errors. Nature, 323(99): 533-536,1986.

由于整個(gè)網(wǎng)絡(luò)是一個(gè)復(fù)合函數(shù),因此,訓(xùn)練的過程就是不斷地應(yīng)用“復(fù)合函數(shù)求導(dǎo)”(鏈?zhǔn)椒▌t)及“梯度下降法”。反向傳播算法從神經(jīng)網(wǎng)絡(luò)的輸出層開始,利用遞推公式根據(jù)后一層的誤差計(jì)算本層的誤差,通過誤差計(jì)算本層參數(shù)的梯度值,然后將差項(xiàng)傳播到前一層。然后根據(jù)這些誤差來更新這些系數(shù)參數(shù)。

值得一提的是,梯度下降法并不是唯一的優(yōu)化方法。也有不少人使用其他優(yōu)化方法,比如ADMM方法,來作為優(yōu)化器優(yōu)化深度神經(jīng)網(wǎng)絡(luò)的求解。

 

 

8.3.           什么是好的激活函數(shù)?

由萬能逼近定理可知,只要網(wǎng)絡(luò)規(guī)模設(shè)計(jì)得當(dāng),使用非線性函數(shù)作為激活函數(shù)(比如8.1節(jié)中常用的激活函數(shù))的逼近能力都能夠得到保證。

然后,由上一節(jié)的反向傳播算法可知,算法過程中計(jì)算誤差項(xiàng)時(shí)每一層都要乘以本層激活函數(shù)的導(dǎo)數(shù),因此,會(huì)發(fā)生很多次的導(dǎo)數(shù)連乘。如果激活函數(shù)的導(dǎo)數(shù)的絕對(duì)值小于1,多次連乘之后誤差項(xiàng)很快會(huì)衰減到接近于0;而參數(shù)的梯度值由誤差項(xiàng)計(jì)算得到,從而導(dǎo)致前面層的權(quán)重梯度接近于0,參數(shù)不能得到有效更新,這稱為“梯度消失”問題。與之相反,如果激活函數(shù)導(dǎo)數(shù)的絕對(duì)值大于1,多次連乘后權(quán)重值會(huì)趨向于非常大的數(shù),這稱為“梯度爆炸”。長期以來,這兩個(gè)問題一直困擾神經(jīng)網(wǎng)絡(luò)層次無法變得很深。

最近幾年,ReLU函數(shù)被經(jīng)常使用作為深度神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。有兩個(gè)主要理由:

1)      該函數(shù)的導(dǎo)數(shù)為sgn(忽略在0處不可導(dǎo)的情形),計(jì)算簡單,在正半軸導(dǎo)數(shù)為1,有效的緩解了梯度消失問題;

2)      雖然它是一個(gè)分段線性函數(shù),但它具有非線性逼近能力;使用ReLU激活函數(shù)的深度網(wǎng)絡(luò)的本質(zhì)是用分段(分片)線性函數(shù)(超平面)去逼近目標(biāo)。

后來,人們在ReLU的基礎(chǔ)上又改進(jìn)得到各種其他形式的激活函數(shù),包括ELU、PReLU等。

 

8.4.           多個(gè)隱層的幾何意義

現(xiàn)在我們已經(jīng)理解了深度神經(jīng)網(wǎng)絡(luò)的本質(zhì),就是一個(gè)復(fù)雜的多層復(fù)合函數(shù)。訓(xùn)練的過程就是在求激活函數(shù)變換得到的“基函數(shù)”,因此,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的本質(zhì)就是在“學(xué)習(xí)基函數(shù)”。這跟稀疏學(xué)習(xí)中的“字典學(xué)習(xí)”非常類似。殊途同歸!

我們來看一下深度神經(jīng)網(wǎng)絡(luò)所表達(dá)的擬合函數(shù)與傳統(tǒng)所用的擬合函數(shù)(2.1節(jié))的類比與區(qū)別:

(1)   傳統(tǒng)的擬合函數(shù)是在某一函數(shù)類(由某些具有良好性質(zhì)的基函數(shù)所張成的函數(shù)空間)中進(jìn)行選擇。基函數(shù)是預(yù)先給定的,個(gè)數(shù)也是預(yù)先設(shè)定的(或者稀疏選擇的)。系統(tǒng)的求解變量是基函數(shù)組合系數(shù);

(2)   神經(jīng)網(wǎng)絡(luò)所表達(dá)的擬合函數(shù)是由某一激活函數(shù)對(duì)變量的平移和伸縮變換而來,個(gè)數(shù)是預(yù)先設(shè)定的(神經(jīng)元個(gè)數(shù))。系統(tǒng)的求解變量是基函數(shù)的變換,因此可以看成是在學(xué)習(xí)基函數(shù);

(3)   傳統(tǒng)的擬合函數(shù)也是一種神經(jīng)網(wǎng)絡(luò)(見第6節(jié)),因此也可以拓展成深度網(wǎng)絡(luò)(復(fù)合函數(shù)),但問題是次數(shù)或階數(shù)經(jīng)過復(fù)合后會(huì)變得非常高,更易造成過擬合;

(4)   多層神經(jīng)網(wǎng)絡(luò)中的不同層所用的激活函數(shù)也可以使用傳統(tǒng)的基函數(shù)。因此,還可推廣為更一般的深度神經(jīng)網(wǎng)絡(luò)。

那么為何要用多個(gè)隱層呢?事實(shí)上,通過6.3節(jié)的內(nèi)容就不難理解了。每個(gè)隱層就是將前一層的數(shù)據(jù)作為輸入(當(dāng)然也包括輸入層數(shù)據(jù))在當(dāng)前這個(gè)維數(shù)的空間中的一種映射,本質(zhì)上就是在做“參數(shù)化”!

如果當(dāng)前層的維數(shù)小于上一層的維數(shù),就相當(dāng)于將上一層的數(shù)據(jù)參數(shù)化到低維空間中。當(dāng)然也可以參數(shù)化到高維空間,以提高自由度。

6.3節(jié)中,對(duì)于三維曲面,我們已知它是二維流形,因此,我們知道將其映射到二維作為參數(shù)域就很自然了。因此有了圖11這樣的網(wǎng)絡(luò)結(jié)構(gòu)。

但對(duì)于一般的數(shù)據(jù)(比如人臉數(shù)據(jù)),是在背景空間(ambient space)上觀測的,可能數(shù)據(jù)的維數(shù)非常高(比如1000x1000的圖像按照像素個(gè)數(shù)的維數(shù)達(dá)到100萬維)。但這些數(shù)據(jù)并不會(huì)充滿整個(gè)高維空間,會(huì)具有低維的結(jié)構(gòu)(稱為本征維數(shù)),即數(shù)據(jù)落在一個(gè)低維子空間(或低維流形)上,并呈現(xiàn)一定的概率分布。從數(shù)據(jù)的角度來看,一個(gè)嵌入到高維空間的低維流形本質(zhì)上就是一個(gè)參數(shù)曲面,參數(shù)域是那個(gè)低維空間。因此,將高維數(shù)據(jù)參數(shù)化到低維的空間是可行的。

這里也出現(xiàn)了兩個(gè)糾結(jié)的問題。

第一,對(duì)于一個(gè)實(shí)際數(shù)據(jù)擬合問題,應(yīng)該設(shè)置多少個(gè)隱層?

第二,每個(gè)隱層應(yīng)該設(shè)置多少個(gè)節(jié)點(diǎn)(該隱層的維數(shù))?

在機(jī)器學(xué)習(xí)領(lǐng)域,隱層的層數(shù)稱為網(wǎng)絡(luò)的深度,隱層的維數(shù)成為網(wǎng)絡(luò)的寬度。對(duì)于基于深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí),到底是越深越好,還是越寬越好?

從數(shù)學(xué)上來看,網(wǎng)絡(luò)越深,表示一個(gè)復(fù)雜的函數(shù)可以經(jīng)過多次參數(shù)化的變換,映射到最終的目標(biāo)。這個(gè)是合理的。舉個(gè)例子,比如我們想將一個(gè)三維網(wǎng)格曲面參數(shù)化到一個(gè)平面,如果這個(gè)輸入的曲面比較復(fù)雜,開口(參數(shù)化邊界)很小,則要將曲面一次性展開(的映射)比較困難。此時(shí),可以多進(jìn)行幾次從的映射,將曲面先在慢慢張開,每次張開的映射比較容易表達(dá)和計(jì)算。最后再映射到上就相對(duì)容易了,當(dāng)然還可進(jìn)行多次從的映射,生成更好的參數(shù)化。注意其中任何一個(gè)映射都可以是用一個(gè)神經(jīng)網(wǎng)絡(luò)來表達(dá)。

17. 帶有特征的曲面的擬合。(a) 原始輸入三維數(shù)據(jù);(b) (a)的簡單參數(shù)化(Floater參數(shù)化);(c) 為優(yōu)化過后的參數(shù)化;(d) 最后的擬合曲面。

 

在計(jì)算機(jī)圖形學(xué)中,我們針對(duì)曲面展開及擬合問題,在如下的工作中用到了這種思想。

[8-2]Linlin Xu, Ruimin Wang, Zhouwang Yang, Jiansong Deng, Falai Chen, Ligang Liu.Surface Approximation via Sparse Representation and ParameterizationOptimization. Computer-Aided Design (Proc. SPM), 78: 179-187, 2016.

如圖17所示,(a) 為一個(gè)帶有尖銳特征的輸入點(diǎn)云,如果將其簡單參數(shù)化為(b),在其上構(gòu)建的擬合曲面很難表現(xiàn)曲面的尖銳特征。這時(shí)我們對(duì)(b)中的參數(shù)化再做一個(gè)映射(優(yōu)化)為(c),這時(shí)在其上做的擬合曲面則能很好地表現(xiàn)出尖銳特征。注意,這里生成擬合曲面的基函數(shù)中我們采用了非光滑基函數(shù)(采用非光滑基函數(shù)來表現(xiàn)曲面特征的思想首次在我們的如下論文中所采用)。因此,上述工作本質(zhì)上是一個(gè)使用5層神經(jīng)網(wǎng)絡(luò)(3個(gè)隱層)來優(yōu)化擬合曲面。

 [8-3]Ruimin Wang, Ligang Liu, Zhouwang Yang, Kang Wang, Wen Shan, Jiansong Deng,Falai Chen.  Construction of Manifolds via Compatible Sparse Representations.ACM Transactions on Graphics, 35(2), Article 14: 1-10, 2016.

這里順便提一下,在計(jì)算機(jī)圖形學(xué)中,最近一些年有不少工作在做曲面參數(shù)化的優(yōu)化工作(比如滿足無翻轉(zhuǎn)、低扭曲等約束)。從機(jī)器學(xué)習(xí)的觀點(diǎn)來看,就是在做更多的參數(shù)映射的優(yōu)化計(jì)算。當(dāng)然,這些工作并不能簡單地看成一個(gè)深度神經(jīng)網(wǎng)絡(luò)來做。這是因?yàn)?,?duì)參數(shù)化的問題,我們是知道曲面(所有數(shù)據(jù))的整體結(jié)構(gòu)的,而不只是一些離散的采樣點(diǎn)。因此,我們在做參數(shù)化優(yōu)化的時(shí)候,我們可以充分利用曲面的整體結(jié)構(gòu)來得到一些幾何度量來滿足各種約束,而這些是神經(jīng)網(wǎng)絡(luò)優(yōu)化所做不到的!

總之,對(duì)于第一個(gè)問題,隱層越多,表示網(wǎng)絡(luò)越深,確實(shí)會(huì)使得最后的映射帶來更好的表現(xiàn)。其數(shù)學(xué)本質(zhì)是將輸入數(shù)據(jù)不斷在不同的空間中進(jìn)行參數(shù)化映射。最后得到的映射(可能非常復(fù)雜的映射)表達(dá)為若干個(gè)相對(duì)簡單映射的復(fù)合。對(duì)于多隱層的解釋和討論,機(jī)器學(xué)習(xí)領(lǐng)域及網(wǎng)上有很多文章進(jìn)行過解釋,大部分都解釋為“提取數(shù)據(jù)的特征”等等。我們從逼近論的角度(結(jié)合三維曲面擬合的例子),將多隱層優(yōu)化看成數(shù)據(jù)在不同維數(shù)空間的參數(shù)化,是非常容易直觀理解的。

對(duì)第二個(gè)問題,每個(gè)隱層的具體的節(jié)點(diǎn)數(shù)或維數(shù),該如何設(shè)置呢?對(duì)于一般的數(shù)據(jù)這個(gè)就很難直觀確定了,一般要根據(jù)經(jīng)驗(yàn)。當(dāng)然,也有一些辦法來進(jìn)行指導(dǎo),我們將在下一節(jié)中解釋。

 

8.5.           流形學(xué)習(xí)(數(shù)據(jù)降維)簡介

對(duì)于一般的數(shù)據(jù),我們并不知道其本征維數(shù)(即參數(shù)域空間),那么映射(參數(shù)化)到多少維空間是合適的呢?

事實(shí)上,這個(gè)也是個(gè)非常糾結(jié)的問題!這個(gè)問題就是尋求高維數(shù)據(jù)的本征維數(shù),在機(jī)器學(xué)習(xí)領(lǐng)域稱為流形學(xué)習(xí)(Manifold learning),或降維問題(Dimension reduction)。如圖18所示,數(shù)據(jù)是在三維空間給出的(B),每個(gè)點(diǎn)是3個(gè)坐標(biāo),看起來是三維數(shù)據(jù);但其本質(zhì)上位于三維空間的一張曲面上,即二維流形曲面上(A),其本征維數(shù)是2。因此,可以將其一一映射到平面上(C)。

18. 流行學(xué)習(xí)。(圖片來自論文[8-5]

提到流形學(xué)習(xí),不能不提到如下的兩篇開山之作(同時(shí)發(fā)在Science 2000的文章):

[8-4]Roweis, Sam T and Saul, Lawrence K. Nonlinear dimensionality reduction bylocally linear embedding. Science, 290(5500). 2000: 2323-2326.

[8-5]Tenenbaum, Joshua B and De Silva, Vin and Langford, John C. A global geometricframework for nonlinear dimensionality reduction. Science, 290(5500). 2000:2319-2323.

流形學(xué)習(xí)在本世紀(jì)初的前一個(gè)十年是一個(gè)研究熱點(diǎn)(由上面兩篇Science論文帶起來的)。至今已發(fā)展出了許多方法,從簡單的線性方法,比如PCA;到后面的非線性方法,比如局部線性嵌入(LLE),等距映射法(Isomap),Laplace特征映射,局部保投影法(LPP)等。這里不詳細(xì)介紹。

需要指出的是,正如第6節(jié)所講的三維曲面參數(shù)化的計(jì)算,我們計(jì)算數(shù)據(jù)的本征維數(shù)的時(shí)候,是需要利用所有數(shù)據(jù)的信息及其幾何或拓?fù)浣Y(jié)構(gòu)一起來分析的,而不能像神經(jīng)網(wǎng)絡(luò)訓(xùn)練那樣,僅僅將數(shù)據(jù)灌到神經(jīng)網(wǎng)絡(luò)中去更新權(quán)系數(shù)。

 

8.6.           端對(duì)端學(xué)習(xí)(End-to-end learning

在傳統(tǒng)的機(jī)器學(xué)習(xí)中,很多任務(wù)的輸入數(shù)據(jù)的維數(shù)都非常大,不易直接處理。往往需要先降到合適的維數(shù),然后再選擇合適的預(yù)測模型來做擬合。

傳統(tǒng)機(jī)器學(xué)習(xí)的流程一般由兩個(gè)主要的模塊組成。第一個(gè)模塊稱為特征工程,將原始輸入數(shù)據(jù)(高維向量)變換為一個(gè)低維向量,即,用這個(gè)低維向量來作為表達(dá)輸入數(shù)據(jù)的特征(或描述子,feature or descriptor)。不同的人有不同的方法來計(jì)算這個(gè)低維特征,稱為特征抽取Feature extraction),如圖19顯示了不同的圖像特征抽取方法。各種計(jì)算的特征都有一定的實(shí)用范圍,因此,有人就提出如何選擇或組合各種特征得到更好的特征,這是特征工程的另一個(gè)子問題,稱為特征選擇Feature selection)。針對(duì)三維形狀分割,我們發(fā)現(xiàn)對(duì)三維局部塊的眾多描述子并不是串聯(lián)起來一起使用更好,而是針對(duì)不同的形狀的部位使用不同的描述子會(huì)更好,于是我們使用稀疏選擇的方法來選擇形狀描述子用于形狀分割,詳細(xì)可見如下論文。

[8-6]Ruizhen Hu, Lubin Fan, Ligang Liu.  Co-Segmentation of 3D Shapes via SubspaceClustering. Computer Graphics Forum (Proc. Symposium on Geometry Processing), 31(5):1703-1713, 2012.

1365435491_6508.jpg

19. 圖像的各種特征抽取方法。

由于這種特征是通過人為設(shè)計(jì)的算法來得到的,因此這種特征稱為人工特征Hand-crafted features)。人工特征的抽取需要人們對(duì)輸入數(shù)據(jù)的認(rèn)知或者領(lǐng)域知識(shí)(Domain knowledge),因此在很多情況下會(huì)局限于人的經(jīng)驗(yàn)和認(rèn)知。

第二個(gè)模塊稱為預(yù)測模型,即選用什么樣的預(yù)測方法來擬合給定的數(shù)據(jù),我們前面所講的擬合就是指這個(gè)過程。預(yù)測模型的目標(biāo)就是希望學(xué)習(xí)到的模型在預(yù)測未知目標(biāo)時(shí)越精確越好。一般要考慮模型的復(fù)雜度及精確度等因素。在機(jī)器學(xué)習(xí)領(lǐng)域有非常多的方法,這里不一一介紹。

上述兩個(gè)模塊中的每個(gè)模塊都是一個(gè)獨(dú)立的任務(wù),其結(jié)果的好壞會(huì)影響到下一步驟,從而影響整個(gè)訓(xùn)練的結(jié)果,這是非端到端的,如圖20(上)所示。

特征提取的好壞異常關(guān)鍵,甚至比預(yù)測模型還重要。舉個(gè)例子,對(duì)一系列人的數(shù)據(jù)分類,分類結(jié)果是性別(男或女),如果你提取的特征是頭發(fā)的顏色,無論分類算法如何,分類效果都不會(huì)好;如果你提取的特征是頭發(fā)的長短,這個(gè)特征就會(huì)好很多,但是還是會(huì)有錯(cuò)誤;如果你提取了一個(gè)超強(qiáng)特征,比如染色體的數(shù)據(jù),那你的分類基本就不會(huì)錯(cuò)了。

這就意味著,特征需要足夠的經(jīng)驗(yàn)去設(shè)計(jì),這在數(shù)據(jù)量越來越大的情況下也越來越困難。于是就出現(xiàn)了端到端的網(wǎng)絡(luò),特征可以自己去學(xué)習(xí)。所以特征提取這一步也就融入到算法當(dāng)中,不需要人來干預(yù)了。即不需要將任務(wù)分為多個(gè)步驟分步去解決,而是從輸入端的數(shù)據(jù)直接得到輸出端的結(jié)果。前面介紹的深度神經(jīng)網(wǎng)絡(luò)就是一個(gè)端到端的學(xué)習(xí)方法。如圖20(下)所示。

端到端學(xué)習(xí)的好處在于,使學(xué)習(xí)模型從原始輸入到最終輸出,直接讓數(shù)據(jù)“說話”,不需人工設(shè)計(jì)的模塊;給模型更多可以根據(jù)數(shù)據(jù)自動(dòng)調(diào)節(jié)的空間,增加模型的整體契合度。

 

20. 非端到端的學(xué)習(xí)(上)與端到端的學(xué)習(xí)(下)。

但端到端學(xué)習(xí)也有不足。第一,端到端的深度神經(jīng)網(wǎng)絡(luò)需要大量的樣本數(shù)據(jù)才能工作得很好,因此很多公司都在花費(fèi)大量的人力物力去生成標(biāo)注數(shù)據(jù)(一般通過人工標(biāo)注,催生了很多專門做數(shù)據(jù)標(biāo)注的外包公司);第二,人工設(shè)計(jì)的特征并不是都不能用的,有些人工特征還是能代表著人類智能的,是可以用來作為合理的特征的,而端到端的學(xué)習(xí)無法用這些特征。當(dāng)然,通過適當(dāng)?shù)母脑旌徒Y(jié)合,也可以集成人工特征到深度神經(jīng)網(wǎng)絡(luò)中,這里就不展開討論。

 

8.7.           深度學(xué)習(xí)成功的原因

基于深度神經(jīng)網(wǎng)絡(luò)的端到端學(xué)習(xí)在最近幾年取得很大的成功,被大量應(yīng)用與計(jì)算機(jī)視覺、語音識(shí)別、自然語音處理、醫(yī)學(xué)圖像處理等領(lǐng)域中。從數(shù)學(xué)本質(zhì)上來看,神經(jīng)網(wǎng)絡(luò)就是一個(gè)映射函數(shù)而已,在上世紀(jì)50年代就有了感知機(jī),但為什么以前沒有火呢? 主要有以下的兩方面的原因。

第一,之前沒有那么大規(guī)模的數(shù)據(jù)量;

第二,以前的工程技術(shù)(先進(jìn)優(yōu)化算法及支持大規(guī)模并行計(jì)算的GPU硬件)無法求解的很深的神經(jīng)網(wǎng)絡(luò)。

因此,在上個(gè)世紀(jì)90年代,各種淺層模型大行其道,比如只有一層隱層的支撐向量機(jī)(Support Vector Machine,SVM)以及沒有隱層的邏輯回歸方法(Logistic Regression,LR)等。

直到最近幾年,隨著各種傳感器的大量使用以及移動(dòng)互聯(lián)網(wǎng)的廣泛應(yīng)用,能夠獲取和產(chǎn)生海量(PB級(jí)甚至ZB級(jí))的數(shù)據(jù)(比如文本、圖像、語音等)。特別是ImageNet圖像數(shù)據(jù)庫的誕生以及基于該數(shù)據(jù)庫的各種競賽,直接將計(jì)算機(jī)視覺領(lǐng)域中的深度學(xué)習(xí)的研究與應(yīng)用推向了“落地”,催生了大量的計(jì)算機(jī)視覺的人工智能公司。

 

8.8.           過擬合

自從深度學(xué)習(xí)火了后,各種深度神經(jīng)網(wǎng)絡(luò)(或CNN網(wǎng)絡(luò))隨之產(chǎn)生了,比如2012年的AlexNet8層;2014年的VGG-1919層;2014年的GoogleNet22層;2015年的ResNet152層!甚至還出現(xiàn)了上千層的深度神經(jīng)網(wǎng)絡(luò)!

從數(shù)學(xué)上可知,擬合函數(shù)所帶的參數(shù)的個(gè)數(shù)與樣本數(shù)據(jù)的個(gè)數(shù)之間的差代表著這個(gè)擬合函數(shù)的“自由度”。網(wǎng)絡(luò)越來越“深”后,擬合模型中的可調(diào)整參數(shù)的數(shù)量就非常大,通常能達(dá)到百萬計(jì)甚至幾十億級(jí)。因此,層數(shù)很大的深度網(wǎng)絡(luò)(模型過于復(fù)雜)能夠表達(dá)一個(gè)自由度非常大的函數(shù)空間,甚至遠(yuǎn)高于目標(biāo)函數(shù)空間(過完備空間),即自由度遠(yuǎn)大于0。這樣就很容易導(dǎo)致過擬合(Overfitting),如前面所討論過的圖2(右)所示。

過擬合可以使得擬合模型能夠插值所有樣本數(shù)據(jù)(擬合誤差為0!)。但擬合誤差為0不代表模型就是好的,因?yàn)槟P椭辉谟?xùn)練集上表現(xiàn)好;由于模型擬合了訓(xùn)練樣本數(shù)據(jù)中的噪聲,使得它在測試集上表現(xiàn)可能不好,泛化性能差。為此,人們采取了不同的方法來緩解過擬合(無法完全避免),比如正則化、數(shù)據(jù)增廣、Dropout、網(wǎng)絡(luò)剪枝等。

在使用深度神經(jīng)網(wǎng)絡(luò)來做深度學(xué)習(xí)的應(yīng)用中,很多工作都是直接使用現(xiàn)有的深度神經(jīng)網(wǎng)絡(luò),或者改造現(xiàn)有的深度神經(jīng)網(wǎng)絡(luò)。如果網(wǎng)絡(luò)設(shè)計(jì)不夠好,大部分結(jié)果都可能有過擬合的現(xiàn)象。

在實(shí)際應(yīng)用中,我們可以挑選樣本數(shù)據(jù)中的一部分作為訓(xùn)練數(shù)據(jù)集,其他的作為測試數(shù)據(jù)集。如果網(wǎng)絡(luò)在訓(xùn)練數(shù)據(jù)集上表現(xiàn)好(即損失函數(shù)很?。跍y試數(shù)據(jù)集上表現(xiàn)不夠好,那么就可能發(fā)生了過擬合,此時(shí)就適當(dāng)減少網(wǎng)絡(luò)的層數(shù)或者節(jié)點(diǎn)數(shù)。這個(gè)過程是需要有耐心,可能需要花費(fèi)很長時(shí)間才能調(diào)到一個(gè)合適的網(wǎng)絡(luò)。需要靠感覺、經(jīng)驗(yàn)和運(yùn)氣。因此,有人戲稱調(diào)試深度神經(jīng)網(wǎng)絡(luò)的過程為“煉丹”。

 

8.9.           類比神經(jīng)科學(xué)的解釋

我們已從函數(shù)逼近論的角度來解釋了人工神經(jīng)網(wǎng)絡(luò)本質(zhì)是傳統(tǒng)逼近函數(shù)的一個(gè)推廣,由人工選取基函數(shù)到自動(dòng)學(xué)習(xí)基函數(shù),由人工提取特征到自動(dòng)計(jì)算特征(參數(shù)化),能夠較容易理解人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)是如何工作的。

在機(jī)器學(xué)習(xí)領(lǐng)域,人們從生物神經(jīng)網(wǎng)絡(luò)的角度來解釋和理解人工神經(jīng)網(wǎng)絡(luò)的工作原理,將人工神經(jīng)網(wǎng)絡(luò)看成為一個(gè)可以模擬人腦工作行為的函數(shù)。

在生物神經(jīng)科學(xué)(Neuroscience,包括腦科學(xué)、認(rèn)知神經(jīng)科學(xué)等)的研究中,人們發(fā)現(xiàn),人體的神經(jīng)元通過樹突接受信號(hào)。這些信息或信號(hào)隨后被傳遞到腦細(xì)胞或細(xì)胞體。在細(xì)胞體內(nèi)部,所有的信息將被加工生成一個(gè)輸出。當(dāng)該輸出結(jié)果達(dá)到某一閾值時(shí),神經(jīng)元就會(huì)興奮,并通過軸突傳遞信息,然后通過突觸傳遞到其他相連的神經(jīng)元。神經(jīng)元間傳輸?shù)男盘?hào)量取決于連接的強(qiáng)度。如圖21(左)。

我們來類比人工神經(jīng)網(wǎng)絡(luò):如果把樹突想象成人工智能網(wǎng)絡(luò)中基于突觸感知器的被賦予了權(quán)重的輸入。然后,該輸入在人工智能網(wǎng)絡(luò)的“細(xì)胞體”(神經(jīng)元)中相加。如果得出的輸出值大于閾值單元,那么神經(jīng)元就會(huì)“興奮”(激活),并將輸出傳遞到其它神經(jīng)元,如圖21(右)。

21. 左:人腦神經(jīng)元結(jié)構(gòu);右:從生物神經(jīng)網(wǎng)絡(luò)類比得出的人工神經(jīng)元結(jié)構(gòu)。

(圖片來自互聯(lián)網(wǎng))

在計(jì)算機(jī)視覺領(lǐng)域,人們也從視覺神經(jīng)科學(xué)(Visual Neuroscience)中類比來解釋了在計(jì)算機(jī)視覺領(lǐng)域用得最多的卷積神經(jīng)網(wǎng)絡(luò)(CNN)的工作機(jī)理。

22. 視覺皮層結(jié)構(gòu)。(圖片來自互聯(lián)網(wǎng))

 

由視覺機(jī)理的研究發(fā)現(xiàn),動(dòng)物大腦的視覺皮層具有分層結(jié)構(gòu)。眼睛將看到的景象成像在視網(wǎng)膜上,視網(wǎng)膜把光學(xué)信號(hào)轉(zhuǎn)換成電信號(hào),傳遞到大腦的視覺皮層(Visual cortex),視覺皮層是大腦中負(fù)責(zé)處理視覺信號(hào)的部分。1959年,有科學(xué)家進(jìn)行了一次實(shí)驗(yàn),他們在貓的大腦初級(jí)視覺皮層內(nèi)插入電極,在貓的眼前展示各種形狀、空間位置、角度的光帶,然后測量貓大腦神經(jīng)元放出的電信號(hào)。實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)光帶處于某一位置和角度時(shí),電信號(hào)最為強(qiáng)烈;不同的神經(jīng)元對(duì)各種空間位置和方向偏好不同。這一成果后來讓他們獲得了諾貝爾獎(jiǎng)。

目前已經(jīng)證明,視覺皮層具有層次結(jié)構(gòu)。從視網(wǎng)膜傳來的信號(hào)首先到達(dá)初級(jí)視覺皮層(primary visual cortex),即V1皮層。V1皮層簡單神經(jīng)元對(duì)一些細(xì)節(jié)、特定方向的圖像信號(hào)敏感。V1皮層處理之后,將信號(hào)傳導(dǎo)到V2皮層。V2皮層將邊緣和輪廓信息表示成簡單形狀,然后由V4皮層中的神經(jīng)元進(jìn)行處理,它顏色信息敏感。復(fù)雜物體最終在IT皮層(inferior temporal cortex)被表示出來。

卷積神經(jīng)網(wǎng)絡(luò)可以看成是上面這種機(jī)制的簡單模仿。它由多個(gè)卷積層構(gòu)成,每個(gè)卷積層包含多個(gè)卷積核,用這些卷積核從左向右、從上往下依次掃描整個(gè)圖像,得到稱為特征圖(feature map)的輸出數(shù)據(jù)。網(wǎng)絡(luò)前面的卷積層捕捉圖像局部、細(xì)節(jié)信息,有小的感受野,即輸出圖像的每個(gè)像素只利用輸入圖像很小的一個(gè)范圍。后面的卷積層感受野逐層加大,用于捕獲圖像更復(fù)雜,更抽象的信息。經(jīng)過多個(gè)卷積層的運(yùn)算,最后得到圖像在各個(gè)不同尺度的抽象表示(由底層到高層的特征表達(dá)),如圖23所示。

23. 基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)所得到的人臉圖像的分層特征。

(圖片來自于Stanford大學(xué)的論文)

 

筆者認(rèn)為,利用神經(jīng)科學(xué)的神經(jīng)元或神經(jīng)網(wǎng)絡(luò)來解釋深度學(xué)習(xí)中的人工神經(jīng)網(wǎng)絡(luò),這僅僅是類比而已。從我們的分析可知,深度學(xué)習(xí)中的人工神經(jīng)網(wǎng)絡(luò)并沒有真正的認(rèn)知和學(xué)習(xí)!如果我們?nèi)祟悓?duì)自己的認(rèn)知系統(tǒng)無法完全了解的話,我們是很難發(fā)展出真正的人工智能技術(shù)。

 

8.10.       深度人工神經(jīng)網(wǎng)絡(luò)的局限:保持結(jié)構(gòu)的映射

我們從數(shù)學(xué)上理解了深度人工神經(jīng)網(wǎng)絡(luò)本質(zhì)上是表達(dá)不同維數(shù)空間之間的一個(gè)映射(函數(shù))。給了一些樣本點(diǎn)后,通過調(diào)整網(wǎng)絡(luò)的參數(shù)權(quán)系數(shù),不斷極小化損失函數(shù),從而達(dá)到最好的擬合結(jié)果得到了擬合函數(shù)。

這個(gè)擬合過程只極小化了逐點(diǎn)的誤差或者累積逐點(diǎn)誤差,而無法考慮點(diǎn)與周圍點(diǎn)之間的其他信息(比如鄰域幾何結(jié)構(gòu)、局部幾何度量、流形的整體拓?fù)浣Y(jié)構(gòu)等)。如果要考慮點(diǎn)之間的幾何與拓?fù)涞慕Y(jié)構(gòu)信息,則深度人工神經(jīng)網(wǎng)絡(luò)就無能為力(當(dāng)然一定要改造也是可以的),這時(shí)就需要其他的數(shù)學(xué)方法了。有點(diǎn)像數(shù)學(xué)分析中,逐點(diǎn)收斂和一致收斂,逐點(diǎn)連續(xù)和一致連續(xù)的區(qū)別。

例如,前面介紹的流形學(xué)習(xí)中,LLE方法保持每個(gè)樣本點(diǎn)與它相鄰的多個(gè)點(diǎn)的線性組合(體現(xiàn)了局部線性)來重構(gòu)低維空間的點(diǎn)的分布,相當(dāng)于用分段的線性面片近似代替復(fù)雜的幾何形狀,樣本投影到低維空間保持這種線性重構(gòu)關(guān)系,如圖24(左)所示。Isomap方法希望保持?jǐn)?shù)據(jù)在低維空間的映射之后能夠保持流形上的測地線距離,即全局的幾何結(jié)構(gòu),如圖24(右)所示。

   

24. 流形學(xué)習(xí)。左:保持局部的幾何信息(LLE);右:保持全局的距離信息(Isomap)。

(圖片分別來自于論文[8-4][8-5]

 

再如,在計(jì)算機(jī)圖形學(xué)和幾何處理領(lǐng)域,我們做的很多映射(比如三維網(wǎng)格曲面的參數(shù)化),也需要保持曲面上的某些幾何性質(zhì)(保角度、保面積、保形等),也發(fā)展出許多不同的求解映射的方法和技巧。例如,以下兩個(gè)工作是我們做的有關(guān)三維曲面參數(shù)化到二維平面的工作,第一個(gè)工作是曲面參數(shù)化工作的經(jīng)典方法之一,已經(jīng)被集成到3D System公司的建模軟件以及著名的計(jì)算幾何算法CGALThe Computational Geometry Algorithms Library)中。第二個(gè)工作是今年我們最新的一個(gè)工作,能快速生成無翻轉(zhuǎn)和低扭曲的網(wǎng)格參數(shù)化,論文即將在下周的Siggraph 2018會(huì)議上匯報(bào)。

[8-7]Ligang Liu, Lei Zhang, Yin Xu, Craig Gotsman, Steven J. Gortler.  ALocal/Global Approach to Mesh Parameterization. Computer Graphics Forum (Proc.Eurographics Symposium on Geometry Processing (SGP)), 27(5), 1495-1504, 2008.

[8-8]Ligang Liu, Chunyang Ye, Ruiqi Ni, Xiao-Ming Fu. ProgressiveParameterizations.  ACM Transactions on Graphics (Proc. Siggraph), 37(4),Article 41: 1-12, 2018.

在計(jì)算機(jī)圖形學(xué)中,有時(shí)我們也需要將三維空間的二維流形曲面映射到另一個(gè)規(guī)則二維流形曲面,比如球面上,這時(shí)稱為球面參數(shù)化。如讀者有興趣可閱讀我們?nèi)缦碌?/span>3篇有關(guān)球面參數(shù)化的工作。

[8-9]Xin Hu, Xiao-Ming Fu, Ligang Liu. Advanced Hierarchical SphericalParameterizations. IEEE Transactions on Visualization and Computer Graphics, toappear, 2018.

[8-10]Chunxue Wang, Xin Hu, Xiaoming Fu, Ligang Liu. Bijective SphericalParametrization with Low Distortion. Computers&Graphics (Proc. SMI), 58:161-171, 2016.

[8-11]Chunxue Wang, Zheng Liu, Ligang Liu. As-Rigid-As-Possible SphericalParameterization. Graphical Models (Proc. GMP), 76(5): 457-467, 2014.

另外,在計(jì)算機(jī)圖形學(xué)及計(jì)算機(jī)輔助幾何設(shè)計(jì)領(lǐng)域,我們還有獨(dú)特的曲線和函數(shù)的構(gòu)造方法,如通過Bernstein基函數(shù)構(gòu)造的Bezier曲線曲面,通過B樣條基構(gòu)造的B樣條曲線曲面(分段Bezier曲線曲面),以及更一般的非均有有理B樣條曲線曲面,通過控制頂點(diǎn)就能很直觀控制曲線曲面的形狀,而且發(fā)展出非常完備的理論及設(shè)計(jì)方法,如圖25所示。這些獨(dú)特的曲線曲面的構(gòu)造方法也是我們領(lǐng)域獨(dú)特的,已成為現(xiàn)代工業(yè)中產(chǎn)品曲面造型的工業(yè)標(biāo)準(zhǔn)(標(biāo)準(zhǔn)數(shù)學(xué)表達(dá))。

 

 

25. NURBS曲線曲面:產(chǎn)品曲面造型的工業(yè)標(biāo)準(zhǔn)。(圖片來源與互聯(lián)網(wǎng))

 

 

九、  實(shí)戰(zhàn)深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)

 

由于本文是面向非機(jī)器學(xué)習(xí)專業(yè)介紹深度學(xué)習(xí)的,因此,筆者在這里只是大致介紹一下各種基于深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法的實(shí)際技巧,不詳細(xì)展開討論,有興趣的讀者可查閱更專業(yè)的書籍或論文。

 

9.            

9.1.           看懂各種深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

從數(shù)學(xué)上來看,深度神經(jīng)網(wǎng)絡(luò)僅僅是一種函數(shù)的表達(dá)形式,是復(fù)雜的多層復(fù)合函數(shù)。由于它有大量的可調(diào)參數(shù),而且近年來隨著大數(shù)據(jù)、優(yōu)化算法和并行計(jì)算GPU硬件的發(fā)展,使得用大規(guī)模的神經(jīng)網(wǎng)絡(luò)來逼近和擬合大數(shù)據(jù)成為可能。至今,不同領(lǐng)域的研究工作者及產(chǎn)業(yè)界工作者已將深度神經(jīng)網(wǎng)絡(luò)應(yīng)用到各行各業(yè)的各個(gè)問題,而且提出了各種形式、各種結(jié)構(gòu)的深度網(wǎng)絡(luò)結(jié)構(gòu),使人眼花繚亂,似乎難以捉摸。但事實(shí)并非如此!

萬變不離其宗,神經(jīng)網(wǎng)絡(luò)就是一個(gè)多層復(fù)合函數(shù)。網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生改變,就是說函數(shù)的復(fù)合形式發(fā)生了變化。因此,只要掌握了這條原則,各種復(fù)雜的神經(jīng)網(wǎng)絡(luò)你就能輕松看懂。亦可參考互聯(lián)網(wǎng)上的“一文看懂25個(gè)神經(jīng)網(wǎng)絡(luò)模型”一文。

26. 多層神經(jīng)網(wǎng)絡(luò)所表達(dá)的函數(shù):可以看成前面的若干層網(wǎng)絡(luò)所表達(dá)的函數(shù)(藍(lán)色)與后面若干層網(wǎng)絡(luò)所表達(dá)的函數(shù)(紅色)的復(fù)合。

 

簡單地說,看懂各種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)只需看懂如下3個(gè)要素(具體解釋就不詳細(xì)展開了):

(1)   神經(jīng)元與激活函數(shù):神經(jīng)元接收什么數(shù)據(jù),通過什么樣的激活函數(shù)輸出數(shù)據(jù)。人們發(fā)明了許多不同種類的神經(jīng)元,比如,池化神經(jīng)元和插值神經(jīng)元(Pooling and interpolatingcells)、概率神經(jīng)元(Mean and standarddeviation cells)、循環(huán)神經(jīng)元(Recurrent cells )、長短期記憶神經(jīng)元(Long short term memory cells)、門控循環(huán)神經(jīng)元(Gated recurrent cells)等。不管什么樣形式和名稱的神經(jīng)元,我們只要搞明白神經(jīng)元是通過什么樣的函數(shù)來將接收數(shù)據(jù)變?yōu)檩敵鰯?shù)據(jù),不同之處就在接收數(shù)據(jù)和激活函數(shù)不同而已,如圖21(右)所示。

(2)   神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):不同的神經(jīng)網(wǎng)絡(luò)就是不同的多層復(fù)合形式的函數(shù)。比如,卷積神經(jīng)網(wǎng)絡(luò)Convolutional Neural Network,CNN)就是一種限于局部感受野來改造的神經(jīng)網(wǎng)絡(luò)(線性組合特殊化為局部區(qū)域的卷積操作,且增加了池化(Pooling)層),特別適合于文本、圖像及視頻類數(shù)據(jù)的深度學(xué)習(xí)。再比如,殘差神經(jīng)網(wǎng)絡(luò)(Residual Neural Network,ReNN)有一種特殊的連接,可以把數(shù)據(jù)從某一隱層傳至后面幾層(通常是25層)。該網(wǎng)絡(luò)的目的不是要找輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的映射,而是致力于構(gòu)建輸入數(shù)據(jù)與輸出數(shù)據(jù)+輸入數(shù)據(jù)之間的映射函數(shù)。本質(zhì)上,它在結(jié)果中增加一個(gè)恒等函數(shù),并跟前面的輸入一起作為后一層的新輸入。類似地,其他的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)也很容易看懂的,比如AutoEncoderGAN,Variational GAN等。

(3)   神經(jīng)網(wǎng)絡(luò)的組合:一個(gè)多層的神經(jīng)網(wǎng)絡(luò)就是一個(gè)多次復(fù)合的函數(shù)。中間的任何一層的輸出都可以看成為原始輸入數(shù)據(jù)的一個(gè)特征。如圖26所示,一個(gè)多層神經(jīng)網(wǎng)絡(luò)所表達(dá)的函數(shù):可以看成前面的若干層網(wǎng)絡(luò)所表達(dá)的函數(shù)(藍(lán)色)與后面若干層網(wǎng)絡(luò)所表達(dá)的函數(shù)(紅色)的復(fù)合。因此,在任何的一個(gè)中間層,可以修改輸出的特征向量、可以插入一個(gè)其他的神經(jīng)網(wǎng)絡(luò)(將該特征向量作為輸入,或與其他網(wǎng)絡(luò)的特征向量進(jìn)行疊加、運(yùn)算等)等等。如果將神經(jīng)網(wǎng)絡(luò)看成為積木,整個(gè)組合過程就像在“搭積木”。這樣就可以發(fā)明和產(chǎn)生無窮無盡的網(wǎng)絡(luò)結(jié)構(gòu)(比如,并行網(wǎng)絡(luò)、累加網(wǎng)絡(luò)等等很多網(wǎng)絡(luò)名稱)。在實(shí)際應(yīng)用中,需要根據(jù)問題本身的特點(diǎn)來合理設(shè)計(jì)網(wǎng)絡(luò)的結(jié)構(gòu)。具體哪種網(wǎng)絡(luò)結(jié)構(gòu)合理,有無最好,都是組要根據(jù)問題本身思考和試驗(yàn)的,主要是要看損失函數(shù)的誤差以及在應(yīng)用中的效果來決定的。這個(gè)我們在后面還會(huì)進(jìn)一步討論。

 

9.2.           如何調(diào)試深度神經(jīng)網(wǎng)絡(luò)?

一個(gè)深度神經(jīng)網(wǎng)絡(luò)所表達(dá)的函數(shù)具有成千上萬個(gè)參數(shù),為了讓損失函數(shù)在訓(xùn)練數(shù)據(jù)上達(dá)到最小,就需要設(shè)計(jì)合理的網(wǎng)絡(luò)來擬合這些數(shù)據(jù)。在優(yōu)化的過程中,要保證迭代收斂也是必要的。

一般地,調(diào)試較大的深度神經(jīng)網(wǎng)絡(luò)所花費(fèi)的時(shí)間和勞力比調(diào)試傳統(tǒng)程序要多,而且要有耐心!因?yàn)槿绻詈蟮慕Y(jié)果不好(損失函數(shù)很大或者不收斂),如果確認(rèn)你的代碼無bug,那么原因只有一個(gè),就是你所調(diào)的網(wǎng)絡(luò)還不夠好(orz)

在調(diào)試神經(jīng)網(wǎng)絡(luò)的過程中,有太多不確定的因素需要你去仔細(xì)思考并小心翼翼地去調(diào)試,而這些大部分都需要靠直覺、經(jīng)驗(yàn)和少許運(yùn)氣來調(diào)試決定的,比如:

(1)   需要選取多大的神經(jīng)網(wǎng)絡(luò)(也就是選用什么樣的擬合函數(shù))?具體地,網(wǎng)絡(luò)要多少層?每層多少節(jié)點(diǎn)?這個(gè)只能憑直覺或經(jīng)驗(yàn)了。簡單點(diǎn)的話,就套用現(xiàn)成的網(wǎng)絡(luò)結(jié)構(gòu),或者再經(jīng)過一些修改即可。從函數(shù)的自由度來看,網(wǎng)絡(luò)的參數(shù)個(gè)數(shù)與數(shù)據(jù)大小不應(yīng)相差太大。

(2)   初始化。對(duì)于高度非線性的函數(shù)的最優(yōu)化,一個(gè)非常重要的因素就是如何挑選一個(gè)好的初始化?

(3)   在優(yōu)化過程中,如何判斷優(yōu)化過程是否收斂?

(4)   是否發(fā)生了過擬合?

(5)   … ….

以下有些簡單的小經(jīng)驗(yàn)分享下:

(1)   一定要可視化你的結(jié)果!這樣有助于你在訓(xùn)練過程中發(fā)現(xiàn)問題。你應(yīng)該明確的看到這些數(shù)據(jù):損失函數(shù)的變化曲線、權(quán)重直方圖、變量的梯度等。不能只看數(shù)值,一定要可視化!

(2)   網(wǎng)絡(luò)不是越深越好!不要一上來就用VGG19, ResNet50等標(biāo)準(zhǔn)的大網(wǎng)絡(luò),可能你的問題只要幾層就能解決問題。

(3)   先建立一個(gè)較小的網(wǎng)絡(luò)來解決核心問題,然后一步一步擴(kuò)展到全局問題。

(4)   先用小樣本做訓(xùn)練,有了感覺后,再調(diào)試大的訓(xùn)練數(shù)據(jù)。

(5)   如果在幾百次迭代后,迭代還沒開始收斂,那么就要終止迭代,不要傻等了!要考慮修改你的網(wǎng)絡(luò)了。

(6)   注意避免梯度消失或梯度爆炸。

(7)   另外,在互聯(lián)網(wǎng)上還能找到許多網(wǎng)友們分(tu3)享(cao2)的實(shí)用調(diào)網(wǎng)絡(luò)的經(jīng)驗(yàn),讀者可自行去查找學(xué)習(xí)。

值得提醒的是,上述分享的各個(gè)經(jīng)驗(yàn)沒有絕對(duì)的對(duì)與錯(cuò),須將它們當(dāng)作經(jīng)驗(yàn)去學(xué)習(xí)和使用即可。需要根據(jù)你自己的實(shí)際問題來設(shè)計(jì)和調(diào)試你的深度神經(jīng)網(wǎng)絡(luò)。

即便對(duì)于行家來說,調(diào)試較大的神經(jīng)網(wǎng)絡(luò)也是一項(xiàng)艱巨的任務(wù)。數(shù)百萬個(gè)參數(shù)在一起決定的函數(shù),一個(gè)微小的變化就能毀掉所有辛勤工作的成果。然而不進(jìn)行調(diào)試以及可視化,一切就只能靠運(yùn)氣,最后可能浪費(fèi)掉大把的青春歲月。

正因?yàn)檫@些原因,調(diào)試深度神經(jīng)網(wǎng)絡(luò)被認(rèn)為是個(gè)不可解釋的“黑箱子”,優(yōu)化網(wǎng)絡(luò)的過程成為“調(diào)參”,也被戲稱為“煉丹”,是個(gè)需要豐富經(jīng)驗(yàn)的“技術(shù)活”。

 

9.3.           深度學(xué)習(xí)開發(fā)工具

要學(xué)習(xí)和使用基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí),門檻并不高。你大不必從頭開始自己搭建神經(jīng)網(wǎng)絡(luò)系統(tǒng)和實(shí)現(xiàn)優(yōu)化算法。近幾年來,很多大公司和科研機(jī)構(gòu)都在研究自己的深度學(xué)習(xí)框架,且推出了不少深度學(xué)習(xí)開發(fā)平臺(tái)(如圖27),深度學(xué)習(xí)的開發(fā)框架和工具也越來越多,使得應(yīng)用深度學(xué)習(xí)的入門門檻越來越低。使用好的開發(fā)工具,可讓使用者減少底層開發(fā)的工作量,而將重點(diǎn)關(guān)注于深度學(xué)習(xí)應(yīng)用邏輯的開發(fā)及模型的優(yōu)化上,提高開發(fā)效率。

27. 基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)的開發(fā)工具。(圖片來自互聯(lián)網(wǎng))

 

這里簡單介紹幾款大家常用的深度學(xué)習(xí)開發(fā)工具包,基本都是開源的。

(1)   TensorFlow, Google公司發(fā)布。支持多CPU及多GPU并行化運(yùn)行,并支持CNN,RNN等主要的深度學(xué)習(xí)模型。Github社區(qū)人氣最火的深度學(xué)習(xí)開源項(xiàng)目。

(2)   Caffe,由加拿大Berkeley BVLC實(shí)驗(yàn)室發(fā)布。使用最廣泛的深度學(xué)習(xí)工具之一,提供C++Python,Matlab等語言接口。

(3)   Torch,基于 Lua 腳本語言的工具,支持 iOS、 Android 等嵌入式平臺(tái)。

(4)   Theano,基于Python語言開發(fā)的深度學(xué)習(xí)開源仿真平臺(tái)。

(5)   Keras,基于Python語言開發(fā)的,底層庫使用TheanoTensorFlow。其模塊化特性非常適合剛?cè)腴T的初學(xué)者快速實(shí)驗(yàn)并測試深度學(xué)習(xí)網(wǎng)絡(luò)的性能,同時(shí)也開放提供對(duì)底層的修改。

關(guān)于這些開發(fā)工具包的使用,互聯(lián)網(wǎng)上(包括Github)有非常豐富的教材和使用文檔,讀者有興趣可以自行查閱學(xué)習(xí)。

 

9.4.           深度神經(jīng)網(wǎng)絡(luò)專用芯片

深度神經(jīng)網(wǎng)絡(luò)專用芯片(使用GPU+DNN的專用芯片)是一種特殊用途的處理器,它能夠使得深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練更快,具有更高的性能和更低的功耗。DNN 專用芯片在性能和能源消耗方面的好處是顯著的,DNN專用芯片的廣泛使用還需要神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)的標(biāo)準(zhǔn)化和對(duì)不同DNN框架的支持。國外的一些公司,包括GoogleNvidia、Intel等公司,已經(jīng)開發(fā)和部署了DNN專用芯片,為基于DNN的應(yīng)用程序提供了極高的性能。國內(nèi)也有不少公司(如寒武紀(jì)、阿里巴巴等)在從事DNN專用芯片的研發(fā),也已經(jīng)達(dá)到國際前沿水平。

 

十、  深度神經(jīng)網(wǎng)絡(luò)的能力與局限

 

深度學(xué)習(xí)真有智能嗎?遺憾的是,沒有!

10.        

10.1.       基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)的本質(zhì)再回顧

在本文,筆者從函數(shù)逼近論的角度已詳細(xì)剖析了基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí),歸納為以下4個(gè)基本點(diǎn):

(1)   深度神經(jīng)網(wǎng)絡(luò)(DNN)僅僅是一個(gè)函數(shù);

(2)   基于DNN的深度學(xué)習(xí)也僅僅是個(gè)數(shù)據(jù)擬合(最小二乘回歸)的過程;

(3)   擬合過程是在學(xué)習(xí)基函數(shù);

(4)   多層映射是在做參數(shù)化。

因此,基于DNN的深度學(xué)習(xí)并不是個(gè)“黑箱子”,而是很清楚地可被解釋的!具體的應(yīng)用過程中,選多少層、選多少基的問題在逼近論中就是沒有很好的解決方案,這是逼近論中就存在的問題,并不是深度網(wǎng)絡(luò)帶來的問題!

從數(shù)學(xué)本質(zhì)來看,深度學(xué)習(xí)是在做最小二乘回歸;其他的機(jī)器學(xué)習(xí)方法也是基于最小二乘回歸的其他回歸方法或者統(tǒng)計(jì)方法。

從應(yīng)用性來看,還有以下一些對(duì)基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)的本質(zhì)的說明:

(1)   基于DNN的深度學(xué)習(xí)實(shí)際上在做擬合和統(tǒng)計(jì),網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)需要靠直覺、技巧和經(jīng)驗(yàn)以及運(yùn)氣;

(2)   激活函數(shù)和損失函數(shù)的選擇也很重要;

(3)   DNN的層數(shù)、各層的神經(jīng)元個(gè)數(shù)決定了該函數(shù)的參數(shù);一般的DNN都具有非常多的參數(shù);

(4)   DNN適合擬合大規(guī)模數(shù)據(jù);對(duì)小規(guī)模數(shù)據(jù),不建議用DNN

(5)   任何一個(gè)中間隱層的輸出向量都可以作為輸入數(shù)據(jù)的特征(在該維數(shù)上的),也是輸入數(shù)據(jù)的參數(shù)化;

(6)   DNN可以任意拼裝、組合成各種復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu);

(7)   大部分論文中的DNN結(jié)果都可能是過擬合;因此,很容易出現(xiàn)誤判的情況(輸入的輕微變化,比如給圖片加少量噪聲,結(jié)果就相差很大),容易犯大錯(cuò);

(8)   DNN是以成敗論英雄的,需要在實(shí)際應(yīng)用中好才是真的好,而這個(gè)永遠(yuǎn)不知道。

需要再提一下的是,本文所討論的基于DNN的深度學(xué)習(xí)只是深度學(xué)習(xí)的一種方法而已。還有其他的深度學(xué)習(xí),比如南京大學(xué)周志華老師團(tuán)隊(duì)所提的深度森林等方法。

 

10.2.       深度神經(jīng)網(wǎng)絡(luò)具有“智能”嗎?

從上面的剖析來看,基于DNN的深度學(xué)習(xí)實(shí)質(zhì)上就是對(duì)樣本數(shù)據(jù)集的擬合而已!顯而易見,它僅僅是一個(gè)由數(shù)據(jù)驅(qū)動(dòng)的產(chǎn)生的擬合器或分類器,根本不是一個(gè)“認(rèn)知系統(tǒng)”!我們并沒有看出來它有任何“智能”(即對(duì)數(shù)據(jù)所呈現(xiàn)的規(guī)律、知識(shí)的理解)的存在!對(duì)人工神經(jīng)網(wǎng)絡(luò)的研究可能仍然是幾十年前的進(jìn)展,只不過現(xiàn)在網(wǎng)絡(luò)的規(guī)模變大了(數(shù)據(jù)大了,優(yōu)化強(qiáng)了)而已!

從逼近論的角度來看,如果數(shù)據(jù)足夠大,多到足以(稠密)覆蓋整個(gè)目標(biāo)函數(shù),那么簡單的最近鄰查找或者局部線性插值的性能就足夠好了。此時(shí),筆者猜測,深度學(xué)習(xí)的性能與最近鄰查找的性能可能相差無幾!

舉個(gè)例子,市面上出現(xiàn)了許多種類的所謂的“智能機(jī)器人”,聲稱可以與人進(jìn)行自由對(duì)話。建議讀者去測試一下這些對(duì)話機(jī)器人,你們就會(huì)發(fā)現(xiàn),這些機(jī)器人的問答系統(tǒng)基本沒有理解(只有少數(shù)有少量簡單的理解)。如果對(duì)于在其數(shù)據(jù)庫中存在的問題或類似的問題,機(jī)器人能夠回答得比較合理;如果遇上需要邏輯推理的問題,這些機(jī)器人基本就答非所問,或者王顧左右而言他,甚至開始“賣萌”了。有空去逗逗這些對(duì)話機(jī)器人也是蠻有意思的事。

對(duì)于自動(dòng)翻譯等機(jī)器人,只要有足夠的兩種語言的對(duì)應(yīng)詞條或句子(比如有些公司的詞庫數(shù)據(jù)庫非常龐大,達(dá)到億級(jí)),就能“翻譯”(擬合)得還不錯(cuò),達(dá)到一定的實(shí)用水準(zhǔn)。但從本質(zhì)上來講,這些翻譯算法并沒有真正理解語言本身!

關(guān)于深度學(xué)習(xí),我們要有清醒的認(rèn)識(shí):

1)      深度學(xué)習(xí)模型需要大量的訓(xùn)練數(shù)據(jù),才能有較好的效果;因?yàn)檫@些學(xué)習(xí)模型都在做數(shù)據(jù)擬合或回歸,或者是在做統(tǒng)計(jì);

2)     實(shí)際問題中,往往會(huì)遇到小樣本問題,采用傳統(tǒng)的簡單的機(jī)器學(xué)習(xí)方法,則可以很好地解決了,沒必要非得用復(fù)雜的深度學(xué)習(xí)方法;

3)      神經(jīng)網(wǎng)絡(luò)看起來來源于人腦神經(jīng)元的啟發(fā),但絕不是人腦的模擬!它只是一個(gè)復(fù)合函數(shù)!舉個(gè)例子,給一個(gè)三四歲的小孩看過幾只貓之后,他就能識(shí)別其他的貓。也就是說,人類的學(xué)習(xí)過程往往不需要大規(guī)模的訓(xùn)練數(shù)據(jù),而現(xiàn)在的深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法顯然不是對(duì)人腦的模擬。

這幾年各種媒體的大量夸張的報(bào)道和宣傳(即使是戰(zhàn)勝人類的圍棋算法AlphaGo,也并不是真正的人工智能,而僅僅是機(jī)器在一定的游戲規(guī)則下的策略計(jì)算能力),極度夸大了人工智能的進(jìn)展,讓很多大眾誤認(rèn)為“強(qiáng)人工智能”已經(jīng)來臨,甚至產(chǎn)生不必要的恐慌。

事實(shí)上,現(xiàn)在的人工智能的進(jìn)展仍然很小,正如清華大學(xué)人工智能研究院院長張鈸院士在2018年全球人工智能與機(jī)器人峰會(huì)(CCF-GAIR)上的報(bào)告上所指出的:“人工智能剛剛起步,離真正的人工智能還很遙遠(yuǎn)我們必須走向具有理解的人工智能,這才是真正的人工智能?!?/span>

 

10.3.       深度學(xué)習(xí)在工業(yè)界的應(yīng)用

雖然近幾年發(fā)展起來的基于DNN的深度學(xué)習(xí)并未產(chǎn)生真正的智能。但由于現(xiàn)在有大量的數(shù)據(jù),基于數(shù)據(jù)驅(qū)動(dòng)的深度學(xué)習(xí)方法可以在很多領(lǐng)域確實(shí)得到了落地的應(yīng)用。特別是在計(jì)算機(jī)視覺領(lǐng)域,比如人臉識(shí)別、圖像分割與識(shí)別等,該領(lǐng)域做了很多年的一些問題的研究工作,瞬間就被深度學(xué)習(xí)所擊敗!深度學(xué)習(xí)取得了巨大的成功!因此,我們?nèi)阅苁褂蒙疃葘W(xué)習(xí)解決不少問題。

近幾年,催生了大量的人工智能公司,分布在安防、醫(yī)療、金融、智能機(jī)器人、自動(dòng)駕駛、智能芯片、智能家居等領(lǐng)域;各高校也紛紛構(gòu)建了人工智能研究院或大數(shù)據(jù)學(xué)院等;各學(xué)會(huì)成立了人工智能相關(guān)的專業(yè)委員會(huì);國家也紛紛出臺(tái)了有關(guān)人工智能的政策與文件,包括《新一代人工智能發(fā)展規(guī)劃》,鼓勵(lì)人工智能方面的人才培養(yǎng)(從娃娃抓起)和產(chǎn)業(yè)落地。在科研領(lǐng)域,大量的研究工作者和學(xué)生都涌進(jìn)到人工智能領(lǐng)域,在一些人工智能或計(jì)算機(jī)視覺領(lǐng)域的會(huì)議的投稿量迅速增加,參加會(huì)議的人數(shù)達(dá)到歷史新高。

但殘酷的事實(shí)是,絕大部分的人工智能公司都是“偽人工智能”,他們或者僅僅在做著數(shù)據(jù)標(biāo)注的工作,因?yàn)闃?biāo)注數(shù)據(jù)的多少?zèng)Q定著擬合函數(shù)的“智能”!另外,已經(jīng)有些公司因未能找到合適的盈利模式而倒閉。前幾年對(duì)深度學(xué)習(xí)及智能的期望并未達(dá)到人們及投資者的預(yù)期目標(biāo)。今年年初,李開復(fù)曾指出:“2018年是AI泡沫破裂之年”。

從兩年前人工智能熱潮的爆發(fā),到現(xiàn)在熱潮逐漸退去,人們也越來越趨于冷靜來認(rèn)識(shí)人工智能,對(duì)其研究與應(yīng)用逐漸趨于務(wù)實(shí)。筆者也希望人工智能能真正快速發(fā)展,讓人類的生活變得越來越美好!

 

10.4.       深度學(xué)習(xí)與人工智能的關(guān)系

1956年,幾個(gè)計(jì)算機(jī)科學(xué)家相聚在達(dá)特茅斯會(huì)議,提出了“人工智能”(Artificial Intelligence, AI)的概念,夢想著用計(jì)算機(jī)來構(gòu)造復(fù)雜的、擁有與人類智慧同樣本質(zhì)特性的機(jī)器。人工智能研究領(lǐng)域范圍很廣,包括專家系統(tǒng)、機(jī)器學(xué)習(xí)、進(jìn)化計(jì)算、模糊邏輯、計(jì)算機(jī)視覺、自然語言處理、推薦系統(tǒng)等,如圖27 (左)。

 

機(jī)器學(xué)習(xí)(MachineLearning, ML)是一種實(shí)現(xiàn)人工智能的方法。其基本做法是使用算法來解析數(shù)據(jù)、從中學(xué)習(xí),然后對(duì)真實(shí)世界中的事件做出決策和預(yù)測。與傳統(tǒng)的為解決特定任務(wù)、硬編碼的軟件程序不同,機(jī)器學(xué)習(xí)是用大量的數(shù)據(jù)來“訓(xùn)練”,通過各種算法從數(shù)據(jù)中學(xué)習(xí)如何完成任務(wù)。傳統(tǒng)的機(jī)器學(xué)習(xí)算法包括決策樹、聚類、貝葉斯分類、支持向量機(jī)、EMAdaboost等等。從學(xué)習(xí)方法上來分,機(jī)器學(xué)習(xí)算法可以分為監(jiān)督學(xué)習(xí)(如分類問題)、無監(jiān)督學(xué)習(xí)(如聚類問題)、半監(jiān)督學(xué)習(xí)、集成學(xué)習(xí)、深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)等。

深度學(xué)習(xí)(DeepLearning, DL)是一種實(shí)現(xiàn)機(jī)器學(xué)習(xí)的技術(shù),是解決特征表達(dá)的一種學(xué)習(xí)過程。現(xiàn)在常指利用深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)。在很早就有人提過,但由于當(dāng)時(shí)訓(xùn)練數(shù)據(jù)量不足、計(jì)算能力落后,因此深度學(xué)習(xí)的效果不盡如人意;直到近幾年,深度學(xué)習(xí)才較好地實(shí)現(xiàn)了各種任務(wù)。事實(shí)上,除了基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí),還有其他形式(比如深度森林)的深度學(xué)習(xí)方法。

因此,機(jī)器學(xué)習(xí)是一種實(shí)現(xiàn)人工智能的方法,深度學(xué)習(xí)是一種實(shí)現(xiàn)機(jī)器學(xué)習(xí)的技術(shù),而深度神經(jīng)網(wǎng)絡(luò)是實(shí)現(xiàn)深度學(xué)習(xí)的一種具體的實(shí)現(xiàn)工具,如圖28(右)所示。簡而言之,從范疇來講,他們的關(guān)系如下:

深度神經(jīng)網(wǎng)絡(luò) <>深度學(xué)習(xí) <>機(jī)器學(xué)習(xí) 人工智能

 

 

28. 左:人工智能的研究范疇;右:人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系。

(圖片來自互聯(lián)網(wǎng))

但殘酷的事實(shí)是,近幾年流行的基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)僅僅是一個(gè)數(shù)據(jù)擬合器,并不存在著分析與理解等智能的能力。現(xiàn)有的技術(shù)和方法離真正的人工智能還非常遙遠(yuǎn)!

 

 

 

 

十一、       三維幾何數(shù)據(jù)

 

在計(jì)算機(jī)圖形學(xué)中,我們研究的對(duì)象是三維(3D)形狀對(duì)象,即虛擬空間中的數(shù)字化的物理實(shí)體。表達(dá)3D對(duì)象的3D幾何數(shù)據(jù)是繼聲音、圖像、視頻之后的第四代數(shù)字可視媒體(如圖29),已逐漸具有越來越廣泛的應(yīng)用。

29. 四代可視媒體的發(fā)展:聲音、圖像、視頻、3D幾何。

 

11.        

11.1.       3D 數(shù)據(jù)的重要性

地球上的人及所有動(dòng)物都有兩只眼睛,每只眼睛類似于一臺(tái)照相機(jī),看到的是場景在視網(wǎng)膜(成像平面)上的投影圖像,如圖30(左)。兩只眼睛位置不同,就產(chǎn)生對(duì)同一場景的視差,從而在大腦生成了場景的立體和3D信息(雙目立體視覺原理),如圖30(右)。

 

30. 左:單眼看到的是圖像,為三維世界在成像平面上的投影影像;右:人類及動(dòng)物的兩只眼睛通過雙眼的視差產(chǎn)生了對(duì)場景物體的立體和三維的信息。(圖片來自于互聯(lián)網(wǎng))

因此,人類及動(dòng)物的視覺感知系統(tǒng)是具有立體的特性。世界是三維的,3D模型提供了世界及所有物體的全方位、全息的表達(dá),能提供比二維圖像更豐富、更全面的空間信息(比如獵鷹能在幾公里外判斷草地上一只兔子的遠(yuǎn)近和方位,以便做出下一步的飛行行為)。而單眼(如果以前存在的話)動(dòng)物則因無法分辨物體的遠(yuǎn)近,而無情地被自然法則所淘汰。

計(jì)算機(jī)視覺通過對(duì)圖像的理解和分析已經(jīng)能夠解決非常多的任務(wù)(比如物體檢測、分割、識(shí)別、檢索等)。但在很多實(shí)際應(yīng)用中,如果涉及到空間關(guān)系分析以及與3D環(huán)境和物體的理解、交互和創(chuàng)造,則光靠2D圖像信息是不夠的,此時(shí)必須依賴場景的3D信息,比如數(shù)字城市中的空間關(guān)系分析、機(jī)器人抓取3D物體、虛擬和增強(qiáng)現(xiàn)實(shí)、物聯(lián)網(wǎng)數(shù)據(jù)的空間關(guān)聯(lián)等,如圖31所示。在這些應(yīng)用中,僅僅靠圖像信息是無法很快完成各項(xiàng)任務(wù)的。

31. 三維數(shù)據(jù)在很多實(shí)際應(yīng)用場景中是必不可少的信息。

 

11.2.       3D數(shù)據(jù)集

隨著3D物體的掃描與采集手段的日益增多(特別是近幾年快速發(fā)展的深度相機(jī),比如Microsoft KinectIntel RealSense、Google Project Tango、Apple Primesense、Asus Xtion等)、未來可采集3D信息的移動(dòng)終端(去年iPhoneX上已有深度相機(jī))的普及、以及互聯(lián)網(wǎng)上3D模型的創(chuàng)造與分享,3D數(shù)據(jù)(包括RGB-D數(shù)據(jù))將日益豐富。

至今,已有許多研究機(jī)構(gòu)構(gòu)建并公布了一些3D數(shù)據(jù)集,比如:

ShapeNet數(shù)據(jù)集:包含了約300多萬個(gè)3D模型(3000多類物體),每個(gè)模型有語義注釋。這是當(dāng)前最大的一個(gè)三維模型數(shù)據(jù)集;其子集ShapeNetCore具有一些手工的標(biāo)注;

ModelNet數(shù)據(jù)集:包含了12多個(gè)3D模型(662類),包含兩個(gè)子集Model10ModelNet40

ShapeGoogle數(shù)據(jù)集:包含了近600個(gè)非剛性3D模型,用于檢索測試;

SHREC數(shù)據(jù)集:包含了上千個(gè)非剛性3D模型,包括不少人的模型和合成數(shù)據(jù)集;

Watch-N-Patch數(shù)據(jù)集:由Cornell大學(xué)和Stanford大學(xué)公布,主要是人體3D模型數(shù)據(jù)。

還有一些高校和研究機(jī)構(gòu)公開了一些RGB-D數(shù)據(jù)集,包括Princeton大學(xué)(415個(gè)室內(nèi)場景,990萬個(gè)標(biāo)記圖像),紐約大學(xué)(464個(gè)室內(nèi)場景),Cornell大學(xué)(24個(gè)辦公室場景,28個(gè)居家室內(nèi)場景),Washington大學(xué)(14個(gè)室內(nèi)場景)等。

另外,瑞士蘇黎世大學(xué)發(fā)布了一個(gè)使用LiDAR(激光3D掃描)掃描的40個(gè)辦公室場景的高精度3D場景模型數(shù)據(jù)集。

 

11.3.       3D形狀描述子

類似于2D圖像,人們也需要對(duì)3D模型數(shù)據(jù)進(jìn)行分類與識(shí)別、分割與建模、匹配與檢索等。完成這些任務(wù)的關(guān)鍵就是如何定義和計(jì)算3D模型的形狀描述子(Shape descriptors)或特征(Features)。

至今,人們已提出了各種基于全局和局部的形狀幾何屬性的空間分布或統(tǒng)計(jì)信息的3D形狀描述子(如圖32所示)。這些形狀描述子都是針對(duì)某種特定的應(yīng)用或某些特定的3D模型類型而提出的,同時(shí)滿足所有應(yīng)用及所有模型類型的3D形狀描述子還沒有。在實(shí)際應(yīng)用中,應(yīng)根據(jù)物體類型和具體應(yīng)用來選擇合適的形狀描述子(特征選擇)。比如,筆者如下論文使用稀疏選擇的方法來選擇合適的形狀描述子用于3D 形狀分割。

[11-1]Ruizhen Hu, Lubin Fan, Ligang Liu.  Co-Segmentation of 3D Shapes via SubspaceClustering. Computer Graphics Forum (Proc. Symposium on Geometry Processing),31(5): 1703-1713, 2012.

 

11.4.       3D幾何數(shù)據(jù)的深度學(xué)習(xí)的挑戰(zhàn)

隨著3D數(shù)據(jù)(包括單個(gè)模型以及場景模型)的日益流行和豐富,如何利用上述豐富的3D數(shù)據(jù)集來完成分析和處理3D形狀數(shù)據(jù),已成為研究工作者及產(chǎn)業(yè)工作者的關(guān)注焦點(diǎn)和研究熱點(diǎn)。因此,3D形狀的特征提取方法也逐步從上述的人工定義特征方法到基于深度學(xué)習(xí)的特征學(xué)習(xí)方法的發(fā)展。

相對(duì)于圖像與視頻處理,3D幾何數(shù)據(jù)的深度學(xué)習(xí)方法在近幾年才開始有了一些工作和進(jìn)展,但仍面臨著一些挑戰(zhàn)。

(1)   3D數(shù)據(jù)集較小

相比于ImageNet等千萬級(jí)數(shù)據(jù)量的2D圖像數(shù)據(jù)集,現(xiàn)在的3D模型數(shù)據(jù)集的數(shù)量很少,仍未達(dá)到“大數(shù)據(jù)”的規(guī)模。另外,3D數(shù)據(jù)的標(biāo)注也是較為困難的。

(2)   3D數(shù)據(jù)是非結(jié)構(gòu)化的

圖像和視頻都是結(jié)構(gòu)化數(shù)據(jù),是線性結(jié)構(gòu)的,可以表達(dá)為一個(gè)向量或矩陣。但3D模型數(shù)據(jù)是非結(jié)構(gòu)化的(如圖33所示),每個(gè)頂點(diǎn)的鄰域數(shù)是非固定的,從拓?fù)渖峡词且粋€(gè)圖(Graph),無法直接使用深度神經(jīng)網(wǎng)絡(luò)。

(3)   3D數(shù)據(jù)的復(fù)雜性

相對(duì)于圖像和視頻,3D模型還有其他一些復(fù)雜性,包括:

(a)正向姿態(tài)性:圖像基本都是正向拍攝的,但是3D模型的姿態(tài)可以是任意的,如何消除姿態(tài)的影響仍有挑戰(zhàn)。為了方便,一般會(huì)預(yù)先將數(shù)據(jù)集中的模型統(tǒng)一正朝向;

(b)表達(dá)不統(tǒng)一:圖像就是一個(gè)矩陣結(jié)構(gòu),表達(dá)非常統(tǒng)一;但是3D模型有不同的表達(dá)方式,比如點(diǎn)云、網(wǎng)格、體素、隱函數(shù)、CSG樹等(如圖34),使得需要對(duì)不同表達(dá)的數(shù)據(jù)進(jìn)行不同的處理;

(c) 數(shù)據(jù)不完整:由于采集設(shè)備的精度問題,有些3D數(shù)據(jù)(比如RGBD數(shù)據(jù))中存在著大量的噪聲和游離點(diǎn);由于遮擋關(guān)系,有些3D數(shù)據(jù)不夠完全,存在著空洞;還有些3D數(shù)據(jù)的采樣密度不均勻,造成不同部位的信息不對(duì)稱。

32. 各種人工3D形狀描述子。

33. 二維圖像與三維網(wǎng)格的數(shù)據(jù)結(jié)構(gòu)的區(qū)別。

34. 三維幾何數(shù)據(jù)的不同表達(dá)。

 

十二、       智能圖形處理:三維數(shù)據(jù)的深度學(xué)習(xí)

 

3D圖形作為一種新型的可視媒體數(shù)據(jù)類型,同樣可以利用人工智能和深度學(xué)習(xí)的方法來進(jìn)行分析和處理,融合大數(shù)據(jù)、并行計(jì)算及人工智能技術(shù)的最新進(jìn)展以提高計(jì)算機(jī)圖形學(xué)算法及系統(tǒng)易用性及效率,稱為智能圖形處理。

近幾年,已有越來越多的研究工作將機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的方法應(yīng)用于3D數(shù)據(jù)。本節(jié)僅就3D形狀描述子方面做一個(gè)簡略的介紹。

應(yīng)用深度學(xué)習(xí)來自動(dòng)抽取3D形狀特征主要有以下3種方法:第一種,基于傳統(tǒng)的人工特征(維數(shù)一致了)來進(jìn)行更抽象的形狀特征的學(xué)習(xí)和抽??;這種方法是非端到端的;第二種,將3D數(shù)據(jù)轉(zhuǎn)化為規(guī)整結(jié)構(gòu)數(shù)據(jù)(歐氏區(qū)域),然后再應(yīng)用深度學(xué)習(xí)方法抽取形狀特征,稱為顯式方法;第三種,將深度神經(jīng)網(wǎng)絡(luò)改造成能夠處理非歐氏區(qū)域數(shù)據(jù),稱為隱式方法。下面分別從方法論上進(jìn)行簡單介紹。

 

12.        

12.1.       基于人工特征的特征學(xué)習(xí)方法

由于傳統(tǒng)卷積無法直接作用于3D形狀,早期的方法避開了直接以3D形狀作為輸入的訓(xùn)練,而是先從3D模型中提取一些人工特征(稱為低級(jí)特征,如圖32),再把這些特征輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行學(xué)習(xí),獲得新的抽象特征(稱為高級(jí)特征),如圖35所示。

35. 基于人工特征的特征學(xué)習(xí)方法。

[12-1]Zhige Xie, Kai Xu, Ligang Liu, Yueshan Xiong. 3D Shape Segmentation andLabeling via Extreme Learning Machine. Computer Graphics Forum (Proc. SGP),33(5): 85-95, 2014.

[12-2]Kan Guo, Dongqing Zou, and Xiaowu Chen. 3D mesh labeling via deep convolutionalneural networks. ACM Transactions on Graphics, 35, 1, 2015.

[12-3]Zhenyu Shu, Chengwu Qi, Shiqing Xin, Chao Hu, Li Wang, Yu Zhang, Ligang Liu.Unsupervised 3D Shape Segmentation and Co-segmentation via Deep Learning.Computer Aided Geometric Design (Proc. GMP), 43: 39-52, 2016.

人工定義的特征很大程度上取決于人的經(jīng)驗(yàn)。因此,基于人工特征的特征學(xué)習(xí)方法并不是端到端的深度學(xué)習(xí)方法。另外,各種人工特征向量的排列也會(huì)改變特征矩陣及其卷積后的結(jié)果,對(duì)結(jié)果產(chǎn)生如何的影響也不清楚。

 

12.2.       非本征方法

這種方法是將3D數(shù)據(jù)進(jìn)行合適的變換,將其變換到一個(gè)歐氏空間的規(guī)則區(qū)域,以便適用于深度神經(jīng)網(wǎng)絡(luò)。此類方法改變了3D網(wǎng)格模型的形態(tài),本質(zhì)上也改變了數(shù)據(jù)分布空間,是為了適應(yīng)傳統(tǒng)CNNMLP對(duì)拓?fù)涞囊蠖岢龅恼壑越鉀Q方法,因此成為基于歐氏空間的學(xué)習(xí)方法或非本征方法,如圖36所示。

36. 非本征深度學(xué)習(xí)方法。

變換的區(qū)域和方法主要有以下幾種。

(1)   圖像區(qū)域。最簡單的方法就是將3D模型數(shù)據(jù)投影到平面形成圖像。

(a)   多視圖圖像:將3D模型往多個(gè)視角方向投影生成多幅圖像,比如[12-4, 12-5];

(b)  全景圖像:將3D模型往平面投影生成一幅全景圖,比如[12-6];

(c)   參數(shù)化圖像:將3D模型的2D參數(shù)化看成為一幅圖像,比如[12-7, 12-8]。

(2)   體素區(qū)域。

(a)   類比于圖像中的像素,將3D形狀看作三維體素網(wǎng)格的0,1分布,比如[12-9, 12-10, 12-11]。由于體素的個(gè)數(shù)是三次方增長,因此,體素的分辨率無法太大,一般連128x128x128的分辨率做起來都很困難。

(b)  只將模型表面用體素來表達(dá),而省去內(nèi)部體素的存儲(chǔ),并且利用八叉樹的形式來存儲(chǔ),可以有效地提高體素的分辨率及模型的表達(dá)精度,比如[12-12]。

(3)   基元組合。三維形狀還可以表示成一些基本單元的組合,如矩形塊、圓柱、圓錐、球等,然后利用網(wǎng)絡(luò)來學(xué)習(xí)這些基本體塊的參數(shù),比如[12-13, 12-14]。

(4)   點(diǎn)云。直接將3D數(shù)據(jù)看成點(diǎn)的集合。將每個(gè)點(diǎn)看作一個(gè)神經(jīng)元節(jié)點(diǎn),節(jié)點(diǎn)包含點(diǎn)的坐標(biāo)或法向等信息,然后利用深度神經(jīng)網(wǎng)絡(luò)提取點(diǎn)的特征。這里要克服點(diǎn)及點(diǎn)鄰域的順序無關(guān)性等。比如[12-14, 12-15, 12-16,12-18]。

[12-4]Su, H. and S. Maji, et al. (2015). Multi-view convolutional neural networks for3D shape recognition. ICCV.

[12-5]Xie, Z. and K. Xu, et al. (2015). Projective Feature Learning for 3D Shapeswith MultiViewDepth Images. CGF.

 [12-6]Shi, B. and S. Bai, et al. (2015). Deeppano: Deep panoramic representation for3D shape recognition. IEEESignal Processing Letters.

 [12-7]Sinha, A., Bai, J., Ramani, K., et al. (2016). Deep learning 3D shape surfacesusing geometry images. ECCV.

[12-8]Maron, H. and Galun, M. (2017). Convolutional Neural Networks on Surfaces viaSeamless Toric Covers. SIGGRAPH.

[12-9]Qi, C. R. and H. Su, et al. (2016). Volumetric and multi-view cnns for objectclassification on 3D data. CVPR.

[12-10]Brock, A. and T. Lim, et al. (2016). Generative and discriminative voxelmodeling with convolutional neural networks. NIPS.

[12-11]Wu, Z., and Song, S. et al. (2015). 3d shapenets: a deep representation forvolumetric shapes. CVPR.

[12-12]Wang, P. S.  and Liu, Y. et al. (2017). O-cnn: octree-based convolutionalneural networks for 3d shape analysis. TOG.

[12-13]J. Li, K. Xu, et al. Grass: Generative recrusive autoencoders for shapestructures. ACM Trans. on Graph., 36(4), 2017.

[12-14]S. Tulsiani et al. Learning shape abstraction by assembling volumetricprimitives. CVPR, 2017.

[12-15]Garcia-Garcia, A. and Gomez-Donoso, F. et al. (2016). PointNet: A 3DConvolutional Neural Network for real-time object class recognition. IJCNN.

[12-16]Qi, C. R. and H. Su, et al. (2017). PointNet: Deep learning on point sets for3D classification and segmentation. CVPR.

[12-17]Qi, C. R. and Yi, L. et al. (2017). PointNet++: Deep Hierarchical FeatureLearning on Point Sets in a Metric Space. CVPR.

[12-18]Yangyan Li, Rui Bu, Mingchao Sun, and Baoquan Chen (2018). PointCNN.arXiv:1801.07791.

 

12.3.       本征方法

本征方法直接將三維形狀看成二維流形(Manifold)或由點(diǎn)組成的圖(Graph),頂點(diǎn)之間的距離不再是歐氏距離,然后直接將卷積定義在這樣的數(shù)據(jù)結(jié)構(gòu)上,稱為非歐氏空間學(xué)習(xí)的方法或本征方法,如圖37。兩種典型的網(wǎng)絡(luò)為測地卷積網(wǎng)絡(luò)(Geodesic CNN, GCNN)和圖卷積網(wǎng)絡(luò)(Graph-based CNN),如圖38,可參考[12-19, 12-20, 12-21,12-22]。

[12-19]Masci, J. and Boscaini, D. et al. (2015). Geodesic convolutional neuralnetworks on Riemannian manifolds. ICCV.

[12-20]Monti, F. and Boscaini, D., Masci. (2016). Geometric deep learning on graphsand manifolds using mixture model CNNs. arXiv preprint arXiv:1611.08402.

[12-21]Boscaini, D. and Masci, J. et al. (2016). Learning shape correspondence withanisotropic convolutional neural networks. NIPS.

[12-22]Yi, L. and Su, H. et al. (2017). Syncspeccnn: Synchronized spectral CNN for 3dshape segmentation. CVPR.

37. 本征深度學(xué)習(xí)方法。

   

38. 本征深度學(xué)習(xí)的具體方法。左:測地卷積;右:圖卷積網(wǎng)絡(luò)。

 

12.4.       端到端的生成模型

在上面的工作中,深度學(xué)習(xí)用于解決3D形狀的識(shí)別、分割、匹配和對(duì)應(yīng)等問題。近年來,越來越多的工作致力于3D 模型的構(gòu)建和生成(大部分都是使用生成-對(duì)抗網(wǎng)絡(luò)GAN)。由于可以自動(dòng)生成大量的3D模型,對(duì)于擴(kuò)充3D模型數(shù)據(jù)集具有重要的意義,非常值得大家關(guān)注。

這里簡略介紹一下端到端的3D模型生成的一些工作。所謂端到端的生成模型,就是輸入是簡單易獲得的,輸出是三維模型,中間無需其他操作。例如,可以從輸入的一張照片輸出三維體素模型[12-23, 12-24]、點(diǎn)云模型[12-25]、或者網(wǎng)格模型及其參數(shù)化[12-26][12-27]利用級(jí)聯(lián)的圖卷積網(wǎng)絡(luò)由粗到精逐漸細(xì)化網(wǎng)格模型;[12-28]由手繪草圖生成參數(shù)化的夸張人臉模型。

[12-23]J. Wu et al. Learning a probabilistic latent space of object shapes via 3Dgenerative-adversarial modeling. Advances in Neural Information ProcessingSystems, 82-90, 2016.

[12-24]J. Li et al. Grass: Generative recursive autoencoders for shape structures.Siggraph 2017.

[12-25]H. Fan et al. A point set generation network for 3D object reconstruction froma single image. CVPR 2017.

[12-26]T. Groueix et al. AltasNet: A papier approach to learning 3D surfacegeneration. arXiv: 1802.05384, 2018.

[12-27]N. Wang et al. Pixel2Mesh: Generating 3D mesh models form single RGB iamges.arXiv: 1804.01654.

[12-28]X. Han et al. DeepSketch2Face: A deep learning based sketching systems for 3Dface and caricature modeling. Siggraph 2017.

 

【后記】

此文分享了筆者對(duì)基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)的理解,從逼近論的角度深入淺出地解釋了深度學(xué)習(xí)的原理、逐步打開了這個(gè)“黑盒子”,了解了整個(gè)調(diào)試深度網(wǎng)絡(luò)的“煉丹”過程,是個(gè)需要豐富經(jīng)驗(yàn)的“技術(shù)活”。機(jī)器學(xué)習(xí)還有很多其他重要的方法,比如非監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)等,筆者就不一一進(jìn)行介紹了。

從本文的分析可知,基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)背后的運(yùn)行原理主要基于數(shù)據(jù)驅(qū)動(dòng)的函數(shù)擬合,采用的是“經(jīng)驗(yàn)主義”的實(shí)用方法(底層是數(shù)學(xué)的最小二乘回歸方法,上層是一些統(tǒng)計(jì)方法);它離真正的人工智能,即能通過圖靈測試(Turing Testing)的智能機(jī)器還很遠(yuǎn)。近幾年人工智能的“火”可能是一場“虛火”!

39. Gartner 2018人工智能技術(shù)成熟度曲線。(圖片來源于互聯(lián)網(wǎng))

 

五年前(20134月),《麻省理工學(xué)院技術(shù)評(píng)論》雜志將深度學(xué)習(xí)列為2013年十大突破性技術(shù)(Breakthrough Technology)之首。經(jīng)過前幾年的高速發(fā)展,根據(jù)Gartner7月剛發(fā)布的2018人工智能技術(shù)成熟度曲線(如圖39),深度神經(jīng)網(wǎng)絡(luò)及深度學(xué)習(xí)已從前幾年的爬坡階段到達(dá)頂部。未來,相信人們將會(huì)更冷靜地來看待及發(fā)展相關(guān)的技術(shù)和應(yīng)用。

最近,有人提出“可微編程(Differentiable Programming)”的概念,就是將神經(jīng)網(wǎng)絡(luò)當(dāng)成一種語言(而不是一個(gè)簡單的機(jī)器學(xué)習(xí)的方法),來描述我們客觀世界的規(guī)律。甚至Yann LeCun曾在Facebook的文章中說道:“Deep Learning Is Dead.Long Live Differentiable Programming!”(深度學(xué)習(xí)已死,可微編程永生) 這個(gè)概念的提出又將神經(jīng)網(wǎng)絡(luò)提高了一個(gè)層次。

本文完稿核對(duì)時(shí),筆者發(fā)現(xiàn)文中有些數(shù)學(xué)符號(hào)(比如等)存在著重復(fù)定義與使用,但根據(jù)上下文并不影響閱讀和理解,因此筆者就不花時(shí)間去修正了,在此說明下。

再次聲明下,筆者的主要研究領(lǐng)域?yàn)?/span>計(jì)算機(jī)圖形學(xué),而非人工智能領(lǐng)域,因此本文僅僅為筆者從外行的角度對(duì)基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)的粗淺理解,而非人工智能領(lǐng)域?qū)ι疃壬窠?jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的權(quán)威解釋。筆者對(duì)其中的有些內(nèi)容的理解是有限的,甚至是有誤的。因此,該文僅供讀者參考,不作為專業(yè)資料!如有不當(dāng)之處,還請(qǐng)讀者指正!

 

【致謝】

筆者在學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)及深度學(xué)習(xí)的過程中,閱讀了許多相關(guān)的書籍和論文(比如周志華老師的《機(jī)器學(xué)習(xí)》一書和李宏毅老師的課件等)以及微信訂閱號(hào)(比如《SigAI》、《人工智能學(xué)家》、《深度學(xué)習(xí)大講堂》、《老顧談幾何》等),在此表示感謝。也感謝舒振宇、徐凱、韓曉光、沈小勇、胡瑞珍等同行、以及筆者實(shí)驗(yàn)室的同事(張舉勇、傅孝明、楊周旺等)和學(xué)生(陳明佳、方清、杜冬、石磊、歐陽文清、劉中遠(yuǎn)等),與他們的交流和討論也讓筆者受益匪淺。

 

 

最后,希望您能從本文受益。祝您健康、快樂、成功!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多