Feedforward层(全连接层)和矩阵运算的关系

前言

最近一段时间在看研究生导师发的资料,因为导师是做自然语言处理和知识图谱方向的,所以之前学的CNN的知识暂时用不上啦。NLP和KG方面的知识我之前没怎么接触过,所以最近打算写一系列博文来记录一下学习过程,如果有说得不对的地方请大佬指正。

Feedforward层(全连接层)

    之前在看论文和看代码的时候,我经常看到把神经网络的中间结果输入到全连接层。但是在我的印象中全连接层就是类似于BP神经网络的样子,于是我就很疑惑把一个三维或者是二维的矩阵输入一个BP神经网络里面到底是什么样的。首先给出结论:全连接层=矩阵运算。

Feedforward层(全连接层)和矩阵运算的关系_第1张图片 一个简单的全连接层

    可以看到上图是一个简单的全连接层,输入三个元素输出两个元素。可以看到输入和输出的对应关系为:b_{1}=a_{1}w_{11}+a_{2}w_{21}+a_{3}w_{31}b_{2}=a_{1}w_{12}+a_{2}w_{22}+a_{3}w_{32}(不添加偏置)。我们把输入写成A=[a_{1},a_{2},a_{3}],输出写成B=[b_{1},b_{2}]。再把权重写成W=\begin{bmatrix} w_{11},w_{12}&\\ w_{21},w_{22}&\\ w_{31},w_{32} & \end{bmatrix},很明显B=A\times W是一个标准的矩阵运算。这时候有同学可能就要问了,如果遇到A=\begin{bmatrix} a_{11},a_{12},a_{13}&\\ a_{21},a_{22},a_{23}&\\ a_{31},a_{32},a_{33} & \end{bmatrix}怎么办,很简单我们只要按行把A矩阵拆分成[a_{11},a_{12},a_{13}][a_{21},a_{22},a_{23}][a_{31},a_{32},a_{33}],然后在依次把他们喂入全连接层中就可以了,如下图所示。

Feedforward层(全连接层)和矩阵运算的关系_第2张图片

    在实际的计算中我们可能还会遇到batchsize大于1的情况(比如CNN中同时输入多张图片训练,transformer中同时输入多个句子),这个时候输入的是一个三维的矩阵,那就要构建多组全连接层,没个全连接层输入一张图片或是一个句子,如图所示。(个人理解如果说得不对,请指正)

Feedforward层(全连接层)和矩阵运算的关系_第3张图片

 

你可能感兴趣的:(Feedforward层(全连接层)和矩阵运算的关系)