从流形的观点分析神经网络
无意中看到一本用数学分析神经网络的书,里面用各种数学工具来分析神经网络(如数学分析、线性代数、流形、信息论、概率论、优化等),书的信息如下:
Ovidiu Calin, Deep Learning Architectures - A Mathematical Approach, Springer, 2020.
我看了用流形解释神经网络那一章的前面几页,觉得写的还不错,记录一下。
考虑一个神经元,输入是 x ∈ R n \textbf{x}\in \mathbb{R}^n x∈Rn,输出是 y = σ ( w T x + b ) ∈ R y=\sigma(w^T\textbf{x}+b )\in \mathbb{R} y=σ(wTx+b)∈R。不妨取 σ \sigma σ 是 logistic function。则集合
S = { σ ( w T x + b ) ; w ∈ R n , b ∈ R } S=\{\sigma(w^T\textbf{x}+b );w\in\mathbb{R}^n,b\in \mathbb{R} \} S={σ(wTx+b);w∈Rn,b∈R}
是一个 n + 1 n+1 n+1 维的流形。它可以看成是 R n \mathbb{R}^n Rn上全体连续函数空间(其维数是无穷维)的一个子流形。事实上,计算得
∂ y ∂ b = σ ′ ( w T x + b ) = y ( 1 − y ) ∂ y ∂ w j = σ ′ ( w T x + b ) x j = y ( 1 − y ) x j \frac{\partial{y}}{\partial{b}}=\sigma'(w^T\textbf{x}+b )=y(1-y) \\ \frac{\partial{y}}{\partial{w_j}}=\sigma'(w^T\textbf{x}+b )x_j=y(1-y)x_j ∂b∂y=σ′(wTx+b)=y(1−y)∂wj∂y=σ′(wTx+b)xj=y(1−y)xj
我们说明 { ∂ y ∂ b , ∂ y ∂ w j } \{\frac{\partial{y}}{\partial{b}},\frac{\partial{y}}{\partial{w_j}}\} {∂b∂y,∂wj∂y}线性无关。若 α 0 ∂ y ∂ b + ∑ i = 1 n α i ∂ y ∂ w i = 0 \alpha_0\frac{\partial{y}}{\partial{b}}+\sum_{i=1}^{n}\alpha_i\frac{\partial{y}}{\partial{w_i}}=0 α0∂b∂y+∑i=1nαi∂wi∂y=0,则代入得 α 0 y ( 1 − y ) + ∑ i = 1 n α i y ( 1 − y ) x j = 0 \alpha_0y(1-y) +\sum_{i=1}^{n}\alpha_iy(1-y) x_j=0 α0y(1−y)+∑i=1nαiy(1−y)xj=0,由 y ( 1 − y ) ≠ 0 y(1-y)\neq0 y(1−y)=0 知道 α 0 + ∑ i = 1 n α i x j = 0 \alpha_0 +\sum_{i=1}^{n}\alpha_i x_j=0 α0+∑i=1nαixj=0。再由 x j x_j xj任意性即得结论。从而Jacobian矩阵 J y J_y Jy满秩(为 n + 1 n+1 n+1)。
接下来,训练神经网络的过程实际上是拟合一个函数 z = z ( x ) z=z(\textbf{x}) z=z(x)。如果 z z z在流形 S S S上,那么存在 w ∗ ∈ R n , b ∗ ∈ R w^*\in\mathbb{R}^n,b^*\in \mathbb{R} w∗∈Rn,b∗∈R使得 z = y ∗ = y ( w ∗ , b ∗ ) z=y^*=y(w^*,b^*) z=y∗=y(w∗,b∗)。然而,更一般的情况是 z ∉ S z\notin S z∈/S,这意味着需要找 w ∗ ∈ R n , b ∗ ∈ R w^*\in\mathbb{R}^n,b^*\in \mathbb{R} w∗∈Rn,b∗∈R使得
( w ∗ , b ∗ ) = a r g m i n w , b d i s t ( z , S ) (w^*,b^*)=\mathop{argmin}\limits_{w,b} dist(z,S) (w∗,b∗)=w,bargmindist(z,S)
给定初值 ( w 0 , b 0 ) (w_0,b_0) (w0,b0),一个学习算法会产生一个序列 ( w n , b n ) n (w_n,b_n)_n (wn,bn)n,期望它收敛到 ( w ∗ , b ∗ ) (w^*,b^*) (w∗,b∗)。按作者原话:If the parameters update is made continuously (implied by an infinitesimal learning rate), then we obtain a curve c ( t ) = ( w ( t ) , b ( t ) ) c(t) = (w(t),b(t)) c(t)=(w(t),b(t)) joining ( w 0 , b 0 ) (w_0,b_0) (w0,b0) and ( w ∗ , b ∗ ) (w^*,b^*) (w∗,b∗). This can be lifted to the curve γ ( t ) = y ∘ c ( t ) γ(t) = y \circ c(t) γ(t)=y∘c(t) on the manifold S S S. The fastest learning algorithm corresponds to the "shortest" curve between y ( w 0 , b 0 ) y(w_0,b_0) y(w0,b0) and y ( w ∗ , b ∗ ) y(w^*,b^*) y(w∗,b∗). The attribute "shortest" depends on the intrinsic geometry of the manifold S S S, and this topic will be discussed in the next section. 这样这个优化问题就可以和后面的黎曼度量、测地线等概念建立关联了。
对一般的神经网络,如果我们增大神经元的个数,则对应的参数也相应增多, S S S的维数也增加。记 M = C ( [ 0 , 1 ] ) M=C([0,1]) M=C([0,1]),我们知道对于任意固定的 ϵ > 0 \epsilon>0 ϵ>0,以及任意的 f ∈ M f\in M f∈M,总有一个足够高维数的 S S S使得 d i s t ( f , S ) < ϵ dist(f,S)<\epsilon dist(f,S)<ϵ,其中
d i s t ( f , S ) = i n f s ∈ S m a x x ∈ [ 0 , 1 ] ∣ f ( x ) − s ( x ) ∣ dist(f,S)=\mathop{inf}\limits_{s\in S}\mathop{max}\limits_{x\in [0,1]}|f(x)-s(x)| dist(f,S)=s∈Sinfx∈[0,1]max∣f(x)−s(x)∣
然而实际问题中神经元个数是受限的,如何处理也是作者讨论的话题。