前馈神经网络

前馈神经网络—BP算法

简要介绍:

  • 神经元模型:一个神经元接受多个输入,其自身有一个阈值,输入的强度达到阈值,便会兴奋,输出1,达不到便不兴奋输出0. 其数学模型是
    y = f ( ∑ i = 1 n w i x i − θ ) y=f(\sum_{i=1}^nw_ix_i-\theta) y=f(i=1nwixiθ)
    其中 f f f为激励函数,有多种,

    1 .sigmod函数 f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^-x} f(x)=1+ex1

    2 .Relu函数 f ( x ) = m a x ( x , 0 ) f(x)=max(x,0) f(x)=max(x,0)

    3 .softmax函数 f ( x ) = e y i ∑ e y i f(x)=\frac{e^{y_i}}{\sum e^{y_i}} f(x)=eyieyi

  • 神经网

    包括输入层:只负责输入,不负责运算

    隐层:运算

    输出层:运算且输出,输出层和隐层算上层数

    神经元之间是全连接,用突触连接,每个突触有一个权重

  • 参数

    对于一个神经网络而言,每个神经元的阈值 θ \theta θ,每一条突触的权重 W W W都是参数

  • 神经网络的本质

    个人理解,从外表看,神经网络接收输入得到一个分类,是映射关系,故可以看做一个函数,该函数将输入映射到要分类的类别上,从内部看,神经网络拥有众多的参数,通常可达上万个参数,如此多的参数构造出来得函数可以非常复杂以及准确,这就是神经网络的魅力。

BP算法

BP算法(Back Propagation)是训练神经网络参数的算法,基本思想在神经网络里一层一层先向前传播,得到结果与真实结果比较一层一层后向后更新。在这里插入图片描述
在推导过程中激励函数我们使用sigmod函数

给出数学符号最终结论

符号含义
W h i k W_{hi}^k Whik第k-1层神经元中的第h个神经元与第k+1层第i个神经元之间的突触的权重
θ i k \theta_i^k θik第k层神经元中的第i个神经元的阈值
b h k b_h^k bhk第k层第h个神经元的输出(0~1)
N k N_k Nk第k层的神经元个数
y h y_h yh理想情况下输出层第h个神经元的输出结果
y h ^ \hat{y_h} yh^输出层第h个神经元的输出结果

结 论 : 对 于 第 k 层 神 经 元 的 第 h 个 神 经 元 , 定 义 梯 度 e h k = ∑ i = 1 N k + 1 ( e i k + 1 W h i k + 1 ) b h k ( 1 − b h k ) ,         如 果 该 层 是 隐 层 e h k = y h ^ ( 1 − y h ^ ) ( y h − y h ^ ) ,         如 果 该 层 是 输 出 层 则 有 以 下 结 果 W i h k = W i h k + η e h k b i k − 1 θ i k = θ i k − η e i k 结论:对于第k层神经元的第h个神经元,定义梯度\\ e_h^k=\sum_{i=1}^{N_{k+1}}(e_i^{k+1}W_{hi}^{k+1})b_h^k(1-b_h^k),\space\space\space\space\space\space\space如果该层是隐层\\ e_h^k=\hat{y_h}(1-\hat{y_h})(y_h-\hat{y_h}),\space\space\space\space\space\space\space如果该层是输出层\\ 则有以下结果\\ W_{ih}^k=W_{ih}^k+\eta e_h^kb_i^{k-1}\\ \theta_i^k=\theta_i^k-\eta e_i^k khehk=i=1Nk+1(eik+1Whik+1)bhk(1bhk),       ehk=yh^(1yh^)(yhyh^),       Wihk=Wihk+ηehkbik1θik=θikηeik

推导过程:

首先 f ( z ) = 1 1 − e − z , f , ( z ) = f ( z ) ( 1 − f ( z ) ) , 其 中 z = ∑ i = 1 n w i b i − θ f(z)=\frac{1}{1-e^{-z}},f^,(z)=f(z)(1-f(z)),其中z=\sum_{i=1}^nw_ib_i-\theta f(z)=1ez1,f,(z)=f(z)(1f(z))z=i=1nwibiθ

损失函数 E = 1 2 ∑ h = 1 l ( y h ^ − y h ) 2 E=\frac{1}{2}\sum_{h=1}^l(\hat{y_h}-y_h)^2 E=21h=1l(yh^yh)2,我们的目标是求得参数使得损失函数达到最小值,采用梯度下降的方法,首先考虑输出层的参数,说明由于是输出层故不再给出参数的上标表示层数
∂ E ∂ W h j = ∂ E ∂ y j ^ ∗ ∂ y j ^ ∂ W h j = ( y j ^ − y j ) ∗ f / ( ∑ i = 1 N k − 1 W i j b i − θ j ) b h = ( y j ^ − y j ) y j ^ ( 1 − y j ^ ) b h = − e j b h \frac{\partial E}{\partial W_{hj}}=\frac{\partial E}{\partial \hat{y_j}}*\frac{\partial \hat{y_j}}{\partial W_{hj}}\\ =(\hat{y_j}-y_j)*f^/(\sum_{i=1}^{N_{k-1}}W_{ij}b_i-\theta_j)b_h\\ =(\hat{y_j}-y_j)\hat{y_j}(1-\hat{y_j})b_h=-e_jb_h WhjE=yj^EWhjyj^=(yj^yj)f/(i=1Nk1Wijbiθj)bh=(yj^yj)yj^(1yj^)bh=ejbh
同样有
∂ E ∂ θ j = ∂ E ∂ y j ^ ∗ ∂ y j ^ ∂ θ j = ( y j ^ − y j ) f / ( ∑ i = 1 N k − 1 W i j b i − θ j ) ∗ ( − 1 ) = − ( y j ^ − y j ) y j ^ ( 1 − y j ^ ) = e j \frac{\partial E}{\partial \theta_j}=\frac{\partial E}{\partial \hat{y_j}}*\frac{\partial \hat{y_j}}{\partial \theta_j}\\ =(\hat{y_j}-y_j)f^/(\sum_{i=1}^{N_{k-1}}W_{ij}b_i-\theta_j)*(-1)\\ =-(\hat{y_j}-y_j)\hat{y_j}(1-\hat{y_j})=e_j θjE=yj^Eθjyj^=(yj^yj)f/(i=1Nk1Wijbiθj)(1)=(yj^yj)yj^(1yj^)=ej
故有输出层的参数更新

对于隐层同样的推导过程,我们考虑类似数学归纳法的方法

假设我们已知第k+1层的一些信息,如损失函数 E E E对第k+1层的突触权重的导数是已知的,据此递推的求得损失函数 E E E对第k层的突触权重的导数,详细过程不写了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值