神经网络和有限元方法
用神經(jīng)網(wǎng)絡(luò)來表示有限元函數(shù)
今天,我想分享的東西是許進(jìn)超老師的一篇文章,ReLU Deep Neural Networks and Linear Finite Elements。你可以理解為,這是一篇譯文。
主要內(nèi)容
它主要是關(guān)于神經(jīng)元數(shù)與層數(shù),在用DNN表示線性有限元的時(shí)候。它告訴我們,當(dāng)維數(shù)大等于2的時(shí)候,我們至少需要兩個(gè)隱藏層,在用ReLu DNN表示線性有限元函數(shù)的時(shí)候。因?yàn)樵谄渌奈墨I(xiàn)中,?log2(d+1)?\lceil \text{log}_2(d+1)\rceil?log2?(d+1)?at most被介紹了,當(dāng)用ReLu DNN表示分片線性函數(shù)的時(shí)候。所以,當(dāng)d大等于2時(shí),2層是必要且充分的,也就是說它是最優(yōu)的(optimal)。
另一方面,文章也給了我們一個(gè)估計(jì),關(guān)于神經(jīng)元的數(shù)目that are need。
再一個(gè),作者介紹了low bit-width的DNN模型,思想來自于用DNN去表示分片線性函數(shù)的特殊結(jié)構(gòu)。
最后,作者以一維的兩點(diǎn)邊值問題,做了一個(gè)數(shù)值實(shí)驗(yàn)。
簡介
近年來,為什么DNN模型能work得這么好,依然是不清楚的。為了弄清楚它,我們可以研究DNN所表示的函數(shù)類的逼近屬性(approximation properties)和表達(dá)能力(expressive power)。
萬有逼近定理(Universal Approximation Theory)告訴我們,任何單隱層神經(jīng)網(wǎng)絡(luò)能夠逼近任何連續(xù)函數(shù)。萬有逼近定理見如下文章:
M. Leshno, V.Y. Lin, A. Pinkus and S. Schocken, Multilayer feedforward networks with a nonpolynomial activation function can approximate any function,Neural networks, 6(1993), 861-867.
另外,我們可以看到下面一個(gè)陳述是正確的:
Every ReLU DNN function in RdR^dRd represents a continuous piecewise linear (CPWL) function dened on a number of polyhedral subdomains.
近年來,上述statement相反(converse)的論述也被證明是正確的。
更近一步,關(guān)于神經(jīng)網(wǎng)絡(luò)去表示分片線性函數(shù)的一個(gè)層數(shù)的論述,被證明了,如下:
Every CPWL function in RdR^dRd can be represented by a ReLU DNN model with at most ?log2(d+1)?\lceil \text{log}_2(d + 1)\rceil?log2?(d+1)? hidden layers.
有了這些考慮,作者想要知道的就是:
- How many numbers of neurons are needed?
- What is the minimal number of layers that are needed?
結(jié)論是,我們需要用O(d2mm!)O(d2^{mm!})O(d2mm!)數(shù)目的神經(jīng)元去表示CPWL(continual piecewise linear),m表示子區(qū)域的數(shù)目。
進(jìn)一步,為了得到更少數(shù)目的DNN表示,作者在文章中考慮了更特殊的一類函數(shù),叫做LFE(Linear Finit Element)。
因?yàn)長FE是節(jié)點(diǎn)基函數(shù)(nodal basis funciotns)的一個(gè)線性組合,所以我們只需要研究節(jié)點(diǎn)基函數(shù)的DNN表示。
最后,作者證明了LFE能用O(dκdN)O(d\kappa ^d N)O(dκdN)數(shù)目的神經(jīng)元表示,用O(d)O(d)O(d)層的一個(gè)網(wǎng)絡(luò),這里的κ\kappaκ取決于網(wǎng)格的正則性。
另外一個(gè)問題,多少層呢?對于LFE而言,2 at least當(dāng)維數(shù)大于2時(shí),?log2(d+1)?\lceil \text{log}_2(d+1)\rceil?log2?(d+1)?at most,那么,其實(shí)d=2,3時(shí),?log2(d+1)?\lceil \text{log}_2(d+1)\rceil?log2?(d+1)?層就是最優(yōu)的。當(dāng)d更大是,是否是最優(yōu)的,仍然是一個(gè)開放的問題。
到底CPWL和LFE的區(qū)別是什么呢?剖分是否確定?不是,只不過是用兩種不同的角度看問題,得到的不同的網(wǎng)絡(luò)而已,它們的神經(jīng)元個(gè)數(shù)和層數(shù)是不同的。
作者還介紹了heavily quantized weights去壓縮神經(jīng)網(wǎng)絡(luò),比如binary和ternary權(quán)重模型。
最后,一個(gè)數(shù)值例子表明,使用 ReLU DNN 的Galerkin方法比適應(yīng)性有限元方法逼近結(jié)果要好。
| 神經(jīng)元數(shù)目 | O(d2mm!)O(d2^{mm!})O(d2mm!) | O(khN)O(k_hN)O(kh?N) | O(dκdN)O(d\kappa^dN)O(dκdN) |
| 層數(shù) | 2 at least(d≥2d\geq 2d≥2,LFE),log2(d+1)\text{log}_2(d+1)log2?(d+1)at most | ?log2kh?+1\lceil \text{log}_2k_h\rceil +1?log2?kh??+1 | O(d)O(d)O(d) |
ReLU DNN的基本性質(zhì)
首先,我們需要介紹一些記號。
我們把Θ\ThetaΘ定義為:
定義作用于向量的激活函數(shù)σ\sigmaσ為:
那么,給定d,c,k∈N+d,c,k\in \mathbb{N}^+d,c,k∈N+,并且:
那么,一般的從Rd\mathbb{R}^dRd到Rc\mathbb{R}^cRc可以寫為:
這里我們假定f0(x)=Θ(x)f^0(x)=\Theta(x)f0(x)=Θ(x)。更簡單地,我們可以寫為:
這里的Θi\Theta^iΘi是表示第i層到第i+1層的。一般我們稱這樣的DNN為k+1層DNN,或者說有k個(gè)隱藏層。
ReLU(rectified linear unit)的定義如下:
容易看到ReLU函數(shù)是CPWL的,自然它們的線性組合也是CPWL的。那么,我們會(huì)有如下一個(gè)引理:
我們把J個(gè)隱藏層且輸出為一個(gè)變量的ReLu DNN,用一個(gè)記號來表示,即:
首先,讓我們來看一下DNN1DNN_1DNN1?,也就是有一個(gè)隱藏層的ReLu DNN,也就是:
這里的上標(biāo)m表示隱藏層神經(jīng)元的數(shù)目。
restrict DNN1mDNN_1^mDNN1m?在Ω\OmegaΩ,我們用如下的記號:
一些文獻(xiàn)已經(jīng)證明了,DNN1(Ω)DNN_1(\Omega)DNN1?(Ω)在C0(Ω)C^0(\Omega)C0(Ω)上是稠密的(dense)。
當(dāng)然,關(guān)于ReLu DNN,我們還有一個(gè)漸近(asymptotic)誤差估計(jì):
這里的hat是表示傅里葉變換。
另外,我們還有一個(gè)定理:
LFE的ReLu DNN表示
我們知道,CPWL能被ReLu DNN表示出來。線性有限元函數(shù)(Linear Finite Element Function,LFE)是一類特殊的CPWL。它也能被ReLu DNN表示出來。
為了說明這一點(diǎn),我們先回顧一下有限元方法的相關(guān)知識,以及引入我們的符號。
有限元網(wǎng)格Th={τk}T_h = \{\tau_k\}Th?={τk?},節(jié)點(diǎn)表示為NhN_hNh?,那么分片線性函數(shù)空間可以寫為:
節(jié)點(diǎn)基函數(shù)(nodal basis function)為:
對任何v∈Vhv\in V_hv∈Vh?,我們有:
用NiN_iNi?表示與i節(jié)點(diǎn)有關(guān)的單元的標(biāo)號,即:
我們用khk_hkh?表示和節(jié)點(diǎn)有關(guān)的單元數(shù)目的最大值(maximum),也就是:
第i個(gè)節(jié)點(diǎn)的支集表示為:
我們說ThT_hTh?是局部凸(locally convex),如果每個(gè)支集是凸的。
下面我們來看看局部凸網(wǎng)格的LFE的ReLU DNN表示。
因?yàn)榉制€性函數(shù)可以用節(jié)點(diǎn)基函數(shù)線性表出,所以我們我們只需要研究節(jié)點(diǎn)基函數(shù)的ReLU DNN表出。
一維情況下,我們有:
對于多維的情況,我們先介紹一個(gè)引理:
這里的gkg_kgk?是節(jié)點(diǎn)基函數(shù)的不同“片”,在整個(gè)定義域上的一個(gè)延伸。把它們?nèi)€(gè)最小,就得到了節(jié)點(diǎn)基函數(shù)。這個(gè)證明有點(diǎn)繁瑣(Tedious)。讓我們skip it。
關(guān)于這個(gè)引理有個(gè)remark:
下面我們介紹一個(gè)重要的定理:
證明如下:
我們可以將取最小值寫成單隱藏層ReLU NN,如下:
我可以check it,雖然我不知道是怎么想到它的。其實(shí),這是一個(gè)單隱層的ReLU DNN。兩個(gè)到四個(gè),再到一個(gè)。
根據(jù)之前那個(gè)引理,我們有:
為了方便,我們把N(i)N(i)N(i)寫為:
那么,我們有:
我們可以對split出來的兩項(xiàng)繼續(xù)做劃分,直到最后為1項(xiàng)或者2項(xiàng)。然后,我們利用:
根據(jù)以上的過程,我們知道,我們可以將基函數(shù)寫成?log2kh?+1\lceil \text{log}_2 k_h\rceil+1?log2?kh??+1個(gè)隱藏層的DNN。WHY + 1?每一次劃分不應(yīng)該加兩層嗎?
考慮二叉樹的結(jié)構(gòu),k層的二叉樹總共有2k?12^k -12k?1個(gè)節(jié)點(diǎn),那么神經(jīng)元的個(gè)數(shù)大概(至多)為:
根據(jù)CWPL和節(jié)點(diǎn)基函數(shù)的表出關(guān)系,我們能得到分片線性函數(shù)能用?log2kh?+1\lceil \text{log}_2 k_h\rceil+1?log2?kh??+1的隱藏層表出。神經(jīng)元的數(shù)目最多為O(khN)O(k_hN)O(kh?N)。
我們現(xiàn)在考慮一類所謂的形狀規(guī)則的有限元網(wǎng)格,滿足:
那么,我們有如下推論:
DNN方法的一個(gè)誤差估計(jì),考慮DNN1DNN_1DNN1?,有如下結(jié)論:
事實(shí)上,后面會(huì)提到,單隱層的DNN是沒有辦法表示線性有限元函數(shù)的。
我們可以找到一個(gè)DNN的結(jié)構(gòu),使得用其去逼近有限元函數(shù)的結(jié)果更好:
維數(shù)大于1時(shí),單隱層ReLU DNN無法表示LFE
淺層的ReLU DNN是無法精確地表示某些有限元函數(shù)的,精確描述如下:
這個(gè)證明啊,really a trifle。作者用了三頁紙來完成這個(gè)證明。我這里就不提了。
這也是這篇文章的一個(gè)主要結(jié)果之一。
一般CPWL的ReLU DNN逼近(approach)
一般的方法,相比于前面提到的逼近方法,需要更少的層數(shù),但是需要多得多(significantly,extremely)的神經(jīng)元。
下面先不帶證明地列出一些主要的結(jié)果:
這里的fif_ifi?是分片線性函數(shù)在片Ωi\Omega_iΩi?上的值。
我們也有l(wèi)attice表示定理,如下:
進(jìn)一步,我們有這樣一個(gè)結(jié)果:
這個(gè)定理告訴我們,我們可以用不超過log2?d+1?\text{log}_2\lceil d+1 \rceillog2??d+1?的隱藏層去表示它。
這個(gè)結(jié)果和前面的LFE的表示結(jié)果相比起來,雖然需要的層數(shù)降低了一些,但是需要的神經(jīng)元多了非常多。
至此,對于一個(gè)局部凸的有限元網(wǎng)格,我們現(xiàn)在又兩種不同的方式來表示它。
我們用這種表示CPWL的一般方式來表示FEL,有如下的一個(gè)結(jié)果:
由此,我們就可以比較出兩個(gè)網(wǎng)絡(luò)結(jié)構(gòu)來表示分片線性函數(shù)的一個(gè)差異,一個(gè)需要?log2(d+1)?\lceil \text{log}_2(d+1)\rceil?log2?(d+1)?隱層O(d2(d+1)kh)O(d2^{(d+1)k_h})O(d2(d+1)kh?)的神經(jīng)元,一個(gè)需要?log2kh?+1\lceil \text{log}_2k_h\rceil +1?log2?kh??+1隱層O(khN)O(k_hN)O(kh?N)的神經(jīng)元。前者雖然層數(shù)少,但是需要多得多的神經(jīng)元。
低位寬的DNN模型
這部分介紹了一種特殊的ReLU DNN模型,它能表示所有的CPWL函數(shù)。它的參數(shù)要么是0,要么是2的次方,也就是說:
By our results in previous sections, we find a special family of ReLU DNN which has at most one general layers and all other layers with low bit-width parameters.
不加證明,我們有如下結(jié)果:
數(shù)值算例
DNN方法求解PDE,考慮如下模型問題:
一般使用DNN求解PDE用的是配點(diǎn)方法,也就是一個(gè)最小二乘問題:
這里的uNu_NuN?是DNN的輸出,使用平滑的激活函數(shù),比如說sigmoid函數(shù)。
當(dāng)然,還有一些其他的方法。
有限元方法一般采用適應(yīng)有限元方法和移動(dòng)網(wǎng)格方法。
適應(yīng)網(wǎng)格方法有如下的誤差估計(jì):
DNN方法一般不需要網(wǎng)格,但是也需要離散點(diǎn)。DNN-Galerkin方法連點(diǎn)都不需要。
單隱層DNN的誤差估計(jì)如下所示:
這里u^\hat uu^是將函數(shù)延拓到整個(gè)(entire)區(qū)間上后做的傅里葉變換。
我們來做一個(gè)一維的兩點(diǎn)邊值問題的例子。考慮如下模型問題:
剖分網(wǎng)格如下:
定義單隱層ReLU DNN為:
這里的θi\theta_iθi?表示區(qū)間[ti?1,ti][t_{i-1},t_i][ti?1?,ti?]上的斜率。
為了滿足邊界條件,我們需要有約束(上標(biāo)到N,文中寫錯(cuò)了):
我們最小化能量函數(shù):
交替以下兩個(gè)步驟:
結(jié)論
足夠多層的ReLU DNN是可以重構(gòu)有限元函數(shù)的,文中討論了兩種不同的逼近方式。
One theoretically interesting question addressed in this paper concerns the minimal number of layers that are needed in a DNN model to reproduce general continuous piecewise linear functions.
作者證明了維數(shù)大于1是,最小需要兩個(gè)隱藏層來表示分片函數(shù),由于上限log2(d+1)\text{log}_2(d+1)log2?(d+1)的約束,二三維的時(shí)候,log2(d+1)\text{log}_2(d+1)log2?(d+1)就是最優(yōu)的,更高維的時(shí)候,是否是最優(yōu)的,還不知道。
不說消耗的事情,一維例子表明DNN的Galerkin逼近是比適應(yīng)有限元方法是更精確的。但是呢,computational cost is a serious issue。
總結(jié)
以上是生活随笔為你收集整理的神经网络和有限元方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P3320 [SDOI2015]寻宝游戏
- 下一篇: 【HNOI 2018】寻宝游戏