前馈神经网络原理与实现

本文适用于已经对感知机、神经网络有初步了解,但上手比较困难,愿意推导公式,更深入了解神经网络的朋友。

引言

前馈神经网络是所有神经网络中最简单,也是最有效的一种。从单个神经元的角度看,不过就是设计权值与偏置的简单感知机运算。但到底网络是如何实现的?特别是back propagation的原理?我相信刚刚入门的很多朋友与我一样有很多疑惑,但又不想总是调包,那么我们就慢慢推导公式吧。

需要准备

  1. 良好的线性代数知识,特别是矩阵的运算。
  2. 微积分知识,特别是偏导和链式公式的应用。
  3. 基本的python技巧。

符号说明

wljk w j k l :表示从 l1 ( l − 1 ) 层的第 k k 个神经元到第 l 层的第 j j 个神经元的连接上的权重。虽然从直观上不太好理解为什么要这样表示(通常应该表示为 w k j l ),但请先接受这种写法。可以对相邻两层的所有权重用矩阵的形式表示为 wl w l

σ σ :表示激活函数,本文都使用Sigmoid function

blj b j l :表示第 l l j 神经元的偏置,可以对同一层的神经元表示为 bl b l ,记为偏置向量。

alj a j l :表示第 l l j 神经元的激活值,可以对同一层的神经元表示为 al a l ,记为激活向量。
由BP神经网络的定义可得: al=σ(wlal1+bl) a l = σ ( w l a l − 1 + b l )

zl z l :表示带权输入, zl=wlal1+blal=σ(zl) z l = w l a l − 1 + b l a l = σ ( z l )

C C :表示代价函数,定义为 C = 1 2 n | | y ( x ) a L ( x ) | | 2 ,其中 y(x) y ( x ) 表示每个样本的真实输出, L L 表示神经网络的总层数。

代价函数

BP神经网络的向前传播很简单,就使用之前提到的矩阵形式就可以计算,当我们初始化所有权重和偏置时,得到的结果输出与目标输出肯定有较大差距,我们使用代价函数来度量这种差距。定义如下:

C = 1 2 n | | y ( x ) a L ( x ) | | 2

那么,当输入和输出固定时, C C 就是关于 w b 的函数,我们需要对其进行求偏导,以此来更新代价函数。

我们需要对代价函数进行如下定义(假设):

  1. 代价函数可以写成一个在每个训练样本 x x 上的代价函数 C x 的均值 C=1nxCx C = 1 n ∑ x C x
  2. C C 仅看成输出激活值 a L 的函数。

以下公式,不加说明, C C 都指特定的 C x

反向传播的四个方程

反向传播其实就是对权重和偏置变化影响函数过程的理解。最终就是需要计算 CwljkCblj ∂ C ∂ w j k l 和 ∂ C ∂ b j l

我们首先定义一个中间量 δlj=Czlj δ j l = ∂ C ∂ z j l ,表示为第 lj l 层 第 j 个神经元的误差,然后将 δlj δ j l 关联到

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值