• 神经网络-前向传播Forward propagation


    前向传播Forward propagation

    前向传播算法就是: 将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止

    在正式介绍前向传播前,先简单介绍计算图(Computational Graph)的概念。

    y = w ∗ x + b \mathrm{y}=\mathrm{w} * \mathrm{x}+\mathrm{b} y=wx+b

    可以用下面的有向无环图表示。

    在这里插入图片描述

    假设一个三层的神经网络,有两个输入和一个输出,每一个层都是全连接层和激活函数层

    第一层输入为

    Y ( 1 ) = X ( 1 ) W ( 1 ) + b ( 1 ) Y^{(1)}=X^{(1)} W^{(1)}+b^{(1)} Y(1)=X(1)W(1)+b(1)

    在这里插入图片描述

    [ y 1 , 1 ( 1 ) y 1 , 2 ( 1 ) y 1 , 3 ( 1 ) y 1 , 4 ( 1 ) ] = [ x 1 , 1 ( 1 ) x 1 , 2 ( 1 ) ] [ w 1 , 1 ( 1 ) w 1 , 2 ( 1 ) w 1 , 3 ( 1 ) w 1 , 4 ( 1 ) w 2 , 1 ( 1 ) w 2 , 2 ( 1 ) w 2 , 3 ( 1 ) w 2 , 4 ( 1 ) ] + [ b 1 , 1 ( 1 ) b 1 , 2 ( 1 ) b 1 , 3 ( 1 ) b 1 , 4 ( 1 ) ] \left[y(1)1,1y(1)1,2y(1)1,3y(1)1,4\right]=\left[x(1)1,1x(1)1,2\right]\left[w(1)1,1w(1)1,2w(1)1,3w(1)1,4w(1)2,1w(1)2,2w(1)2,3w(1)2,4\right]+\left[b(1)1,1b(1)1,2b(1)1,3b(1)1,4\right] [y1,1(1)y1,2(1)y1,3(1)y1,4(1)]=[x1,1(1)x1,2(1)][w1,1(1)w2,1(1)w1,2(1)w2,2(1)w1,3(1)w2,3(1)w1,4(1)w2,4(1)]+[b1,1(1)b1,2(1)b1,3(1)b1,4(1)]

    其中w和b的数值是神经网络通过学习得到的

    之后我们可以得到第一层的输出,第一全连接层的运算过程

    [ 1.12 1.28 0.32 − 0.36 ] = [ 0.4 0.6 ] [ 1.1 − 0.3 − 0.1 − 0.6 − 0.2 0.5 1.1 − 0.2 ] + [ 0.8 1.1 − 0.3 0.0 ] \left[1.121.280.320.36\right]=\left[0.40.6\right]\left[1.10.30.10.60.20.51.10.2\right]+\left[0.81.10.30.0\right] [1.121.280.320.36]=[0.40.6][1.10.20.30.50.11.10.60.2]+[0.81.10.30.0]

    接着是激活函数层,激活函数用于提供非线性性,我们以ReLU函数为例

    https://baike.baidu.com/item/ReLU 函数/22689567

    y = ReLU ⁡ ( x ) = { 0 , x < 0 x , x ⩾ 0 y=\operatorname{ReLU}(x)=\left\{0,x<0x,x0\right. y=ReLU(x)={0,x,x<0x0

    ReLU函数相当于保留正值,将负值强制置0

    在这里插入图片描述

    第二层输出为

    Y ( 2 ) = X ( 2 ) W ( 2 ) + b ( 2 ) Y^{(2)}=X^{(2)} W^{(2)}+b^{(2)} Y(2)=X(2)W(2)+b(2)

    [ y 1 , 1 ( 2 ) y 1 , 2 ( 2 ) y 1 , 3 ( 2 ) y 1 , 4 ( 2 ) ] = [ x 1 , 1 ( 2 ) x 1 , 2 ( 2 ) x 1 , 3 ( 2 ) x 1 , 4 ( 2 ) ] [ w 1 , 1 ( 2 ) w 1 , 2 ( 2 ) w 1 , 3 ( 2 ) w 1 , 4 ( 2 ) w 2 , 1 ( 2 ) w 2 , 2 ( 2 ) w 2 , 3 ( 2 ) w 2 , 4 ( 2 ) w 3 , 1 ( 2 ) w 3 , 2 ( 2 ) w 3 , 3 ( 2 ) w 3 , 4 ( 2 ) w 4 , 1 ( 2 ) w 4 , 2 ( 2 ) w 4 , 3 ( 2 ) w 4 , 4 ( 2 ) ] + [ b 1 , 1 ( 2 ) b 1 , 2 ( 2 ) b 1 , 3 ( 2 ) b 1 , 4 ( 2 ) ] \left[y(2)1,1y(2)1,2y(2)1,3y(2)1,4\right]=\left[x(2)1,1x(2)1,2x(2)1,3x(2)1,4\right]\left[w(2)1,1w(2)1,2w(2)1,3w(2)1,4w(2)2,1w(2)2,2w(2)2,3w(2)2,4w(2)3,1w(2)3,2w(2)3,3w(2)3,4w(2)4,1w(2)4,2w(2)4,3w(2)4,4\right]+\left[b(2)1,1b(2)1,2b(2)1,3b(2)1,4\right] [y1,1(2)y1,2(2)y1,3(2)y1,4(2)]=[x1,1(2)x1,2(2)x1,3(2)x1,4(2)]w1,1(2)w2,1(2)w3,1(2)w4,1(2)w1,2(2)w2,2(2)w3,2(2)w4,2(2)w1,3(2)w2,3(2)w3,3(2)w4,3(2)w1,4(2)w2,4(2)w3,4(2)w4,4(2)+[b1,1(2)b1,2(2)b1,3(2)b1,4(2)]

    x2的值由上一层的输出得到,最后得到第二全连接层的输出

    在这里插入图片描述

    在经过激活函数层

    在这里插入图片描述

    最后一层为输出层

    [ y 1 , 1 ( 3 ) ] = [ x 1 , 1 ( 3 ) x 1 , 2 ( 3 ) x 1 , 3 ( 3 ) x 1 , 4 ( 3 ) ] [ w 1 , 1 ( 3 ) w 2 , 1 ( 3 ) w 3 , 1 ( 3 ) w 4 , 1 ( 3 ) ] + [ b 1 , 1 ( 3 ) ] \left[y(3)1,1\right]=\left[x(3)1,1x(3)1,2x(3)1,3x(3)1,4\right]\left[w(3)1,1w(3)2,1w(3)3,1w(3)4,1\right]+\left[b_{1,1}^{(3)}\right] [y1,1(3)]=[x1,1(3)x1,2(3)x1,3(3)x1,4(3)]w1,1(3)w2,1(3)w3,1(3)w4,1(3)+[b1,1(3)]

    最终输出为

    在这里插入图片描述

    这就是整个网络的前向传播过程

    在这里插入图片描述

  • 相关阅读:
    【每日一题】151. 反转字符串中的单词
    Python数据分析案例06——现代人的婚育意愿调查分析(基于逻辑回归模型和问卷数据)
    【git】Git 回退代码到某次 commit
    钟汉良日记:在YouTube上做视频博主
    Cheerleaders UVA - 11806
    服务部署:解决Docker容器与虚拟机主机之间MySql连接访问问题
    【OpenCV入门】第七部分——图像的几何变换
    java计算机毕业设计ssm+vue个人时间规划系统
    【UI自动化(uiautomation)】专栏目录介绍导航
    计划任务备份
  • 原文地址:https://blog.csdn.net/weixin_55500281/article/details/127971779