BP神经网络相关知识

本文详细介绍了BP神经网络的基础知识,包括神经元模型、感知机及其局限性,以及多层前馈神经网络的结构。重点解析了反向传播算法,详细推导了Δwhj、Δθj、Δvih和Δγh的求解过程,并介绍了正则化的误差目标函数。
摘要由CSDN通过智能技术生成

神经元

神经网络最基本的成分是神经元模型,下图是已知沿用至今的M-P神经元模型:

在这里插入图片描述

该神经元接收前面其他n个神经元传递的输出值作为该神经元的输入,这些输入通过带权值的连接进行传递。神经元将接收到的总输入值与神经元阈值相比较,然后通过激活函数 f f f处理,最终形成本神经元的输出。

理想的激活函数是阶跃函数,将输入值映射为0和1,但是这样的函数不连续可导,不利于网络的学习。更多情况下,我们使用其他函数代替,比较常见的激活函数之一是Sigmoid函数:

在这里插入图片描述

Sigmoid函数可以把较大范围内的输入值挤压到(0,1)之间。除了Sigmoid函数,还有一些其他常见的激活函数,具体的在下一篇文章讲解。

感知机

感知机是由两层神经元组成的,如下图所示:

在这里插入图片描述

输入层接收输入的数据,然后传递给输出层,输出层就是上面提到的M-P神经元。需要注意的是,感知机只有输出层神经元进行激活函数处理。即只拥有一层功能神经元,其学习能力非常有限,只能解决简单的二分类问题,如:“与”,“非”,“或”;不能解决异或问题。

为了解决非线性问题,需要考虑使用多层功能神经元,如下图所示:

在这里插入图片描述

上图中的两层感知机模型就能解决异或问题。输入层与输出层之间的一层称为隐含层,隐含层与输出层一样,都是具有激活函数的神经元。

更一般的,神经网络结构是如下图所示的层级结构,隐含层的数量也可以有更多个:

在这里插入图片描述

每层的神经元仅与下一层的神经元互联,这样的网络称为多层前馈神经网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的连接权重,以及每个神经元的阈值。神经网络学到的东西,都蕴含在连接权重和阈值中。

反向传播算法

给定训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } , x i ∈ R d , y i ∈ R l D=\{(x_1,y_1),(x_2,y_2),\ldots,(x_m,y_m)\},x_i \in \mathbf R^d,y_i \in \mathbf R^l D={ (x1,y1),(x2,y2),,(xm,ym)},xiRd,yiRl ,即输入数据有 d d d个属性,输出 l l l维实值向量。隐层神经元个数是 q q q。输出层第 j j j个神经元的阈值用 θ j \theta_j θj表示,隐层第 h h h个神经元的阈值用 γ h \gamma_h γh表示。激活函数采用sigmoid函数。

对训练样本 ( x k , y k ) (x_k,y_k) (xk,yk),假定神经网络的输出为 y ^ = ( y ^ 1 k , y ^ 2 k , … , y ^ l k ) \hat {\mathbf y} =(\hat y_1^k,\hat y_2^k,\ldots,\hat y_l^k) y^=(y^1k,y^2k,,y^lk),所以有:
y ^ j k = f ( β j − θ j ) \hat y_j^k = f(\beta_j - \theta_j) y^jk=f(βjθj)
则网络在 ( x k , y k ) (x_k,y_k) (xk,yk)上的均方误差为:
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k = \frac{1}{2}\sum_{j=1}^l(\hat y_j^k - y_j^k)^2 Ek=21j=1l(y^jkyjk)2
我们的目标是最小化这个误差函数。

在这里插入图片描述

待求参数:

(1)输入层到隐藏层有 d × q d\times q d×q个权重参数$\Delta v_{ih} $。

(2)隐藏层到输出层有 q × l q\times l q×l个权重参数 Δ w h j \Delta w_{hj} Δwhj

(3)隐层 q q q个神经元的阈值 Δ γ h \Delta \gamma_h Δγh

(4)输出层 l l l个神经元的阈值 Δ θ j \Delta \theta_j Δθj

BP神经网络基于梯度下降策略,以误差函数的负梯度方向对参数进行迭代,进而优化参数。

1,求 Δ w h j \Delta w_{hj} Δwhj

对误差函数 E k E_k Ek,给定学习率 η \eta η,有:
Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj} = -\eta \frac{\partial E_k}{\partial w_{hj}} Δwhj=ηwhjEk
根据链式求导法则:
∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ w h j \frac{\partial E_k}{\partial w_{hj}} = \frac{\partial {E_k}}{\partial{\hat{y}_j^k}} \cdot \frac{\partial{\hat{y}_j^k}}{\partial{\beta_j}} \cdot \frac{\partial{\beta_j}}{\partial{w_{hj}}} whjEk=y^jkEkβjy^jkwhjβj
sigmoid函数求导结果如下:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1-f(x)) f(x)=f(x)(1f(x))
定义 g i g_i gi
g i = − ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j = − ( y ^ j k − y j k ) f ′ ( β j − θ j ) = − ( y ^ j k − y j k ) f ( β j − θ j ) ( 1 − f ( β j − θ j ) ) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) \begin{aligned} g_i &= - \frac{\partial {E_k}}{\partial{\hat{y}_j^k}} \cdot \frac{\partial{\hat{y}_j^k}}{\partial{\beta_j}} \\ & = -(\hat y_j^k - y_j^k)f'(\beta_j - \theta_j) \\ & = -(\hat y_j^k - y_j^k)f(\beta_j - \theta_j)(1-f(\beta_j - \theta_j))\\ &=\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k) \end{aligned} gi=y^jkEkβjy^jk=(y^jkyjk)f

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值