1.神经网络整体结构

2.激活函数

神经网络的隐藏层和输出层都需要激活函数,常用的激活函数有:

sigmoid函数

神经网络的隐藏层的值和权重怎么提取 神经网络隐藏层函数_神经网络

 tanh函数

神经网络的隐藏层的值和权重怎么提取 神经网络隐藏层函数_神经网络_02

ReLU函数

神经网络的隐藏层的值和权重怎么提取 神经网络隐藏层函数_激活函数_03

Lesky ReLU函数

神经网络的隐藏层的值和权重怎么提取 神经网络隐藏层函数_python_04

 激活函数的选择:对于隐藏层的激活函数,一般来说,tanh函数要比sigmoid函数表现更好一些。因为tanh函数的取值范围在[-1,1]之间,隐藏层的输出被限定在[-1,1]之间,可以看成是在0值附近分布,均值为0。这样从隐藏层到输出层,数据起到了归一化(均值为0)的效果。因此,隐藏层的激活函数使用tanh比sigmoid更好一些。而对于输出层的激活函数,因为二分类问题的输出取值为{0,1},所以一般会选择sigmoid作为激活函数。

当自变量很大的时候,激活函数sigmoid和tanh的斜率很小,因此在此区域内梯度下降算法比较慢。在使用这两个激活函数的时候,尽量避免自变量落在此区域内,尽可能的落在零值附近,从而提高梯度下降算法运算速度。为了弥补这两个激活函数的缺陷,就出现了ReLU激活函数。ReLU激活函数可以保证,自变量大于0时梯度始终为1,但当自变量小于0时恒为0,为了弥补这个缺点出现了Leaky ReLU函数。

如果是分类问题一般情况下,隐藏层选择tanh激活函数,输出层选择sigmoid激活函数。实际应用中,经常使用ReLU和Leaky ReLU 激活函数。具体选择哪个激活函数要根据具体问题进行验证。

选择非线性激活函数的原因:如果使用线性函数作为激活函数,最终的输出仍然是输入x的线性模型。

3.正向传播和反向传播

正向传播过程:

神经网络的隐藏层的值和权重怎么提取 神经网络隐藏层函数_python_05

反向传播过程:

神经网络的隐藏层的值和权重怎么提取 神经网络隐藏层函数_python_06

4.随机初始化

神经网络模型中的参数权重W是不能全部初始化为0的,参数b可以全部初始化为0 ,并不会影响训练效果。python里可以使用如下语句进行W和b的初始化:

W_1 = np.random.randn((2,2))*0.01
b_1 = np.zero((2,1))
W_2 = np.random.randn((1,2))*0.01
b_2 = 0