前馈神经网络

大憨熊 提交于 2020-01-29 20:49:49

前馈神经网络—BP算法

简要介绍:

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

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

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

    3 .softmax函数f(x)=eyieyif(x)=\frac{e^{y_i}}{\sum e^{y_i}}

  • 神经网

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

    隐层:运算

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

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

  • 参数

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

  • 神经网络的本质

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

BP算法

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

给出数学符号最终结论

符号 含义
WhikW_{hi}^k 第k-1层神经元中的第h个神经元与第k+1层第i个神经元之间的突触的权重
θik\theta_i^k 第k层神经元中的第i个神经元的阈值
bhkb_h^k 第k层第h个神经元的输出(0~1)
NkN_k 第k层的神经元个数
yhy_h 理想情况下输出层第h个神经元的输出结果
yh^\hat{y_h} 输出层第h个神经元的输出结果

khehk=i=1Nk+1(eik+1Whik+1)bhk(1bhk),       ehk=yh^(1yh^)(yhyh^),       Wihk=Wihk+ηehkbik1θik=θikηeik 结论:对于第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

推导过程:

首先f(z)=11ez,f,(z)=f(z)(1f(z))z=i=1nwibiθf(z)=\frac{1}{1-e^{-z}},f^,(z)=f(z)(1-f(z)),其中z=\sum_{i=1}^nw_ib_i-\theta

损失函数E=12h=1l(yh^yh)2E=\frac{1}{2}\sum_{h=1}^l(\hat{y_h}-y_h)^2,我们的目标是求得参数使得损失函数达到最小值,采用梯度下降的方法,首先考虑输出层的参数,说明由于是输出层故不再给出参数的上标表示层数
EWhj=Eyj^yj^Whj=(yj^yj)f/(i=1Nk1Wijbiθj)bh=(yj^yj)yj^(1yj^)bh=ejbh \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
同样有
Eθj=Eyj^yj^θj=(yj^yj)f/(i=1Nk1Wijbiθj)(1)=(yj^yj)yj^(1yj^)=ej \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
故有输出层的参数更新

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!