1. 神经网络的层数
如图的简单神经网络,隐藏层和输出层称为第1层和第2层,可以将输入层称为第0层;
一般来讲习惯称这个神经网络是一个双层神经网络/单隐藏层神经网络。
<图一>
2. 图一中的神经网络的向量化
3. 几种激活函数
(1)sigmoid函数:有梯度消失问题;输出不是以0为中心,值区间在0-1之间,优化困难;收敛缓慢。因此,除非用在二分类的输出层,不然几乎不用。其它场合,tanh函数几乎都比它更优越。
导数:
(2)tanh函数/双曲正切函数:比sigmoid函数优越,但依然存在梯度消失问题。
导数:
(3)ReLU函数/线性修正单元:一般都使用这种函数。不过,它可能导致死亡神经元。
导数(x=0时的导数值影响不大):
(4)Leaky ReLU函数/带泄露的ReLU函数:ReLU函数的一种变体,以解决死亡神经元的问题。
导数(x=0时的导数值影响不大):
4. 很少使用线性激活函数。它使用在输出层或者为了压缩等目的而使用在隐藏层。它几乎没什么用。非线性激活函数才有趣。
5. 神经网络中的梯度下降法
其推导(从单个开始分析,然后向量化):
6. 训练神经网络时候,随机初始化权重非常重要。
Logistic回归中,权重初始化为0是可行的;如果将神经网络中的权重矩阵都初始化为0,再使用梯度下降法,就不行了。
我们通常把权重矩阵初始化为非常小的随机值。因为权重过大的时候,Z将大概率过大或过小,如果激活函数是sigmoid函数或tanh函数,那就会落在激活函数的平缓部分,梯度的斜率会非常小,这意味着梯度下降法会非常慢。