@catscarf
2018-04-07T16:48:56.000000Z
字数 1636
阅读 1260
每一个节点有两个步骤,先用线性方程把前一层的多个激励值 变为一个参数 ,然后用一个函数 得到最终的值 ,也就是下一层的激励值
使用矩阵进行运算可以同时得到每一个节点的结果
之前使用的 就是一个激活函数
不同层的激活函数可能不同
ReLU 函数
Leaky ReLU 函数
为什么使用 ReLU 函数?
- 转载自 https://www.zhihu.com/question/29021768/answer/43488153
- 第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
- 第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成*信息丢失,从而无法完成深层网络的训练
- 第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。
z<0 ? 0 : 1
z<0 ? 0.001 : 1
w1=np.randn.randn((2,2)) * 0.01
建立神经网络的步骤
关于激活函数的解释
普适近似理论(universal approximation theorem)表明,带有线性输出层和至少一层带有“挤压”性质的激活函数的隐含层的前馈神经网络,在隐含层具有足够神经元数的情况下,可以以任意精度近似任何一个从有限空间到另一个有限空间映射的Borel可测函数(定义在有界闭集上的任意连续函数是Borel可测的)
所以,要想网络获得普适近似器的性质,一个必须点是“要有带有“挤压”性质的激活函数”。这里的“挤压”性质是因为早期对神经网络的研究用的是sigmoid类函数,所以对其数学性质的研究也主要基于这一类性质:将输入数值范围挤压到一定的输出数值范围(后来发现,其他性质的激活函数也可以使得网络具有普适近似器的性质,如ReLU )
作者:Aewil Zheng