一、概念
全连接层一般在网络的最后部分做分类输出,全连接层的有m个输入和n个输出,每一个输出都和所有的输入相连,相连的权重w都是不一样的,同时每一个输出还有一个bias。
二、前向全连接
假设输入是4,输出是4,每个输出点都有一个输入点的参数,一共4x4=16个w参数,每个输出点都有一个b参数,一共4个b参数。
前向全连接的定量分析如下
算力:
Flops
BPE byte per element
input feature M*bpe
output feature N*bpe
w参数
*bpe
b参数 N*bpe
可以看到全连接层的w参数是input feature的N倍,输入带宽主要被参数占据。
三、反向全连接gradient传递
反向全连接是有两个2部分,一个是gradient的传递,已知
,求
,为前一层的参数gradient求解准备。
另外是参数gradient求解,已知
,求
和
,从而得到参数的更新值。
假设输入是4,输出是4,每个输出点都有一个输入点的参数,一共4x4=16个w参数,每个输出点都有一个b参数,一共4个b参数。
反向全连接gradient传递的过程如下:(根据前向公式和求导法则很容易得出)
可以看到weight矩阵进行了转置
记为
=
算力为 2MN Flops
三、反向全连接参数gradient求解
参数w gradient求解,已知
,求
为
,其中input feature进行了转置
算力为 MN mul
参数b gradient求解,已知
,求
为
两者就是相等的关系