人工神经网络 backpropagation algorithm
来源:互联网 发布:c语言捕鱼 编辑:程序博客网 时间:2024/04/30 13:43
ann人工神经网络bp算法python实现
1、单个神经元
1.1、单个神经元的表示方法:
这代表一行数据的处理,即
x1,x2,x3 属于一个样本的三个维度,输出为这个样本的激活函数的值。
1.2、激励函数几种不同形式:
- sigmoid函数
f(z)=11+exp(−z) - sigmoid函数的导数:
f′(z)=f(z)(1−f(z))
- sigmoid函数的导数:
- tanh函数
f(z)=tanh(z)=ez−e−zez+e−z - tanh函数的导数:
f′(z)=1−(f(z))2
- tanh函数的导数:
rectified linear activation function
f(z)=max(0,x) - 导数为:
f′(z)={01z<=0z>0
以下是这几种损失函数的函数图。
2、神经网络模型
令
nl 表示这个神经网络的层数,这个神经网络共有3层,及nl=3 。
Ll 是输入层,Lnl 是输出层,中间为隐含层。
上图中神经网络的参数为:
W(l)ij 表示l 层到l+1 层的权值矩阵或向量,i 代表l+1 层,j 代表l 层的索引。
W(1)∈R3×3
W(2)∈R1×3
a(l)i 表示第i 的激活函数的结果l
对于输入层即l=1 ,a(1)i=xi ,i表示一个样本的第i列
递推公式为:
从输入层到输出层的计算详细过程如下:
输出层为多层时,神经网络的示意图如下:
3、backpropagation algorithm
每个样本对应的损失为:
整体的损失函数加上对权重系数的正则化
反向传播的算法过程
1、正向传播,计算每层的激励函数值
2、利用y值和激励函数值计算输出层的’error term’
3、利用初值W,计算隐含层的‘error term’
4、计算每个样本的偏导。
5、计算整体的偏导
6、梯度下降更新
梯度下降更新
W,b
∂∂W(l)ijJ(W,b)∂∂b(l)iJ(W,b)=⎡⎣1m∑i=1m∂∂W(l)ijJ(W,b;x(i),y(i))⎤⎦+λW(l)ij=1m∑i=1m∂∂b(l)iJ(W,b;x(i),y(i))
∂J(W,b;x,y)∂Wlji===∂J(W,b;x,y)∂z(l+1)j⋅∂z(l+1)j∂Wlji∂J(W,b;x,y)∂z(l+1)j⋅∂∑ni=1W(l)jiali+bli∂Wlji∂J(W,b;x,y)∂z(l+1)j⋅ali
δ(nl)j=====∂J(W,b;x,y)∂z(nl)j∂12||y−hW,b||2∂z(nl)j∂12||y−a(nl)j||2∂z(nl)j−(y−a(nl)j)∂a(nl)j∂z(nl)j−(y−a(nl)j)f′(znli)
∂J(W,b;x,y)∂Wlji==−(y−a(nl)j)f′(znli)⋅aliδ(nl)j⋅ali
对于隐含层,其误差项通过其后面一层传播而来,对于第L层,相当于L+1 层有sl+1项误差求和而来
δli======∂J(W,b;x,y)∂zli∑j=1Sl+1∂J(W,b;x,y)∂zl+1j∂zl+1j∂zlj∑j=1Sl+1∂J(W,b;x,y)∂zl+1j∂(∑ni=1Wljiali+bli)∂zlj∑j=1Sl+1∂J(W,b;x,y)∂zl+1j∂(∑ni=1Wljif(zli)+bli)∂zlj∑j=1Sl+1∂J(W,b;x,y)∂zl+1jWljif′(zli)∑j=1Sl+1δ(l+1)jWljif′(zli)
4、softmax函数及其求导
输出层激励函数为softmax:
交叉熵代价函数为:
- 公式推导过程
softmax函数公式:
aLj=ezLj∑kezLk
其中
if j∂aj∂zj=====i∂∂zi(ezj∑kezk)(ezj)′∑kezk−ezj ezj(∑kezk)2ezj∑kezk−ezj∑kezk⋅ezj∑kezkaj(1−aj)
if j∂aj∂zj≠i====∂∂zi(ezj∑kezk)0∑kezk−ezj ezi(∑kezk)2−ezj∑kezk⋅ezi∑kezk−ajai
交叉熵代价函数为:
C=−∑kyk log ak
∂C∂bj=======∂C∂zj⋅∂zj∂bj∂C∂zj⋅∂(wjkak+bj)∂bj∂∂zj(−∑kyk log ak)−∑kyk1ak⋅∂ak∂zj−yj1ajaj(1−aj)−∑k≠jyk1ak(−ajak)−yj+aj∑kykaj−yj
∂C∂wjk=aL−1k(aLj−yj)
参考文献
http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/
http://blog.csdn.net/xuanyuansen/article/details/41214115
http://blog.csdn.net/u014313009/article/details/51045303
1 0
- 人工神经网络 backpropagation algorithm
- 一步一步分析讲解神经网络基础-backpropagation algorithm
- backpropagation algorithm
- Backpropagation Algorithm
- Sparse Autoencoder2-Backpropagation Algorithm
- backpropagation algorithm 理解
- Backpropagation Algorithm记录
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 人工神经网络
- 关于工作的心得。
- python爬虫基础知识
- 获取本地文件并显示在tableView中,如同QQ中的文件展示,但是还不能查看内容
- python中的os.path.dirname(__file__)的使用
- 开发常用linux命令(整理中...)
- 人工神经网络 backpropagation algorithm
- SVN 的简单使用
- hive学习
- C语言经典笔试题(一)
- 设计模式之单例模式
- centos7怎么用命令解压zip文件夹
- Redis 命令参考
- Android studio创建J2EE项目
- 函数声明及调用初解