神經網路高斯過程

神經網路高斯過程（neural network Gaussian process，簡稱NNGP) 是一種特殊的高斯過程，可以看作一類特定人工神經網絡序列的極限。具體而言，當多種神經網路架構的寬度趨於無窮時，其函數分布會收斂到一個高斯過程。

## 背景

貝葉斯網路是一種建模工具，它通過為事件分配概，來量化模型預測中的不確定性。深度學習和人工神經網絡則是機器學習中的主流方法，用於構建能從訓練樣本中學習的計算模型。貝葉斯神經網路則將二者相融合，是一種參數與預測都具有機率性的神經網路。標準的神經網路常會對錯誤的預測賦予較高的置信度，而貝葉斯神經網路能夠更準確地評估自身預測正確的可能性。

<image>

人工神經網絡的計算可以表示成人工神經元構成的層序列，其中每一層的神經元數量稱為層的寬度。當我們考察一個貝葉斯神經網路序列（見圖），其所有層的寬度不斷增加時，這個序列在函數分布上最終會收斂到一個神經網路高斯過程。這種無限寬度下的極限具有現實意義，因為在實踐中更寬的網路通常會有更好的性能。同時，這一極限也為我們提供了一種評估網路性能的閉式方法。

除了作為貝葉斯神經網路的極限，神經網路高斯過程還出現在其他幾種場景下：它描述了一個非貝葉斯寬人工神經網絡在參數隨機初始化之後、訓練之前的輸出函數分布；它可以作為神經正切核預測方程中的關鍵組成部分；它在深度資訊傳播中用以表徵超參數和架構是否可以訓練。它還與神經網路的其他大寬度極限有關。

### 適用範圍

關於神經網路與高斯過程的第一個對應關係，最早可以追溯到Radford M. Neal在其1995年博士論文中的結果，當時他的導師是多倫多大學教授傑弗里·辛頓。Neal表示他的研究靈感來源於從事貝葉斯學習研究的戴維·J·C·麥凱。

如今，這一對應關係已被證明適用於多種架構，如單隱藏層貝葉斯神經網路、層寬趨於無窮時的深度全連接網路、通道數趨於無窮時的卷積神經網絡、注意頭數量趨於無窮時的Transformer網路、單元數趨於無窮時的循環網路等。事實上，這種對應關係對幾乎所有神經網路架構都成立。只要一個架構可以完全由矩陣乘法和逐坐標的非線性運算來表達，那麼它就存在一個無限寬度下的高斯過程極限。這一定義涵蓋了由多層感知器、循環神經網絡（如LSTM和GRU）、（任意維度或圖上的）卷積、池化、跳躍連接、注意力、批量歸一化及層歸一化組成的所有前饋或循環神經網絡。

### 圖解說明

<image>

神經網路參數的每一組參數$\theta$對應於由該網路所計算的特定函數。當我們指定網路參數的先驗分布$p(\theta)$時，也就等同於在網路可能實現的所有函數上確定了一個先驗分布。對於許多網路架構而言，當其寬度趨於無窮時，這個函數空間上的分布會收斂到一個高斯過程。

圖中直觀地展示了這一概念。對於一維輸出的神經網路$z^L(\cdot;\theta)$，該圖的坐標軸表示網路對兩個不同輸入$x$和$x^*$的對應輸出值。圖中的每一個黑點都代表了一次隨機採樣：先從$p(\theta)$中隨機抽取一組參數，然後再計算兩個輸入值對應的輸出對$z^L(x;\theta)$和$z^L(x^*;\theta)$。而圖中的紅線則描繪了由$p(\theta)$得到的輸出對的聯合機率分布。這是參數空間中$p(\theta)$對應於函數空間中的分布。在無限寬的神經網路中，由於其函數分布是一個高斯過程，因此對任意有限的一組輸入，其輸出的聯合分布必定是一個多元高斯分布。

## 討論

### 無限寬全連接網路

本節針對全連接網路這一具體架構，討論無限寬神經網路與高斯過程之間的對應關係。我們將提供了一個證明概要，旨在闡述這一對應關係成立的原因，並給出這一架構下神經網路高斯過程的具體函數形式。此處的證明概要主要遵循了Novak等人提出的方法。

#### 網路架構

<image>

考慮一個全連接人工神經網絡，其中$x$為輸入，參數$\theta$由每一層$l$的權重$W^l$和偏置$b^l$組成，$z^l$和$y^l$則分別表示每一層的預激活值（非線性運算之前）和激活值（非線性運算之後），$\phi(\cdot)$為逐點作用的非線性函數，$n^l$為層寬。為簡單起見，輸出向量$z^L$的寬度$n^{L+1}$取為 1。假設網路的參數具有先驗分布$p(\theta)$，其中每一個權重和偏置都獨立地服從一個各向同性的高斯分布，而權重的方差與層寬成反比。該網路的結構如右圖所示，並由以下方程組描述：

$$\begin{align} x &\equiv \text{input} \\ y^l(x) &= \left\{\begin{array}{lcl} x & & l = 0 \\ \phi\left(z^{l-1}(x)\right) & & l > 0 \end{array}\right. \\ z^l_i(x) &= \sum_j W^l_{ij} y^l_j(x) + b^l_i \\ W^l_{ij} &\sim \mathcal N\left( 0, \frac{\sigma^2_w}{n^l} \right) \\ b^l_i &\sim \mathcal N\left( 0,\sigma^2_b \right) \\ \phi(\cdot) &\equiv \text{nonlinearity} \\ y^l(x), z^{l-1}(x) &\in \mathbb R^{n^l \times 1} \\ n^{L+1} &= 1 \\ \theta &= \left\{ W^0, b^0, \dots, W^L, b^L \right\} \end{align}$$

#### 高斯過程$z^l | y^l$

首先，我們注意到預激活值$z^l$可以被描述為一個以激活值$y^l$為條件的高斯過程。這一結論即便在有限寬度的網路中也成立。每個預激活值$z^l_i$是一系列高斯隨機變量（權重$W^l_{ij}$和偏置$b^l_i$）的加權和，而這一求和中每個高斯變量的係數都是之前的激活值$y^l_j$。因為$z^l_i$是零均值高斯隨機變量的加權和，所以其本身也是零均值高斯隨機變量。對於任意$y^l$，$z^l$服從聯合高斯分布，因此其可以被定義為以$y^l$為條件的高斯過程。該高斯過程的協方差（即核函數）取決於權重方差$\sigma_w^2$、偏置方差$\sigma_b^2$以及激活值$y^l$的二階矩矩陣$K^l$：

$$\begin{align} z^l_i \mid y^l &\sim \mathcal{GP}\left( 0, \sigma^2_w K^l + \sigma^2_b \right) \\ K^l(x, x') &= \frac{1}{n^l} \sum_i y_i^l(x) y_i^l(x') \end{align}$$

其中權重方差$\sigma^2_w$的作用是縮放來自$K^l$的貢獻，而偏置由於是對所有輸入共享的，因此$\sigma_b^2$使得$z^l_i$更接近常數矩陣，即讓不同輸入數據點所對應的$z^l_i$更相似。

#### 高斯過程$z^l | K^l$

預激活值$z^l$對$y^l$的依賴僅取決於其二階矩矩陣$K^l$。正因如此，我們可以說$z^l$是一個以$K^l$為條件的高斯過程，而無需取決於整個激活向量$y^l$：

$$\begin{align} z^l_i \mid K^l &\sim \mathcal{GP}\left( 0, \sigma^2_w K^l + \sigma^2_b \right). \end{align}$$

#### 層寬趨於無窮時$K^l \mid K^{l-1}$的確定性

如前所述，$K^l$是激活值$y^l$的二階矩矩陣。由於$y^l$是對預激活值$z^{l-1}$應用非線性函數$\phi$的結果，可以將其替換為$\phi\left(z^{l-1}\right)$，從而將$K^l$（$l>0$）的定義改寫為

$$\begin{align} K^l(x, x') &= \frac{1}{n^l} \sum_i \phi\left( z^{l-1}_i(x) \right) \phi\left( z^{l-1}_i(x') \right) . \end{align}$$

前文已證明$z^{l-1} | K^{l-1}$是一個高斯過程。這意味著，上述$K^l$定義中的求和項，實現上是$n^l$個樣本的平均，這些樣本都是從基於$K^{l-1}$為的高斯過程中採樣得到的，即

$$\begin{align} \left\{ z^{l-1}_i(x), z^{l-1}_i(x') \right\} &\sim \mathcal{GP}\left( 0, \sigma^2_w K^{l-1} + \sigma^2_b \right) . \end{align}$$

隨著層寬$n^l$趨於無窮大，這$n^l$個高斯過程樣本的均值會收斂到一個高斯過程上的積分：

$$\begin{align} \lim_{n^l \rightarrow \infty} K^l(x, x') &= \int dz\, dz'\, \phi( z )\, \phi( z' )\, \mathcal{N}\left( \left[\begin{array}{c} z \\ z' \end{array}\right]; 0, \sigma^2_w \left[ \begin{array}{cc} K^{l-1}(x, x) & K^{l-1}(x, x') \\ K^{l-1}(x', x) & K^{l-1}(x', x') \end{array} \right] + \sigma^2_b \right) \end{align}$$

因此，在無限寬度極限下，輸入對$x$和$x'$的二階矩矩陣$K^l$可以通過一個關於二維高斯分布的積分來計算。對許多常見的激活函數$\phi(\cdot)$，例如ReLU

```
</ref>、ELU、GELU<ref>
```

或誤差函數等，這一積分都存在解析解。即使在沒有解析解的情況下，由於它只是一個二維積分，通常也可以通過數值方法高效地計算。由於該積分是確定性的，$K^l | K^{l-1}$也是確定性的。

為了方便表示，我們定義一個泛函$F$，它代表了上述積分的計算過程，並將前一層的$K^{l-1}$映射到當前層的$K^l$：

$$\begin{align} \lim_{n^l \rightarrow \infty} K^l &= F\left( K^{l-1} \right) . \end{align}$$

#### 神經網路高斯過程$z^L \mid x$

上節我們得到，$n^l \rightarrow \infty$時$K^l \mid K^{l-1}$是確定性的。遞歸地應用這一結論，最後一層的$K^L$可以寫成輸入層$K^0$的確定性函數：

$$\begin{align} \lim_{\min\left( n^1, \dots, n^L\right) \rightarrow \infty} K^L &= F \circ F \cdots \left( K^{0} \right) = F^L\left(K^0\right) , \end{align}$$

其中，$F^L$表示將$F$連續應用$L$次。同時，輸入層的二階矩矩陣$K^0(x,x')=\tfrac{1}{n^0} \sum_i x_i x'_i$也是輸入$x$的確定性函數，加之我們已證明$z^L | K^L$是一個高斯過程，最終我們可以將神經網路的輸出表示為輸入的高斯過程：

$$\begin{align} z^L_i(x) &\sim \mathcal{GP}\left( 0, \sigma^2_w F^L\left(K^0\right) + \sigma^2_b \right) . \end{align}$$

## 軟體庫

Neural Tangents是一個由Google開發的自由開源Python庫，可以用於計算和推斷與各常見神經網路架構相對應的神經網路高斯過程和神經正切核。