拐=1+(2^n-1)^(m-1)=1+(2^n-1)^(N/n^2)

(理解神经网络黑箱的一种方法以及其导出的计算神经网络能力的公式)

(公式推导部分还有一些问题,正在研究)

guai_{relu}=1+(2^{n}-1)^{m-1}=1+(2^{n}-1)^{\frac{N}{n^2}}

guai_{leaky-relu}=2*(2^n)^{m-1}=2*(2^n)^{\frac{N}{n^2}}

该公式为m层,每层n个神经元的神经网络模块的拐点个数,当确定权重参数数量为N时,N=(m-1)*n^2

理解神经网络拟合的角度

一般理解神经网络机理的角度:

对于全连接层:每一层的一个神经元提取得上一个层输出数据的一个特征,该层有n个神经元,则提取出输入该层的数据的n个特征。

对于卷积层:每个卷积核提取一个图像的特征。

卷积层好理解,但是对于全连接层来说,“提取特征”比较难以理解,具体一个神经元提取到什么了,一整个层又提取到什么了,很难说。

但是换个思路,将输入理解为高维空间的点坐标:

前提假设一个神经网络有m层,每层n个神经元,输入输出都是n个数,激活函数全为ReLU函数。

将输入的n个数,看做一个在n维空间中的一个点的点坐标,输出也是。

那么神经网络所做的,就是靠relu函数在0处的“拐点”,塑造一个折线,去趋近真实的数据点或函数。

以拟合目标函数y=sin(x)来举例:

输入为一维的点坐标,如x=2.5,输出也为一维的点坐标,如y=0.1145,按照上图,神经网络利用四个relu函数创造四个拐点,塑造了一个折线。即神经网络用折线趋近曲线。

那扩展到高维空间。假设神经网络的输入为n维的点坐标x,输出也为n维坐标y,真实的目标函数就应该是一个高维曲线,或者说是高维曲面,然后神经网络使用拐点和折线,去趋近高维曲线,或者说用一个高维多面体去趋近目标高维曲面。

那么这个神经网络的“拐点”数量越多,神经网络等效的高维曲线,或者说高维多面体的细节,或者说棱,就越多。之后将这些棱和拐点统称为“拐点”。

推导拐数量公式

假设待研究的神经网络有m层,每层有n层,全部用relu函数。

输入为点x的坐标$$x[x_{0},x_{1},,,,,x_{n-1}]$$,输出为点y的坐标y[y_{0},y_{1},,,,,,y_{n-1}],设nn_{0}()为神经网络在数学上的等效函数,即y_{0}=nn_{0}(x)=nn_{0}(x_{0},x_{1},,,,,,,x_{n-1})y_{1}=nn_{1}(x),……

对于拐点的理解,此处用数学函数表达式的概念比较好理解。nn_0()的非线性就在于在不同的定义域上有不同的解析式,意思就是说,从全局统共来看,nn_0()有拐点+1种解析式,将解析式的种数称为神经网络的“拐”。

先用以下网络结构来理解,此处m=4,n=2。

先看$$y_{0$$。按照神经网络的算法,函数$$nn_{0}()$$可以写成以下的表达式,其中a(x)为激活函数。

y_0=nn_0(x0,x1)=a_7\{a_5[a_3(a_1(x_0)+a_2(x_1))+a_4(a_1(x_0)+a_2(x_1))]+a_6[a_3(a_1(x_0)+a_2(x_1))+a_4(a_1(x_0)+a_2(x_1))]\}

整理一下:

y_0=nn_0(x0,x1)

      =a_7\{​

                a_5[a_3(a_1(x_0)+a_2(x_1))

                     +a_4(a_1(x_0)+a_2(x_1))]

              +a_6[a_3(a_1(x_0)+a_2(x_1))

                     +a_4(a_1(x_0)+a_2(x_1))]

                  \}

此处暂时没有考虑权重和偏置,因为权重和偏置对创造拐点没有本质的贡献,只有数据流经过激活函数才能创造拐点。

对于relu函数来说,relu函数要么就是给输入值乘1,要么就是乘0,下文将激活函数的状态以“a()=0或1”表示。

如果总的是0,很多情况就会一样,如a_7()=0a_5()=a_6()=0是同一个效果,故有一种解析式:nn_0()=0

现在先着眼于a_1()a_2(),除了都等于0,还有另外三种情况,分别是a_1()=1,a_2()=0;a_1()=0,a_2()=1;a_1()=1,a_2()=1,因为偏置和权重的存在,第一种和第二种的解析式是不一样的,同理,a_3()a_4()也是三种不等于0的情况,故最终算得,guai=1+3*3*3

推广得公式:

guai_{relu}=1+(2^{n}-1)^{m-1}

对于leaky_relu函数来说,没有乘0这个情况,所以当输入值为负数时,a_7()=0a_5()=a_6()=0就不是同一个效果了,公式为:

guai_{leaky-relu}=2*(2^n)^{m-1}=2^{mn-n+1},即有几个神经元,就有2的几次方个拐。

对于非拐点激活函数,不太好衡量,因为此时神经网络是用曲面去趋近高维曲面,但是可以大概可以看出网络的曲面的弯曲方向,虽然这个高维曲面没有明确的棱,但是也有“不明确的棱”,如sigmoid函数可以看做有两个拐面的激活函数。

在实际应用时,通常要考虑计算机硬件算力,故此处追加固定权重参数数量N的公式推导。权重参数的数量N=(m-1)*n^2,代入得:

guai_{relu}=1+(2^{n}-1)^{\frac{N}{n^2}}

guai_{leaky-relu}=2*(2^n)^{\frac{N}{n^2}}

不难想到要去对n求导,令其导数为0。

guai_{relu-max}:\frac{2^n*ln2}{2^n-1}-2*ln(2^n-1)=0

guai_{leaky-relu-max}=2*2^{\frac{N}{n}}

关于leaky_relu函数的公式推导,最后的结果显示,当n越大,拐越小,即在不压缩输入数据的前提下,让每层神经元的数量与输入点坐标维度数相等,并因此加深网络,会让神经网络的等效函数拐点更多,整个模型可能会表现得更好。注意,这个公式不是固定神经元数量求最佳结构,而是固定权重参数总量求最佳结构。

(还需要更多的研究和公式的检验及修正)

2024.4.7

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值