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