BP神经网络

  • 意义
  • 基本原理
  • 结构图
  • 激活函数(σ函数)
  • BP网络输入输出关系
  • BP网络的学习算法
    –思想
    – 学习过程
    –学习本质
  • BP算法实现

意义:

通过比较简单的概念构建复杂的概念

基本原理:

利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。

结构图:

在这里插入图片描述

激活函数

大 多 使 用 σ ( w T x ⃗ ) 是 l o g i s t i c   s i g n m o d 函 数 大多使用 \quad σ(w^T\vec x)是logistic \, signmod函数 使σ(wTx )logisticsignmod
在这里插入图片描述
使用一组n个输入的 x 1 , x 2 , x 3 , x 4 , . . . , x n x_{1}, x_{2},x_{3},x_{4},...,x_{n} x1,x2,x3,x4,...,xn并将他们与一个输出y相关联。希望学习一组权重 w 1 , w 2 , w 3 , w 4 , . . . , w n w_{1},w_{2},w_{3},w_{4},...,w_{n} w1,w2,w3,w4,...,wn并计算他们的输出 f ( x , w ) = n e t = x 1 w 1 + x 2 w 2 + . . . + x n w n f(x,w)= net= x_{1}w_{1}+x_{2}w_{2}+...+x_{n}w_{n} f(x,w)=net=x1w1+x2w2+...+xnwn简单来说,就是根据每个类别的输入样本简单的返回函数f(x)本身的值来预测一个实数。

BP网络输入输出关系:

输入:

f ( x , w ) = n e t = x 1 w 1 + x 2 w 2 + . . . + x n w n f(x,w)= net= x_{1}w_{1}+x_{2}w_{2}+...+x_{n}w_{n} f(x,w)=net=x1w1+x2w2+...+xnwn

输出:

y = f ( n e t ) = 1 1 + e − n e t y = f(net) = \frac{1}{1+e^{-net}} y=f(net)=1+enet1

输出的导数:

y ′ = f ′ ( n e t ) = 1 1 + e − n e t − 1 ( 1 + e − n e t ) 2 = y ( 1 − y ) y' = f'(net) = \frac{1}{1+e^{-net}}-\frac{1}{{(1+e^{-net}})^2} = y(1-y) y=f(net)=1+enet1(1+enet)21=y(1y)

BP网络的学习算法

思想:

将输出误差以某种形式通过隐层向输入层逐层反传(即将误差分摊给各层的所有单元——各层单元的误差信号,以此来修正各单元权值)

学习过程:

神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。信号的正向传播<—>误差的反向传播
在这里插入图片描述

学习本质:

对各连接权值的动态调整。常使用随机梯度下降法(SGD)调节权重

BP算法实现

  • 网络结构:输入层n个输入神经元,隐含层有p个神经元,输出层有q个神经元(假设为3层网络,隐含层可拓展)
  • 变量定义:
    输 入 向 量 : x ⃗ = ( x 1 , x 2 , x 3 , x 4 , . . . , x n ) &ThinSpace;&ThinSpace; 隐 含 层 输 入 向 量 : h i ⃗ = ( h i 1 , h i 2 , h i 3 , . . . , h i p ) 隐 含 层 输 出 向 量 : h o ⃗ = ( h o 1 , h o 2 , h o 3 , . . . , h o p ) &ThinSpace;&ThinSpace; 输 出 层 输 入 向 量 : y i ⃗ = ( y i 1 , y i 2 , y i 3 , . . . , y i q ) 输 出 层 输 出 向 量 : y o ⃗ = ( y o 1 , y o 2 , y o 3 , . . . , y o q ) &ThinSpace;&ThinSpace; 期 望 输 出 向 量 : d ⃗ = ( d 1 , d 2 , d 3 , d 4 , . . . , d q ) &ThinSpace;&ThinSpace; 输入向量: \quad \quad\quad\quad\quad\quad \quad \quad \vec x = (x_{1},x_{2},x_{3},x_{4},...,x_{n}) \quad\,\,\\ 隐含层输入向量: \quad\quad\quad\quad\quad\vec {hi} = (hi_1,hi_2,hi_3,...,hi_p) \quad\\ 隐含层输出向量: \quad\quad\quad\quad\quad\vec {ho} = (ho_1,ho_2,ho_3,...,ho_p)\,\,\\ 输出层输入向量: \quad\quad\quad\quad\quad\vec {yi} = (yi_1,yi_2,yi_3,...,yi_q) \quad\\ 输出层输出向量: \quad\quad\quad\quad\quad\vec {yo} = (yo_1,yo_2,yo_3,...,yo_q)\,\,\\ 期望输出向量: \quad \quad\quad\quad\quad\quad \vec d = (d_{1},d_{2},d_{3},d_{4},...,d_{q}) \quad\,\, x =(x1,x2,x3,x4,...,xn)hi =(hi1,hi2,hi3,...,hip)ho =(ho1,ho2,ho3,...,hop)yi =(yi1,yi2,yi3,...,yiq)yo =(yo1,yo2,yo3,...,yoq)d =(d1,d2,d3,d4,...,dq)

输 入 层 与 中 间 层 的 连 接 权 值 : w i h 隐 含 层 与 输 出 层 的 连 接 权 值 : w h o 隐 含 层 各 神 经 元 的 阈 值 : b h &ThinSpace;&ThinSpace;&ThinSpace; 输 出 层 各 神 经 元 的 阈 值 : b o &ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace; 样 本 数 据 个 数 : k = 1 , 2 , . . m &ThinSpace;&ThinSpace; 激 活 函 数 : f ( . ) 单 个 样 本 的 训 练 误 差 : &ThinSpace;&ThinSpace; E ( k ) = 1 2 ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 &ThinSpace;&ThinSpace; 误 差 函 数 : E = 1 m ∑ k = 1 m E ( k ) = 1 2 m ∑ k = 1 m ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 输入层与中间层的连接权值: \quad \quad \quad\quad \quad\quad \quad w_{ih} \quad \quad \quad \quad \\ 隐含层与输出层的连接权值:\quad \quad \quad \quad \quad \quad \quad w_{ho} \quad \quad \quad \quad \\ 隐含层各神经元的阈值: \quad \quad \quad\quad\quad \quad \quad \quad \quad b_{h} \quad\quad \quad \quad\,\,\, \\ 输出层各神经元的阈值: \quad \quad \quad\quad\quad \quad \quad \quad \quad b_{o} \quad\quad \quad \quad\,\,\,\, \\ 样本数据个数:\quad \quad \quad\quad\quad\quad\quad \quad \quad\quad\quad\quad \quad k=1,2,..m \,\,\\ 激活函数:\quad \quad \quad\quad\quad\quad\quad \quad \quad \quad\quad\quad\quad \quad \quad f(.) \quad\quad\quad\quad \\ 单个样本的训练误差:\quad \quad \quad\quad\quad\,\, E(k) = \frac{1}{2} \sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2\,\,\\ 误差函数:\quad \quad \quad E= \frac{1}{m} \sum_{k=1}^mE(k)= \frac{1}{2m} \sum_{k=1}^m\sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2\\ wihwhobhbok=1,2,..mf(.):E(k)=21o=1q(do(k)yoo(k))2E=m1k=1mE(k)=2m1k=1mo=1q(do(k)yoo(k))2

step1:网络初始化

给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数E,给定计算精度值ε和最大学习次数M。

step2:随机选取k个样本及其对应期望输出

x ( k ) = ( x 1 ( k ) , x 2 ( k ) , x 3 ( k ) , . . . , x n ( k ) d ( k ) = ( d 1 ( k ) , d 2 ( k ) , d 3 ( k ) , . . . , d q ( k ) ) x(k) = (x_{1}(k),x_{2}(k),x_{3}(k),...,x_{n}(k)\\ d(k) = (d_{1}(k),d_{2}(k),d_{3}(k),...,d_{q}(k)) x(k)=(x1(k),x2(k),x3(k),...,xn(k)d(k)=(d1(k),d2(k),d3(k),...,dq(k))

step3:计算隐含层,输出层各神经元的输入和输出

h i h ( k ) = ∑ j = 1 n w j h x j − b h h = 1 , 2 , 3 , 4... p h o h ( k ) = f ( h i h ( k ) ) h = 1 , 2 , 3 , 4... p y i o ( k ) = ∑ h = 1 p w h o h o h ( k ) − b o o = 1 , 2 , 3 , 4... q y o o ( k ) = f ( y i o ( k ) ) o = 1 , 2 , 3 , 4... q hi_{h}(k) = \sum_{j=1}^nw_{jh}x_{j}-b_{h}\quad\quad \quad \quad h =1,2,3,4...p\\ ho_{h}(k) = f( hi_{h}(k) ) \quad\quad\quad\quad\quad\quad h =1,2,3,4...p\\ yi_{o}(k) = \sum_{h=1}^pw_{ho}ho_{h}(k)-b_{o}\quad\quad \quad \quad o =1,2,3,4...q\\ yo_{o}(k) = f( yi_{o}(k) ) \quad\quad\quad\quad\quad\quad o =1,2,3,4...q\\ hih(k)=j=1nwjhxjbhh=1,2,3,4...phoh(k)=f(hih(k))h=1,2,3,4...pyio(k)=h=1pwhohoh(k)boo=1,2,3,4...qyoo(k)=f(yio(k))o=1,2,3,4...q

step4:利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数

∂ E ( k ) ∂ w h o = ∂ E ( k ) ∂ y i o ( k ) ∂ y i o ( k ) ∂ w h o \frac{\partial E(k)}{\partial w_{ho}} = \frac{\partial E(k)}{\partial yi_{o}(k)} \frac{\partial yi_{o}(k)}{\partial w_{ho}} whoE(k)=yio(k)E(k)whoyio(k)
1. ∂ E ( k ) ∂ y i o ( k ) = ∂ ( 1 2 ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 ) ∂ y i o ( k ) = − ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) y o o ′ ( k ) = − ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) f ′ ( y i o ( k ) ) = δ o ( k ) 1.\frac{\partial E(k)}{\partial yi_{o}(k)} = \frac{\partial(\frac{1}{2} \sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2)}{\partial yi_{o}(k)}= -\sum_{o=1}^q(d_{o}(k)-yo_{o}(k))yo_o&#x27;(k)\\= -\sum_{o=1}^q(d_{o}(k)-yo_{o}(k)) f&#x27;( yi_{o}(k)) = \delta_o(k) 1.yio(k)E(k)=yio(k)(21o=1q(do(k)yoo(k))2)=o=1q(do(k)yoo(k))yoo(k)=o=1q(do(k)yoo(k))f(yio(k))=δo(k)
2. ∂ y i o ( k ) ∂ w h o = ∂ ( ∑ h = 1 p w h o h o h ( k ) − b o ( k ) ) ∂ w h o = h o h ( k ) 2.\frac{\partial yi_{o}(k)}{\partial w_{ho}} = \frac{ \partial (\sum_{h=1}^pw_{ho}ho_{h}(k)-b_{o}(k))}{\partial w_{ho}} = ho_h(k) 2.whoyio(k)=who(h=1pwhohoh(k)bo(k))=hoh(k) 总 结 : ∂ E ( k ) ∂ w h o = δ o ( k ) h o h ( k ) 总结:\frac{\partial E(k)}{\partial w_{ho}} = \delta_o(k) ho_h(k) whoE(k)=δo(k)hoh(k)

step5:利用隐含层到输出层的连接权值、误差函数对输出层的各神经元的偏导数和隐含层的输出,计算误差函数对隐含层各神经元的偏导数

∂ E ( k ) ∂ w i h = ∂ E ( k ) ∂ h i h ( k ) ∂ h i h ( k ) ∂ w i h \frac{\partial E(k)}{\partial w_{ih}} = \frac{\partial E(k)}{\partial hi_{h}(k)} \frac{\partial hi_{h}(k)}{\partial w_{ih}} wihE(k)=hih(k)E(k)wihhih(k)
1. ∂ E ( k ) ∂ h i h ( k ) = ∂ ( 1 2 ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 ) ∂ h i h ( k ) 1.\frac{\partial E(k)}{\partial hi_{h}(k)} =\frac{\partial(\frac{1}{2} \sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2)}{\partial hi_{h}(k)} 1.hih(k)E(k)=hih(k)(21o=1q(do(k)yoo(k))2) = ∂ ( 1 2 ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 ) ∂ h o h ( k ) ∂ h o h ( k ) ∂ h i h ( k ) =\frac{\partial(\frac{1}{2} \sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2)}{\partial ho_{h}(k)} \frac{\partial ho_h(k)}{\partial hi_{h}(k)} =hoh(k)(21o=1q(do(k)yoo(k))2)hih(k)hoh(k) = ∂ ( 1 2 ∑ o = 1 q ( d o ( k ) − f ( y i o ( k ) ) ) 2 ) ∂ h o h ( k ) ∂ h o h ( k ) ∂ h i h ( k ) =\frac{\partial(\frac{1}{2} \sum_{o=1}^q(d_{o}(k)- f( yi_{o}(k)))^2) }{\partial ho_{h}(k)} \frac{\partial ho_h(k)}{\partial hi_{h}(k)} =hoh(k)(21o=1q(do(k)f(yio(k)))2)hih(k)hoh(k) = ∂ ( 1 2 ∑ o = 1 q ( d o ( k ) − f ( ∑ h = 1 p w h o h o h ( k ) − b o ) ) ) 2 ) ∂ h o h ( k ) ∂ h o h ( k ) ∂ h i h ( k ) =\frac{\partial(\frac{1}{2} \sum_{o=1}^q(d_{o}(k)- f( \sum_{h=1}^pw_{ho}ho_{h}(k)-b_{o})))^2) }{\partial ho_{h}(k)} \frac{\partial ho_h(k)}{\partial hi_{h}(k)} =hoh(k)(21o=1q(do(k)f(h=1pwhohoh(k)bo)))2)hih(k)hoh(k) = ∑ o = 1 q ( d o ( k ) − f ( y i o ( k ) ) f ′ ( y i o ( k ) ) ∂ h o h ( k ) ∂ h i h ( k ) = \sum_{o=1}^q(d_{o}(k)- f( yi_o(k)) f&#x27;(yi_o(k)) \frac{\partial ho_h(k)}{\partial hi_{h}(k)} =o=1q(do(k)f(yio(k))f(yio(k))hih(k)hoh(k) = − ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) f ′ ( y i o ( k ) ) w h o ∂ h o h ( k ) ∂ h i h ( k ) = -\sum_{o=1}^q(d_{o}(k)- yo_o(k)) f&#x27;(yi_o(k))w_{ho} \frac{\partial ho_h(k)}{\partial hi_{h}(k)} =o=1q(do(k)yoo(k))f(yio(k))whohih(k)hoh(k) = − ∑ h = 1 p δ o ( k ) w h o . f ′ ( h i h ( k ) ) = δ h ( k ) =- \sum_{h=1}^p\delta_o(k) w_{ho}.f&#x27;(hi_h(k))=\delta _h(k) =h=1pδo(k)who.f(hih(k))=δh(k)
2. ∂ h i h ( k ) ∂ w i h = ∂ ( ∑ i = 1 n w o h x i − b h ) ∂ w i h = x i ( k ) 2.\frac{\partial hi_{h}(k)}{\partial w_{ih}} = \frac{\partial (\sum_{i=1}^nw_{oh}x_{i}-b_{h})}{\partial w_{ih}} = x_{i}(k) 2.wihhih(k)=wih(i=1nwohxibh)=xi(k)
总 结 : ∂ E ( k ) ∂ w i h = δ h ( k ) x i ( k ) 总结:\frac{\partial E(k)}{\partial w_{ih}} = \delta_h(k) x_i(k) wihE(k)=δh(k)xi(k)

step6:利用输出层各神经元的偏导和隐含层各神经元的输出来修正连接权值(第四步结果)

Δ w h o = − μ ∂ E ( k ) ∂ w h o = μ δ o ( k ) h o h ( k ) w h o N + 1 = w h o N + μ δ o ( k ) h o h ( k ) \Delta w_{ho} = -\mu \frac{\partial E(k)}{\partial w_{ho}} = \mu \delta_o(k)ho_h(k)\\ w_{ho^{N+1} = w_{ho}^N} + \mu \delta_o(k)ho_h(k) Δwho=μwhoE(k)=μδo(k)hoh(k)whoN+1=whoN+μδo(k)hoh(k)

step7:同理,利用隐含层各神经元的偏导和输入层各神经元的输入参数来修正连接权值(第五步结果)

Δ w i h = − μ ∂ E ( k ) ∂ w i h = μ δ h ( k ) x i ( k ) w i h N + 1 = w i h N + μ δ h ( k ) x i ( k ) \Delta w_{ih} = -\mu \frac{\partial E(k)}{\partial w_{ih}}= \mu \delta_h(k)x_i(k)\\ w_{ih^{N+1} = w_{ih}^N} + \mu \delta_h(k)x_i(k) Δwih=μwihE(k)=μδh(k)xi(k)wihN+1=wihN+μδh(k)xi(k)

step8:由误差函数计算全局误差

E = 1 m ∑ k = 1 m E ( k ) = 1 2 m ∑ k = 1 m ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 E= \frac{1}{m} \sum_{k=1}^mE(k)= \frac{1}{2m} \sum_{k=1}^m\sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2 E=m1k=1mE(k)=2m1k=1mo=1q(do(k)yoo(k))2

step9:判断网络误差是否满足要求,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值