1、全连接网络结构
输入层 --> 隐藏层 --> 输出层
2、激活函数:
sigmoid:1/(1+e^-x)
优点:简单
缺点:反向传播造成梯度消失
输出的均值不为0,使梯度朝一个放向更新要么正,要么负
容易饱和,当梯度非常大趋近于1 ,当梯度非常小时趋于零,训练耗时
Tanh函数:(e^z - e^-z)/ e^z + e^-z
优点:解决了sigmoid输出值非0 对称
训练更快更容易收敛
缺点:反向传播容易造成梯度消失
ReLU函数:
y = x if x > 0
0 if x <= 0
优点:解决了梯度消失问题
计算更简单
缺点:可能出现神经元死亡
Leaky ReLU函数
y = x if x > 0
ax if x <= 0
优点:解决 了ReLU的神经元死亡问题
缺点:正负输入的预测关系不一致
3、前向传播
a11= relu(x1*w11+x2*w12+b1)
a12 = relu(x1*w13+x2*w14+b2)
a21 = relu (a11*w21+a12*w22+b3)
y=a21
4、后向传播
1、首先根据链式求导获得离误差最近的参数 w21 w22 b2的梯度
2、再计算距离误差较远的参数 w11 w12 b1的梯度
3、根据链式法则求出所有参数的梯度,再对当前的参数进行更新。
eg:w11 =0.5 w21 =1 b1 = 1 b2 =1
dw11 = - 0.03 dw21 = -0.1 db1 = - 0.05 db2 = -0.3
w11 = 0.5-0.1*(-0.03)
w21 = 1 - 0.1*(-0.1)
b1 = 1-0.1*(- 0.05 )
b2 =11-0.1*( -0.3)
4、利用更新后的参数继续进行前向传播,得到新的输出值。