神经网络

神经元模型

神经网络是具有适应性的简单 单元组成的广泛并行互连的网络。它的组织能后模拟生物神经系统对真实世界物体所作出的交互反应。
生物神经网络中,每个神经元兴奋的时候就会向其他神经元发送化学物质;当神经元的电位超过一个阈值,他就会被激活,向其他神经元发送化学物质。

将上述情况抽象成模型,就是M-P神经元模型。如图:
在这里插入图片描述
这个模型中,神经元接收来自n个其他神经元传递来的信号,这些输入信号通过带权重的连接传递信息,神经元接收到的总输入将与这个神经元的阈值比较,再通过激活函数处理后产生神经元的输出。

理想中的激活函数是阶跃函数 s g n sgn sgn产生0或1输出,但是这个函数不连续、不光滑,性质不好,因此用sigmoid函数代替。
s g n ( x ) = 1 , x ≥ 0 ; sgn(x)=1,x≥0; sgn(x)=1,x0; s g n ( x ) = 0 , x &lt; 0 sgn(x)=0,x&lt;0 sgn(x)=0,x<0
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

神经元按一定结构连接起来,就是神经网络。

感知机和神经网络

感知机

感知机是两层神经元组成的模型,输入层接收信号传递给输出层。输入层接收信号,输出层是M-P神经元,也就是阈值逻辑单元。因此它可以实现逻辑与或非运算。具体来讲就是给定w1,w2和θ的取值,然后代入 y = f ( ∑ i w i x i − θ ) y=f(\sum_iw_ix_i-\theta) y=f(iwixiθ);比如与运算可以令 w 1 = w 2 = 1 , θ = 2 w_1=w_2=1,\theta=2 w1=w2=1,θ=2求得。

对于模型中的参数,权重w和阈值θ都能通过学习得到。

权重的学习方式:
对于样本 ( x , y ) (x,y) (x,y),其通过感知机模型的输出为 y ^ \hat y y^,则感知机权重的调节如下:
w i ← w i + △ w i w_i\leftarrow w_i+\bigtriangleup w_i wiwi+wi
△ w i = η ( y − y ^ ) x i \bigtriangleup w_i=\eta(y-\hat y)x_i wi=η(yy^)xi
其中 η \eta η是学习率,介于0到1之间。通过 △ w i \bigtriangleup w_i wi的公式可以看出,当 y = y ^ y=\hat y y=y^时感知机才会稳定,否则就会根据错误的程度慢慢调整。

然而感知机的问题是,感知机只在输出层神经元进行激活函数处理,只有一层功能神经元,学习能力有限。当问题变成线性不可分的时候,感知机就没什么作用了。

因此如果是线性可分的问题,感知机很容易收敛;如果是非线性可分问题,就需要多层感知机协同工作,对数据进行多步处理,也就是需要多层功能神经元。而功能神经元在神经网络中处于隐藏层和输出层位置。

神经网络

神经网络中采用层级结构,每层中的神经元和下一层全连接,相同层的神经元之间无连接,跨层间不存在连接。这种神网就是多层前缀神经网络。
在这里插入图片描述
其中,输入层神经元接收输入数据,隐藏层和输出层神经元对数据进行处理加工,最终结果由输出层神经元输出。也就是,输入层只是接收数据,数据的处理交给隐藏层和输出层的功能神经元。而神经网络的学习过程其实就是调节权重和阈值的过程。

反向传播算法

然而对于更复杂的问题,我们需要更多层的隐藏层进行数据的学习。简单的感知机显然不能满足我们更复杂的需求。因此,反向传播(BackPropagation,简称BP)算法是更好的选择。
下面我们来看看BP算法是怎么工作的:

给定训练集: D = { ( x 1 , y 1 ) , . . . , ( x m , y m ) } , x i ∈ R d , y i ∈ R l D=\left \{(x_1,y_1),...,(x_m,y_m) \right \},x_i\in R^d,y_i\in R^l D={(x1,y1),...,(xm,ym)},xiRd,yiRl
总计M个数据组,每个数据d个属性,输出是l维向量,隐藏层神经元q个。
输出层中第j个神经元的阈值为 θ j \theta_j θj
隐藏层中第h个神经元的阈值为 γ h \gamma_h γh
输入层第i个神经元和隐藏层第h个神经元间的连接权为 v i h v_{ih} vih
隐藏层第h个神经元与输出层第j个神经元间的连接权为 w h j w_{hj} whj
隐藏层第h个神经元接收到的输入为: α h = ∑ i = 1 d v i h x i \alpha_h=\sum_{i=1}^dv_{ih}x_i αh=i=1dvihxi
输出层第j个神经元接收到的输入为: β j = ∑ h = 1 d w h j b h , \beta_j=\sum_{h=1}^dw_{hj}b_h, βj=h=1dwhjbh,其中 b h b_h bh是隐藏层第 h h h个神经元的输出;
在这里插入图片描述假定输出是 y ^ k = ( y ^ 1 k , . . . , y ^ l k ) , \hat y_k=(\hat y_1^k,...,\hat y_l^k), y^k=(y^1k,...,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.

BP基于梯度下降法负梯度方向更新参数,根据均方误差给定学习率,对于均方误差 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
其中, ∂ β j ∂ w h j = b h , \frac{\partial \beta_j}{\partial w_{hj}}=b_h, whjβj=bh,而对于sigmoid函数有 f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) , f&#x27;(x)=f(x)(1-f(x)), f(x)=f(x)(1f(x)),将这两个式子代入 ∂ 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
有: g j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j = − ( y ^ j k − y j k ) f ′ ( β j − θ j ) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) g_j=\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&#x27;(\beta_j-\theta_j)=\hat y_j^k(1-\hat y_j^k)( y_j^k-\hat y_j^k) gj=y^jkEkβjy^jk=(y^jkyjk)f(βjθj)=y^jk(1y^jk)(yjky^jk)
所以: Δ w h j = η g j b h \Delta w_{hj}=\eta g_jb_h Δwhj=ηgjbh

同理可得: Δ θ j = − η g j , \Delta \theta_{j}=-\eta g_j, Δθj=ηgj, Δ v i h = η e h x i , \Delta v_{ih}=\eta e_hx_i, Δvih=ηehxi, Δ γ h = − η e h \Delta \gamma_{h}=-\eta e_h Δγh=ηeh
其中: e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ α h = = ∑ j = 1 l ∂ E k ∂ β j ⋅ ∂ β j ∂ b h f ′ ( α h − γ h ) = b h ( 1 − b h ) ∑ j = 1 l w h j g j e_h=-\frac{\partial E_k}{\partial b_h}\cdot\frac{\partial b_h}{\partial \alpha_h}==\sum_{j=1}^l\frac{\partial E_k}{\partial \beta_j}\cdot\frac{\partial \beta_j}{\partial b_h}f&#x27;(\alpha_h-\gamma_h)=b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j eh=bhEkαhbh==j=1lβjEkbhβjf(αhγh)=bh(1bh)j=1lwhjgj

BP的目标是最小化累积误差 E , E, E,而上面的推导每次仅针对一个训练样本更新权重和阈值。如果将其推广为基于累积误差最小化的更新规则,就是累积误差反向传播算法。

BP神经网络遭遇过拟合的解决方法:
1.提前停止:出现训练集误差降低但是验证集误差升高就停止
2.正则化:在误差函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和,用 w i w_i wi表示。误差函数就可以表示为: E = λ 1 m ∑ k = 1 m + ( 1 − λ ) ∑ i w i 2 E=\lambda \frac{1}{m}\sum_{k=1}^m+(1-\lambda)\sum_iw_i^2 E=λm1k=1m+(1λ)iwi2
其中的 λ \lambda λ可以通过交叉验证法进行估计

前馈神经网络

待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值