深度学习——全连接层(Fully connected dence layers)原理解析
一、简介
- 全连接层有多个神经元,是一个列向量(单个样本)。在计算机视觉领域正常用于深度神经网络的后面几层,用于图像分类任务。
- 全连接层算法包括两部分:前向传播(Forward)和反向传播(Backward)
二、 算法解析
前向传播(Forward)
- 上图主要有5个变量,x,a,W,b,σ,上图是单层的全连接层,只有一个神经元。
-
x: 代表一个样本输入的特征的向量,上图x是第L[0]层输入,维度为(12287,1)
-
w: 代表第1层全连接层的权重,维度为(12287,1)
-
b: 代表偏置,维度为(1,1)
-
z: 代表神经元的线性计算 z=WTx+b,维度(1,1)
-
σ: a=σ(z) **函数
-
L: 交叉熵
-
J: 损失函数
图中公式(1)(2)(3)(4)就是前向传播过程,Loss Function 为交叉熵。
反向传播
- 这里也讲解单层的全连接层的反传。反向传播算法是上世纪Hinton发表在nature上一对深度学习影响巨大的算法。读者需要具备点微积分的知识,主要用到链式法则(chain rule)。
- 假设输入数据有m个样本,**函数为sigmoidσ(x)=1+e−x1,σ(x)′=σ(x)(1−σ(x)),算法流程
——————————————————————————————————
J=0,dW=0,db=0,dz=0
foriinm:
// Forward coumpute
zi=WTxi+b
ai=σ(zi)
J+=−(yilog(ai)+(1−yi)log(1−ai))
// Backward
dA=aiyi−1−ai1−yi
dZ=dA∗σ(z)′=ai−yi
dW+=xidZ
db+=dZ
J=m−1J,dW=m1dW,db=m1db
——————————————————————————————————
- dA=∂ai∂J
- dZ=∂ai∂J∂zi∂ai
- dW=∂zi∂J∂W∂zi
-
db=∂ai∂J∂b∂ai
在实际编程中需要注意变量的维度。
- 可以看得出上面算法有个for循环,所以可以用矩阵把它优化,变为下面公式
- dZ=∂A∂J∂z∂A=A−Y
- dW=∂z∂J∂W∂z=m1dZXT
- db=∂a∂J∂b∂a=m1np.sum(dZ,axis=1,keepdims=True)