• 深度学习 神经网络(2)前向传播


    一、前言

    前面介绍了《感知器》,类似于单个神经元细胞,现在我们用多个感知器组合成更加复杂的神经网络。本文介绍了多层神经网络通过前向传播方法,逐层计算出最终结果值的过程。

    二、神经网络结构

    在这里插入图片描述
    如上图所示(亲绘 ^ _ ^),展示了两层神经网络,有n+1个输入,2个输出,包含1个隐藏层。
    其他N层的神经网络以此类推就行。

    输入 x = [ x 0 x 1 ⋮ x n ] x=

    [x0x1xn]" role="presentation" style="position: relative;">[x0x1xn]
    x= x0x1xn

    第1层权重 w ( 1 ) = [ w 00 ( 1 ) w 01 ( 1 ) w 02 ( 1 ) . . . w 0 n ( 1 ) w 11 ( 1 ) w 11 ( 1 ) w 12 ( 1 ) . . . w 1 n ( 1 ) . . . . . . . . . . . . . . . w k 1 ( 1 ) w k 1 ( 1 ) w k 2 ( 1 ) . . . w k n ( 1 ) ] w^{(1)}=

    [w00(1)w01(1)w02(1)...w0n(1)w11(1)w11(1)w12(1)...w1n(1)...............wk1(1)wk1(1)wk2(1)...wkn(1)]" role="presentation" style="position: relative;">[w00(1)w01(1)w02(1)...w0n(1)w11(1)w11(1)w12(1)...w1n(1)...............wk1(1)wk1(1)wk2(1)...wkn(1)]
    w(1)= w00(1)w11(1)...wk1(1)w01(1)w11(1)...wk1(1)w02(1)w12(1)...wk2(1)............w0n(1)w1n(1)...wkn(1)

    第1层输出 a ( 1 ) = f 1 ( w ( 1 ) x ) = [ a 0 ( 1 ) a 1 ( 1 ) ⋮ a k ( 1 ) ] a^{(1)}=f_1(w^{(1)}x)=

    [a0(1)a1(1)ak(1)]" role="presentation" style="position: relative;">[a0(1)a1(1)ak(1)]
    a(1)=f1(w(1)x)= a0(1)a1(1)ak(1)
    其中 f 1 f_1 f1是第1层的激活函数。

    第2层权重 w ( 2 ) = [ w 00 ( 2 ) w 01 ( 2 ) w 02 ( 2 ) . . . w 0 k ( 2 ) w 11 ( 2 ) w 11 ( 2 ) w 12 ( 2 ) . . . w 1 k ( 2 ) ] w^{(2)}=

    [w00(2)w01(2)w02(2)...w0k(2)w11(2)w11(2)w12(2)...w1k(2)]" role="presentation" style="position: relative;">[w00(2)w01(2)w02(2)...w0k(2)w11(2)w11(2)w12(2)...w1k(2)]
    w(2)=[w00(2)w11(2)w01(2)w11(2)w02(2)w12(2)......w0k(2)w1k(2)]

    第2层输出 a ( 2 ) = f 2 ( w ( 2 ) a ( 1 ) ) = f 2 ( w ( 2 ) ( f 1 ( w ( 1 ) x ) ) ) = f 2 ( [ w 00 ( 2 ) w 01 ( 2 ) w 02 ( 2 ) . . . w 0 k ( 2 ) w 11 ( 2 ) w 11 ( 2 ) w 12 ( 2 ) . . . w 1 k ( 2 ) ] [ a 0 ( 1 ) a 1 ( 1 ) ⋮ a k ( 1 ) ] ) = [ a 0 ( 2 ) a 1 ( 2 ) ] a^{(2)}=f_2(w^{(2)}a^{(1)})=f_2\big(w^{(2)}(f_1(w^{(1)}x))\big)=f_2\bigg(

    [w00(2)w01(2)w02(2)...w0k(2)w11(2)w11(2)w12(2)...w1k(2)]" role="presentation" style="position: relative;">[w00(2)w01(2)w02(2)...w0k(2)w11(2)w11(2)w12(2)...w1k(2)]
    [a0(1)a1(1)ak(1)]" role="presentation" style="position: relative;">[a0(1)a1(1)ak(1)]
    \bigg)=
    [a0(2)a1(2)]" role="presentation" style="position: relative;">[a0(2)a1(2)]
    a(2)=f2(w(2)a(1))=f2(w(2)(f1(w(1)x)))=f2([w00(2)w11(2)w01(2)w11(2)w02(2)w12(2)......w0k(2)w1k(2)] a0(1)a1(1)ak(1) )=[a0(2)a1(2)]
    其中 f 2 f_2 f2是第2层的激活函数。

    三、前向传播

    以此类推,那么在第 l l l
    a ( l ) = f l ( w ( l ) a ( l − 1 ) ) a^{(l)}=f_l(w^{(l)}a^{(l-1)}) a(l)=fl(w(l)a(l1))

    x → f 1 w ( 1 ) a ( 1 ) → f 2 w ( 2 ) ⋯ → f l w ( l ) a ( l ) x\xrightarrow[f_1]{w^{(1)}}a^{(1)}\xrightarrow[f_2]{w^{(2)}}\dots \xrightarrow[f_l]{w^{(l)}}a^{(l)} xw(1) f1a(1)w(2) f2w(l) fla(l)的形式,神经网络通过逐层的信息传递,最终得到网络的输出 a ( l ) a^{(l)} a(l),这叫前馈神经网络的前向传播。

    四、参考资料

    神经网络与深度学习-邱锡鹏
    《深度学习入门:基于Python的理论与实现》

  • 相关阅读:
    Java应用工程结构
    网络协议之:memcached binary protocol详解
    分散式车辆协同:伯克利DeepDrive无人机数据集B3D
    JDK1.8,Java,HashMap的put()方法全过程
    C++概念:trl和clr概念的理解
    云原生之旅 - 9)云原生时代网关的后起之秀Envoy Proxy 和基于Envoy 的 Emissary Ingress
    Spring系列八:Spring AOP 和 AspectJ AOP 区别
    迅为iTOP3568开发板Android11获取root权限关闭selinux
    面试题 17.09. 第 k 个数(技巧)
    I/O多路复用 - select
  • 原文地址:https://blog.csdn.net/Leytton/article/details/127522170