首页 > 学院 > 开发设计 > 正文

BP神经网络的推导及其参数统计

2019-11-06 06:31:35
字体:
来源:转载
供稿:网友

对3层神经网络结构推导,求出它的参数,以及每层需要计算的参数和数量。

说明:本次总结的图片来自周志华老师的课件。

单个节点的神经元 这里写图片描述

图中给出了输入到某一个隐藏层单一节点的过程

一个完整的神经网络结构如下:

这里写图片描述

整体结构: 输入层节点d个,隐藏层节点q个,输出层节点l

各层的权重定义如下: 输入层到隐藏层: V vih 表示 第i个输入层节点 ——> 第h个隐藏层节点 隐藏层到输出层:W whj 表示第h个隐藏层节点 ——> 第j个输出层节点

各层的值 第h个隐藏层的输入定义如下: αh=∑i=1dvihxi

j个输出层神经元的输入定义如下: βj=∑h=iqwhjbh

对于给定的数据集(x1,y1),(x2,y2),...,(xn,yn)

全局的均方误差为:

对于第k个样本在输出层的第j个节点上的输出结果为:

y^kj

那么,对于一个样本来说,整体的均方误差为: Ek=12∑j=1l(y^kj−ykj)2

参数的更新

基于梯度下降法来进行更新: 激活函数为 f 这里f为给定的表示符号,可代指所有符合条件的激活函数。不过,本博文设置的激活函数为sigmoid,即f(x)=11+e−x

学习率为 η

对权重wv的更新,遵循先wv,原因是先更新靠近输出的权重,w是属于靠近输出层的权重。

w<=w+Δw v<=v+Δv

w的更新

这里,Δw=−η∂Ek∂whj

由于whj先影响第j个输出层神经元的输入值βj,再影响到它的输出值y^kj,最后是Ek

由链式法则,

∂Ek∂whj=∂Ek∂y^kj∗∂y^kj∂βj∗∂βj∂whj

又:

∂βj∂whj=bh

gj=−∂Ek∂y^kj∗y^kj∂βj

于是, gj=−(y^kj−ykj)f′(βj−θj)=y^kj(1−ykj)(ykj−y^kj)

进一步,

∂Ek∂hj=gj∗bh

从而,

Δwhj=η∗gj∗bh

更新: whj=whj+η∗gj∗bh

对隐藏层阈值θ的更新

θ更新的规则: θ<=θ+Δθ

这里,

Δθj=−η∂Ek∂θj

对于,

∂Ek∂θj=∂Ek∂y^kj∂y^kj∂θj

进一步,

∂Ek∂θj=12∗2∗(y^kj−ykj)∗y^kj∗(−1)∗(1−y^kj)=−y^kj∗(1−y^kj)∗(y^kj−ykj)

从而,

θj+1=θj+η∗y^kj∗(1−y^kj)∗(y^kj−ykj)

对输入层权重v的更新

更新规则: v<=v+(−η∂Ek∂v)=v+Δv

对于,

Δvih=−η∂Ek∂vih

进一步,

∂Ek∂vih=∑j=1l∂Ek∂y^kj∂y^kj∂bh∂bh∂vih

由, ∂y^kj∂bh=y^kj∂βj∂βj∂bh=y^kj(1−y^kj)whj

于是,

∂Ek∂vih=bh(1−bh)∑j=1lwhjy^kj(1−y^kj)(ykj−y^kj)

v的更新为:

vj+1=vj+bh(1−bh)∑j=1lwhjy^kj(1−y^kj)(ykj−y^kj)

参数有:

权重: vih d*q 个 whj q*l个 隐藏层阈值 q个 输出层阈值 l个

合计: (d+l+1)*q + l


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表