单隐层BP神经网络推导

单隐层BP神经网络推导

标签:神经网络

今天重新提到了多隐层神经网络,虽然还是挺简单的,但是突然发现没有理解。遂决定整理一下上学期学习的单隐层神经网络,再看看和多隐层BP有什么区别。

符号定义

  • 输入向量:n维向量X
  • 隐层输出向量:m维向量Y
  • 输出向量:l维向量O
  • 期望输出向量:l维向量d
  • 输入层和隐层间权重矩阵V
  • 隐层和输出层间权重矩阵W

神经网络激活函数

定义f(x)=11+exf(x)=\frac{1}{1+e^{-x}}为激活函数

其中输出向量的值为前一层输出向量的加权和ok=f(netk),netk=j=0m(wjkyj),k=1,2,...,lo_k=f(net_k),net_k=\sum_{j=0}^{m}(w_{jk}*y_j),k=1,2,...,l

隐层输出向量的值为输入向量的加权和yj=f(netj),netj=i=0n(vijxi),j=1,2,...,my_j=f(net_j),net_j=\sum_{i=0}^{n}(v_{ij}*x_i),j=1,2,...,m

定义误差E=12(dO)2=12k=1l(dkOk)2E=\frac{1}{2}(d-O)^2=\frac{1}{2}\sum_{k=1}^{l}(d_k-O_k)^2(这里嫌麻烦,就不展开了)

隐层与输出层间权重变化值Δwjk=ηEwjk=ηEnetknetkwjk=ηδkoyj\Delta w_{jk}=-\eta\frac{\partial E}{\partial w_{jk}}=-\eta\frac{\partial E}{\partial net_k}\frac{\partial net_k}{\partial w_{jk}}=-\eta \delta_k^oy_j

输入层与隐层间权重变化值Δvij=ηEvij=ηEnetjnetjvij=ηδjyxi\Delta v_{ij}=-\eta\frac{\partial E}{\partial v_{ij}}=-\eta\frac{\partial E}{\partial net_j}\frac{\partial net_j}{\partial v_{ij}}=-\eta \delta_j^yx_i

其中误差信号δko=Enetk=Eokoknetk=Eokf(netk)=(dkok)ok(1ok)\delta_k^o = -\frac{\partial E}{\partial net_k}=-\frac{\partial E}{\partial o_k}\frac{\partial o_k}{\partial net_k} = -\frac{\partial E}{\partial o_k}f'(net_k)=(d_k-o_k)*o_k(1-o_k)

误差信号δjy=Enetj=Eyjyjnetj=Eyjf(netj)=(k=1lδkowjk)yj(1yj)\delta_j^y = -\frac{\partial E}{\partial net_j}=-\frac{\partial E}{\partial y_j}\frac{\partial y_j}{\partial net_j} = -\frac{\partial E}{\partial y_j}f'(net_j)=(\sum_{k=1}^{l}\delta_k^ow_{jk})*y_j(1-y_j)

最终推得隐层输出向量与输出向量间权重变化量为Δwjk=ηδkoyj=η(dkok)ok(1ok)yj\Delta w_{jk} = -\eta \delta_k^oy_j = \eta *(d_k-o_k)*o_k(1-o_k) *y_j

输入向量与隐层输出向量间权重变化值Δvij=ηδjyxi=η(k=1lδkowjk)yj(1yj)xi\Delta v_{ij} = -\eta \delta_j^yx_i = \eta * (\sum_{k=1}^{l}\delta_k^ow_{jk})*y_j(1-y_j) *x_i

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章