当前位置:Hotels

请教bp神经网【繁:網】络激活函数

2025-02-27 05:37:17Hotels

神经网络中的激活函数有什么作用?它的作用多,但是大多数文章都没有说到激活函数有什么用,为什么要加激活函数,有的可能会提到激活函数是为了加入非线性部分,但是也没有详细展开说明,而且为什么每层之间要加激活函数?不加,或者每隔几层加一次会怎么样,这篇文章主要是研究激活函数的重要性

神经网络中的激活函数有什么作用?

它的作用多,但是大多数文章都没有说到激活函数有什么用,为什么要加激活函数,有的可能会提到激活函数是为了加入非线性部分,但是也没有详细展开说明,而且为什么每层之间要加激活函数?不加,或者每隔几层加一次会怎么样,这篇文章主要是研究激活函数的重要性。

澳门金沙

构造试验用yòng 的网络先构造一个比较简单的神经网络:单个输入单个输出,一世界杯层10个神经元的隐含层,训练目标是训练出在一定范围内近似sin函数的网络,先在[-4,6]之间随机递增产生100个输入,然后计算其sin值得到输出数据,用这100对数据进行训练。

不用激活函数的情况在不使用激活函数的情况下对网络进行训练,观察其损失函数的变化情况:黑色为训练数据的损失,红色为测试数据的损失可以看得出在大概十几次次迭代之后,误差就稳定不再下降了,而且稳定成一条直线毫无波动,这时候再看看训练出来的网络的拟合情况:红色为网络输出,黑色为期望输出可以看得出在训练结果已经稳定的时候网络的表现是一条直线(图中的直线不平直是因为输入数据点是随机递增的,实际上是一条直线),明明设定有10个神经元来拟合,却根本没有拟合的效果,只能输出一个线性函数澳门威尼斯人。其中的原因要从计算过程中寻找。全连接层的连接权重在数学上可以用一个 m imes n 的矩阵 mathbf{M} 来表示,其中 m 表示输入向量的长度, n 表示输出向量的长度,偏置可以用一个 n 维向量来表示,输入向量为 vec{v_i} ,输出向量为 vec{v_o} ,对于一层的全连接层的运算为 vec{v_o}=mathbf{M}(vec{v_i}) vec{b} ,如果没有激活函数,两层全连接层的运算可以用以下表达式表示:vec{v_o}=mathbf{M_2}(mathbf{M_1}vec{v_i} vec{b_1}) vec{b_2} (1)对于上文构造的两层全连接层的神经网络,mathbf{M_1} 的大小为10×1, vec{b1} 的大小为10, mathbf{M_2} 的大小为1×10, vec{b_2} 的大小为1,看起来这个网络的参数有31个,应该可以大概地近似任意函数,但是事实上这个(繁体:個)网络真正的参数只有两个,整个网络的表达式为 y=kx b ,只能用来表示简单的线性函数

对(1)式进行化简: vec{v_o} = (mathbf{M_2 }mathbf{M_1})vec{v_i} (mathbf{M_2}vec{b_1} vec{b_2}) , 令 k=mathbf{M_2 }mathbf{M_1}, b=mathbf{M_2}vec{b_1} vec{b_2} , 根据矩阵运算的规则,k和b的大小都为1×1,是一个常数,整个网络是一个一维线性函数,所以无论其中的权重怎么变换,都无法近似非线性函数。所以在没有激活函数的情况下,无论叠加多少层,每层的神经元设多少个,结果都只能是线性函数,无法近似非线性的情况。而加上非线性的激活函数的时候,表达式变为(激活函数用表示): vec{v_o}=f_a(mathbf{M_2}f_a(mathbf{M_1vec{v_i} vec{b_1}) vec{b_2}}) ,这种情况下无法做上面的化简操作,这时候网络的参数才有31个,才有更强的拟合能力

皇冠体育

结论只有线性层而没有激活函数的神经网络没有非线性的拟合能力,而实际的拟合任务通常都是非线性的。两层线性层之间不加激活函数的情况下,网络的实际参数会变少,对于n输出m输出的任意层数任意神经元数的澳门新葡京全连接层,其实[shí]际参数不超过n×

本文链接:http://10.21taiyang.com/Hotels/21542678.html
请教bp神经网【繁:網】络激活函数转载请注明出处来源