DNN反向传播计算过程

根据初始化参数,正向计算各个神经元输出

1.使用relu作为**函数,如果输入值是小于等于,偏导将会是0,也就是不会更新梯度;如果输入是大与0,梯度是1

以LR为例,假设使用relu作为**函数,继续学习。

很明显 如果权重初始化为0 这个神经元将不会得到更新 (更新公式:w1=w1-a*w1梯度)

2.如果**函数是sigmoid,这样即使初始化权重全部是0,但梯度不会全部是0(sigmoid梯度=sig(1-sig))

 

综上,对深度网络如果某一层初始化权重全部是0,且使用了relu作为**函数,那这一层将不会得到更新,包括前面的每一次也不会更新(一直使用的是初始值),对于该全0层后面的神经元权重将会在每次迭代中进行更新,但是也没有意义(只是在随机训练后面神经元的初始化参数)