神经网络数学原理与编码逻辑(一) 无隐层模型

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

概述

几年前就想写这篇文章但是要上班应付各种工作内容在解析神经网络的理论问题上也是断断续续加上个人能力有限很多问题并没有研究的很明白以及神经网络本身高维问题的复杂性导致这个问题的理解也是间歇性的。个人希望在这篇文章里抛砖引玉让大家能更深入理解神经网络内部的基础运行原理启发大家后面的理论工作如有错误请不吝啬指出。本文不会过多的介绍梯度下降或反向传播等参数更新的原理或动力学原理而是以正向过程作为本文的重点。

分离超平面

分离超平面Separating Hyperplane是指将两个不相交的凸集分割成两部分的一个平面。在数学中超平面是 n n n 维欧氏空间中余维度等于 1 的线性子空间 。 H = { x ∣ w T x + b = 0 } H=\{x \mid w^Tx+b = 0\} H={xwTx+b=0} 就是这样的一个分离超平面即将 n n n维欧式空间分离为两个半空间的一个超平面。

对于只有1个变量的方程 w 1 x 1 + b = 0 w_1x_1+b=0 w1x1+b=0而言能显然得到 x 1 = − b w 1 x_1=\frac{-b}{w_1} x1=w1b 1 1 1维直线上 x x x为一个点将直线分为两部分。

而对于有2个变量的方程 w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2+b=0 w1x1+w2x2+b=0我们能直接计算出 x 2 = ( − w 1 x 1 − b ) / w 2 x_2=(-w_1x_1-b)/w_2 x2=(w1x1b)/w2我们做一次代数替换 α = − w 1 w 2 β = − b w 2 \alpha=\frac{-w_1}{w_2}\beta=\frac{-b}{w_2} α=w2w1β=w2b方程变为了 x 2 = α x 1 + β x_2=\alpha x_1+\beta x2=αx1+β这个是一元一次函数的等价形式其中 α \alpha α为斜率 β \beta β为截距当 α , β \alpha,\beta α,β确定时该函数在2维平面是一条直线将平面一分为二。

当方程为3个变量是时 w 1 x 1 + w 2 x 2 + w 3 x 3 + b = 0 ⇔ x 3 = α x 1 + β x 2 + γ w_1x_1+w_2x_2+w_3x_3+b=0\Leftrightarrow x_3 =\alpha x_1+\beta x_2+\gamma w1x1+w2x2+w3x3+b=0x3=αx1+βx2+γ 该函数在三维空间中是一个平面将三维空间分离为2个子空间。

同理 n > 3 n>3 n>3 H = { x ∣ w T x + b = 0 } H=\{x \mid w^Tx+b = 0\} H={xwTx+b=0} n n n维空间中的一个超平面由于物理限制我们无法直观的画出超平面了但是这个超平面是存在的所谓分离超平面只是沿用 3 3 3维空间中分离平面的概念。为了方便在任意维的空间中我们统一称 H = { x ∣ w T x + b = 0 } H=\{x \mid w^Tx+b = 0\} H={xwTx+b=0}为分离超平面或简称 w T x + b = 0 w^Tx+b=0 wTx+b=0为分离超平面在超平面的一侧 w T x + b > 0 w^Tx+b>0 wTx+b>0在超平面的另一侧 w T x + b < 0 w^Tx+b<0 wTx+b<0

和支持向量机Support Vector Machine一样在神经网络或深度学习中也几乎处处都会涉及到分离超平面也是其核心内容之一所以这里用较大的篇幅说明。

单层感知机

我们知道感知机 (perceptron) 是一个线性分类模型其公式如下
y = s i g n ( w T x + b ) = { 1 , w T x + b > 0 − 1 , w T x + b ⩽ 0 y = sign(w^Tx+b) =\left\{\begin{matrix} 1&,w^Tx+b>0 \\ -1&,w^Tx+b\leqslant 0 \end{matrix}\right. y=sign(wTx+b)={11,wTx+b>0,wTx+b0
单层感知机是非常简单的一个模型激活函数 s i g n ( x ) sign(x) sign(x)将超平面的一侧强制划分为 1 1 1另一侧划分为 − 1 -1 1本质上是分离超平面的推广当然激活函数也是神经网络中的核心内容之一为了能使用随机梯度下降(SGD)等算法即函数可微我们可以将 s i g n ( x ) sign(x) sign(x)函数替换为 t a n h ( x ) tanh(x) tanh(x) s i g m o i d ( x ) sigmoid(x) sigmoid(x) R e L U ( x ) ReLU(x) ReLU(x)。因为感知机非常简单这里只简单介绍我们的重点放在无隐藏层的模型解析上。

无隐层回归模型

无隐层回归模型其实就是线性回归模型 y = w T x + b y=w^Tx+b y=wTx+b区别于分类模型回归模型相当于直接求超平面而不必硬性划分超平面的两侧所以回归和分类一脉相承核心内容是一样的这也是神经网络可以既用来做分类也可以用来做回归的原因。区别之处在回归的 y y y值是连续的而分类是离散的。

无隐层二分类模型

读者可能会疑问感知机不就是无隐层的二分类模型吗是的我们知道在神经网络中一般有多少个分类就有多少个输出节点对于神经网络的二分类而言我们一般使用2个节点作为输出最后我们会阐明感知机模型等价于无隐层二分类模型。 研究2个节点的原理能更好理解多节点的情形。

对于输出节点1我们有 y 1 = w 1 T x + b 1 y_1 = w^T_1x+b_1 y1=w1Tx+b1对于输出节点2我们有 y 2 = w 2 T x + b 2 y_2 = w^T_2x+b_2 y2=w2Tx+b2在神经网络的训练中我们一般使用 a r g max ⁡ ( x ) arg \max(x) argmax(x)获得输出节点的分类标签即
y = a r g max ⁡ ( y 1 , y 2 ) = { 1 , w 1 T x + b 1 ≥ w 2 T x + b 2 2 , w 1 T x + b 1 < w 2 T x + b 2 y = arg \max(y_1,y_2)=\left\{\begin{matrix} 1&,w^T_1x+b_1\geq w^T_2x+b_2 \\ 2&,w^T_1x+b_1<w^T_2x+b_2 \end{matrix}\right. y=argmax(y1,y2)={12,w1Tx+b1w2Tx+b2,w1Tx+b1<w2Tx+b2在上式中我们注意到该二分类模型的决策超平面为 w 1 T x + b 1 = w 2 T x + b 2 w^T_1x+b_1 = w^T_2x+b_2 w1Tx+b1=w2Tx+b2这里我们作一次变换可得方程 ( w 1 T − w 2 T ) x + ( b 1 − b 2 ) = 0 (w^T_1-w^T_2)x+(b_1-b_2) = 0 (w1Tw2T)x+(b1b2)=0作一次代数替换令 w = ( w 1 T − w 2 T ) , b = ( b 1 − b 2 ) w=(w^T_1-w^T_2),b=(b_1-b_2) w=(w1Tw2T),b=(b1b2) 可得 w T x + b = 0 w^Tx+b=0 wTx+b=0这里因为对 y 1 , y 2 y_1,y_2 y1,y2作了差值 a r g max ⁡ ( x ) arg \max(x) argmax(x)不再适用用 s i g n ( x ) sign(x) sign(x)代替即
y = s i g n ( y 1 − y 2 ) = { 1 , w T x + b > 0 − 1 , w T x + b ≤ 0 y = sign(y_1-y_2)=\left\{\begin{matrix} 1&,w^Tx+b> 0\\ -1&,w^Tx+b\leq 0 \end{matrix}\right. y=sign(y1y2)={11,wTx+b>0,wTx+b0所以我们可以看到二输出节点的无隐藏层分类网络等价于感知机模型 w T x + b = 0 w^Tx+b = 0 wTx+b=0时分到哪类都是一样的 a r g max ⁡ arg \max argmax默认分到第 1 1 1 类类别标号只是指代某类可以任意替换区别在于该分类网络多了一倍的参数其构造的超平面并非 w 1 T x + b 1 = 0 w^T_1x+b_1=0 w1Tx+b1=0 w 2 T x + b 2 = 0 w^T_2x+b_2=0 w2Tx+b2=0而是通过节点间计算得到的在多节点的分类中单个节点的意义比较有限分离超平面是一个相对问题而非单个节点所决定的尤其在多分类中或含有隐藏层的网络中其分离超平面并非显而易见这也是神经网络难以被理解的原因之一。
在这里插入图片描述
以上是二维数据上训练后的结果其中蓝色直线表示节点超平面 w 1 T x + b 1 = 0 w^T_1x+b_1=0 w1Tx+b1=0绿色直线表示节点超平面 w 2 T x + b 2 = 0 w^T_2x+b_2=0 w2Tx+b2=0红色直线为节点间决策超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0。受参数随机初始化的影响虽然产生了几乎相同的决策超平面但是节点的超平面却非常不同。

无隐层多分类模型

神经网络的最后一层一般用来作为分类层或回归层无隐层分类模型也就是我们所说的全连接层(Fully Connected LayerFCLayer)。上面总结了 2 2 2分类的情形相对而言还是比较简单的但是到多分类这里就变得更加复杂了。多分类中最简单的模型是 3 3 3分类模型下面我们将解析 3 3 3分类模型并推广到大于 3 3 3类的情形。

对于 3 3 3分类模型输出由 3 3 3个节点组成 y 1 = w 1 T x + b 1 y_1 = w^T_1x+b_1 y1=w1Tx+b1 y 2 = w 2 T x + b 2 y_2 = w^T_2x+b_2 y2=w2Tx+b2 y 3 = w 3 T x + b 3 y_3 = w^T_3x+b_3 y3=w3Tx+b3这里有多少分离超平面呢每 2 2 2个节点构成一个超平面所以 3 3 3个节点构成 3 3 3个分离超平面分别为 h 12 = 0 , h 13 = 0 , h 23 = 0 h_{12}=0,h_{13}=0,h_{23}=0 h12=0,h13=0,h23=0其中 h 12 = ( y 1 − y 2 ) , h 13 = ( y 1 − y 3 ) , h 23 = ( y 2 − y 3 ) h_{12}=(y_1-y_2),h_{13}=(y_1-y_3),h_{23}=(y_2-y_3) h12=(y1y2),h13=(y1y3),h23=(y2y3)同理根据排列组合原理可以推导出任意节点 n ≥ 2 n \geq 2 n2构成的超平面数量为
f ( n ) = C n 2 = n ∗ ( n − 1 ) 2 f(n) =C_n^2=\frac{n*(n-1)}{2} f(n)=Cn2=2n(n1)当我们使用激活函数 s ( x ) = { 1 , x > 0 0 , x ≤ 0 s(x)=\left\{\begin{matrix} 1&,x> 0\\ 0&,x\leq 0 \end{matrix}\right. s(x)={10,x>0,x0 去编码超平面会得到

   y 1 = max ⁡ ( y 1 , y 2 , y 3 ) ⇔ s ( [ h 12 , h 13 , h 23 ] ) = [ 1 , 1 , 0 / 1 ] y_1=\max(y_1,y_2,y_3)\Leftrightarrow s([h_{12},h_{13},h_{23}])=[1,1,0/1] y1=max(y1,y2,y3)s([h12,h13,h23])=[1,1,0/1]
   y 2 = max ⁡ ( y 1 , y 2 , y 3 ) ⇔ s ( [ h 12 , h 13 , h 23 ] ) = [ 0 , 0 / 1 , 1 ] y_2=\max(y_1,y_2,y_3)\Leftrightarrow s([h_{12},h_{13},h_{23}])=[0,0/1,1] y2=max(y1,y2,y3)s([h12,h13,h23])=[0,0/1,1]
   y 3 = max ⁡ ( y 1 , y 2 , y 3 ) ⇔ s ( [ h 12 , h 13 , h 23 ] ) = [ 0 / 1 , 0 , 0 ] y_3=\max(y_1,y_2,y_3)\Leftrightarrow s([h_{12},h_{13},h_{23}])=[0/1,0,0] y3=max(y1,y2,y3)s([h12,h13,h23])=[0/1,0,0]

这里 0 / 1 0/1 0/1指0或1这也意味着当我们确定编码时我们就能得到概率最大的输出节点。在大于3个节点时也是同样的道理不过编码长度会随节点数接近平方增长。但是我们也注意到这样的编码是不存在的即 s ( [ h 12 , h 13 , h 23 ] ) = [ 0 , 1 , 0 ] s([h_{12},h_{13},h_{23}])=[0,1,0] s([h12,h13,h23])=[0,1,0] s ( [ h 12 , h 13 , h 23 ] ) = [ 1 , 0 , 1 ] s([h_{12},h_{13},h_{23}])=[1,0,1] s([h12,h13,h23])=[1,0,1]原因是逻辑不自洽 ( h 12 < 0 , h 13 > 0 ) ⇒ ( y 2 > y 1 > y 3 ) ⇒ ( y 2 > y 3 ) ⇒ h 23 > 0 (h_{12}<0,h_{13}>0)\Rightarrow (y_2>y_1>y_3)\Rightarrow (y_2>y_3)\Rightarrow h_{23}>0 (h12<0,h13>0)(y2>y1>y3)(y2>y3)h23>0同理 ( h 12 > 0 , h 13 < 0 ) ⇒ h 23 < 0 (h_{12}>0,h_{13}<0)\Rightarrow h_{23}<0 (h12>0,h13<0)h23<0这个是节点比较所带来的特性或缺点也意味着3个输出节点产生的3个超平面只产生一个交点那么在 n > 3 n>3 n>3个节点上的逻辑呢这个问题给读者。

那么模型中还有其他的编码逻辑吗

通过实验归纳我们会发现节点的超平面也可以参与到编码中即任意的节点 y i > 0 y_i>0 yi>0能将一半空间中的其他类别数据简单的分离而因为在 y i > 0 y_i>0 yi>0的空间中可能包含非该类的数据这个时候需要 y i > y n / i y_i>y_{n/i} yi>yn/i那么这个模型中的存在这样的编码逻辑任意类别数据 x i x_i xi如果可以被单一超平面分离且对应的 y i y_i yi m a x max max输出节点那么 y i > 0 y_i>0 yi>0 y i − y n / i > 0 y_i-y_{n/i}>0 yiyn/i>0即先通过节点划分一半的空间再在半空间中通过节点间超平面划分。

因为数据并非线性可分这里需要有一个重要的约束任意类别数据可以被单一超平面分离也就是在划分的半空间中存在该类的完整数据。需要注意的是该逻辑是存在的但模型会受到初始化参数与代价函数影响在边界处理上有权衡如 y i ≤ 0 y_i\leq0 yi0的空间也可能包含该类数据如上图及下图中个别蓝点存在于 y i ≤ 0 y_i\leq0 yi0的区域中所以以上逻辑中 y i > 0 y_i>0 yi>0更像是一个约束条件这个约束条件能更好的理解单个节点的逻辑。以上逻辑在二分类模型中也是相同的。
在这里插入图片描述
以上是二维数据上训练后的结果其中蓝、绿、粉直线分别表示节点超平面 y 1 = 0 , y 2 = 0 , y 3 = 0 y_1=0,y_2=0,y_3=0 y1=0,y2=0,y3=0节点超平面虚线将节点所属类别数据几乎完整划分到半空间中红、黑、黄直线分别表示决策超平面 h y 1 y 2 = 0 , h y 1 y 3 = 0 , h y 2 y 3 = 0 h_{y_1y_2}=0,h_{y_1y_3}=0,h_{y_2y_3}=0 hy1y2=0,hy1y3=0,hy2y3=0决策超平面将3类数据划分到6个区域中且每个超平面将两类数据完整分离。

线性区域Linear Regions

所谓线性区域特指由线性函数所划分出来的区域在神经网络中特指超平面所划分的区域。如上图3个分离超平面实线将输入空间划分为了6个线性区域训练后理想情况下使得每一个区域只包含单个类别的数据这样我们就能够通过区域的编码获取数据在该区域的类别信息。线性区域在深度学习理论中有很多的研究尤其是在模型复杂度上线性区域数量能很好的描述模型容量。

对于无隐藏层的网络而言最大线性区域数量 f f f与输入空间维度 d d d、超平面数量 m m m的关系为:
f ( d , m ) = 1 + m + C m 2 + . . . + C m d = ∑ i = 0 d C m i f(d,m)=1+m+C_m^2+...+C_m^d=\sum_{i=0}^{d}C_m^i f(d,m)=1+m+Cm2+...+Cmd=i=0dCmi我们带入在2维空间上超平面数量为3时可以得到最大可以划分的线性区域数量为 1 + 3 + 3 = 7 1+3+3=7 1+3+3=7而在无隐藏层的模型中最大线性区域数量 f f f与输入空间维度 d d d、节点数量 n n n的关系为:
f ( d , n ) = ∑ i = 0 d C c n 2 i f(d,n)=\sum_{i=0}^{d}C_{c_n^2}^i f(d,n)=i=0dCcn2i在有隐藏层的模型中隐藏层因为激活函数的作用其节点数量和超平面的关系为 m = n m=n m=n最大线性区域的数量计算也较简单而有隐藏层模型总的线性区域数量计算会不太相同后面会讨论其他组合问题可参考 Enumerative Combinatorics或Combinatorial Theory的内容。

线性不可分

线性不可分的定义数据集 D D D存在 n = 2 n=2 n=2类数据对于任意类别数据 x i x_i xi与其他类别数据 x n / i x_{n/i} xn/i存在 ( w , b ) (w,b) (w,b)使得 w T x i + b > 0 w^Tx_i+b>0 wTxi+b>0 w T x n / i + b ≤ 0 w^Tx_{n/i}+b \leq0 wTxn/i+b0这时我们称数据集 D D D是线性可分的反之我们称数据集 D D D是线性不可分的。

这里为什么是 n = 2 n=2 n=2目前看到的线性可分的定义都是在2类问题上那就意味着在 n > 2 n>2 n>2类时数据不能被线性划分但是无隐藏层的分类模型是可以处理这种 n ≥ 2 n\geq2 n2类问题的且在 n > 2 n>2 n>2时能处理比这个问题稍强的线性不可分情形即在 w T x i + b > 0 w^Tx_i+b>0 wTxi+b>0的半空间中可以再次划分。

激活函数的作用

通过上面的分析如 s i g n ( x ) sign(x) sign(x)激活函数可以直接将任意节点超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0转化为决策超平面而无需节点间的比较这样也简化了模型编码减少模型参数量避免节点比较带来的最大编码区缺陷。其他激活函数也是同样的道理如 R e L U ( x ) ReLU(x) ReLU(x)等等。激活函数的这个性质对有隐藏层的网络解析也是很重要的如果超平面要基于节点间比较来产生将会变得更加复杂。

通过对无隐层网络的分析我们也发现了 w T x + b = 0 w^Tx+b=0 wTx+b=0是非常重要的决策超平面任意节点间的比较都可以转化为 w T x + b = 0 w^Tx+b=0 wTx+b=0的形式所以直接使用 w T x + b = 0 w^Tx+b=0 wTx+b=0作为决策边界能使编码逻辑更加简单清晰易于解释。而 s i g n ( x ) , R e L U ( x ) sign(x),ReLU(x) sign(x),ReLU(x)等几乎常用的激活函数都是以 w T x + b = 0 w^Tx+b=0 wTx+b=0作为决策边界编码数据的。

总结

通过本篇文章希望大家能理解无隐藏层模型的编码逻辑及激活函数的作用这边文章没有解析多层感知机因为多层感知机相对来说会更加复杂其编码逻辑和无隐藏层模型有较大的区别且内容较多多层感知机的内容将留在下一篇文章分析。

参考文献

  1. On the Number of Linear Regions of Deep Neural Networks
  2. On the number of response regions of deep feed forward networks with piece- wise linear activations
  3. On the Expressive Power of Deep Neural Networks
  4. On the Number of Linear Regions of Convolutional Neural Networks
  5. Bounding and Counting Linear Regions of Deep Neural Networks
  6. Facing up to arrangements: face-count formulas for partitions of space by hyperplanes
  7. An Introduction to Hyperplane Arrangements
  8. Combinatorial Theory: Hyperplane Arrangements
  9. Partern Recognition and Machine Learning
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“神经网络数学原理与编码逻辑(一) 无隐层模型” 的相关文章