BP算法的推导
反向传播算法的推导

如图为2-layers CNN,输入单元下标为i,数量d;隐层单元下表j,数量\(n_H\);输出层下表k,单元数量c
1.目标
调整权系数\(w_{ji}\),\(w_{kj}\),使得输出\((x_i,z_i)\)尽可能等于样本\((x_i,t_i)\)
即定义误差函数\(J(w)\)最小
\[
J(w)=\sum_{x} J_x(w)
\\
J_x(w)=\frac{1}{2} \sum _{k=1}^c(t_k-z_k(x))^2
\]
2.节点表示
对于隐层中的节点,定义权值和为\(net_j\),则
\[
net_j=\sum _{i=1}^d w_{ji}x_i+w_{j0}
\]
同理,则输出层的节点权值和为\(net_k\),有
\[
net_k=\sum _{j=1}^{n_H} w_{kj}y_j+w_{k0}
\]
对于隐层节点输出\(y_j=f(net_j)\),输出层节点输出\(z_k=f(net_k)\)
3.权系数的调整方法
按照梯度下降的方法,对误差函数$J(w)求导,调整 $ $\frac {\partial J} {\partial w_{kj} } $和 $ \frac{\partial J} {\partial w_{ji}} $
\[
w_{kj} \to w_{kj}-\eta \frac{\partial J} {\partial w_{kj} }
\\
w_{ji} \to w_{ji} - \eta \frac{\partial J} {\partial w_{ji}}
\]
其中\(\eta\)控制下降速率
3.1对输出层权系数的微分
\[
\frac{\partial J}{\partial w_{kj}}=\frac{\partial J}{\partial net_k} \frac{\partial net_k}{\partial w_{kj}}
\\
其中\frac{\partial J}{\partial net_k}=\frac{\partial J}{\partial z_k} \frac {\partial z_k}{\partial net_k}=-(t_k-z_k)f'(net_k)
,\quad
\frac{\partial net_k}{\partial w_{kj}}=y_j
\]
通常令\(\frac{\partial J}{\partial net_k}=\delta_k\),则\(\frac {\partial J}{\partial w_{kj}}=\delta_k y_j\)
3.2对隐层权系数的微分
\[
\frac{\partial J}{\partial w_{ji}}=\frac{\partial J}{\partial net_j} \frac{\partial net_j}{\partial w_{ji}}
\\
其中\frac{\partial J}{\partial net_j}=\frac{\partial J}{\partial y_j} \frac {\partial y_j}{\partial net_j}=\sum _{k=1}^c \delta _k w_{kj}f'(net_j)
,\quad
\frac{\partial net_j}{\partial w_{ji}}=x_i
\]
同样令\(\frac{\partial J}{\partial net_j}=\delta_j\),则\(\frac {\partial J}{\partial w_{ji}}=\delta_j x_i\)
关于\(\frac{\partial J}{\partial y_j}\)的推导如下:
\[
\frac{\partial J}{\partial y_j}=\sum_{k=1}^c \frac{\partial J}{\partial net_k} \frac{\partial net_k}{\partial y_j}=\sum_{k=1}^c\delta_k w_{kj}
\]
故对权系数的调整变为
\[
w_{kj} \to w_{kj}-\eta \frac{\partial J} {\partial w_{kj} }= w_{kj}-\eta \delta_k y_j
\\
w_{ji} \to w_{ji} - \eta \frac{\partial J} {\partial w_{ji}}= w_{ji}-\eta_j\delta x_i
\]
反向传播算法
(1)对于给定的样本集$ D={(x,t)} $,初始化网络结构 $d * n_H * c $。初始化权系数 \(w\),学习速率 \(\delta\),阈值\(\theta\),变量k=1
(2)从D中取出第\(k\)个样本$(x,t) $,根据该样本更新权系数 \(w\):
(3)\(k=k+1\),如果 \(k>n\),令k=1。转第2步继续进行循环。退出条件:在给定样本集上的平均误差足够小。
BP算法的推导的更多相关文章
- BP算法基本原理推导----《机器学习》笔记
前言 多层网络的训练需要一种强大的学习算法,其中BP(errorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法. 今天就来探讨下BP算法的原理以及公式推导吧. 神 ...
- 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 反向传播算法(Backpropagation Algorithm, ...
- 深度学习——前向传播算法和反向传播算法(BP算法)及其推导
1 BP算法的推导 图1 一个简单的三层神经网络 图1所示是一个简单的三层(两个隐藏层,一个输出层)神经网络结构,假设我们使用这个神经网络来解决二分类问题,我们给这个网络一个输入样本,通过前向运算得到 ...
- 误差逆传播(error BackPropagation, BP)算法推导及向量化表示
1.前言 看完讲卷积神经网络基础讲得非常好的cs231后总感觉不过瘾,主要原因在于虽然知道了卷积神经网络的计算过程和基本结构,但还是无法透彻理解卷积神经网络的学习过程.于是找来了进阶的教材Notes ...
- 多层神经网络BP算法 原理及推导
首先什么是人工神经网络?简单来说就是将单个感知器作为一个神经网络节点,然后用此类节点组成一个层次网络结构,我们称此网络即为人工神经网络(本人自己的理解).当网络的层次大于等于3层(输入层+隐藏层(大于 ...
- 神经网络 误差逆传播算法推导 BP算法
误差逆传播算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多使用BP算法进行训练. 给定训练集\(D={(x_1,y_1),(x_2,y_2),......(x_m,y_m)} ...
- BP算法的矩阵推导
目录 1. 需要的微积分知识 1.1 导数 1.2 求导的链式法则 2. 梯度下降法 2.1 梯度 2.2 梯度算法的解释 3.误差反向传播算法 3.1 理论推导 3.1.1 符号说明 3.1.2 推 ...
- 人工神经网络反向传播算法(BP算法)证明推导
为了搞明白这个没少在网上搜,但是结果不尽人意,最后找到了一篇很好很详细的证明过程,摘抄整理为 latex 如下. (原文:https://blog.csdn.net/weixin_41718085/a ...
- BP算法推导python实现
def sigmoid(inX): return 1.0/(1+exp(-inX)) '''标准bp算法每次更新都只针对单个样例,参数更新得很频繁sdataSet 训练数据集labels 训练 ...
随机推荐
- LRU与LFU比较
提到缓存,有两点是必须要考虑的:(1)缓存数据和目标数据的一致性问题.(2)缓存的过期策略(机制). 其中,缓存的过期策略涉及淘汰算法.常用的淘汰算法有下面几种:(1)FIFO:First I ...
- 使用Kali Linux执行中间人攻击(演示)
中间人攻击也叫Man-In-The-Middle-Attack. 我假设你已经知道中间人攻击的基本概念,引用一段wikipedia: 中间人攻击(Man-in-the-middle attack,缩写 ...
- (十)js获取日期
//将日期转换成字符串格式输出 function formatDateToString(){ // 先获取对象日期 var oDate = new Date(); // 从该对象中分别拿出所需要的 年 ...
- HDU - 233 Matrix
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5015 解题思路:一看到题目,感觉是杨辉三角形,然后用组合数学做,不过没想出来怎么做,后来看数据+递推思 ...
- Java [Leetcode 347]Top K Frequent Elements
题目描述: Given a non-empty array of integers, return the k most frequent elements. For example,Given [1 ...
- Android应用框架-Volley网络通信框架
1.Volley简介: Volley是Google 推出的 Android 异步网络请求框架和图片加载框架. 在 Google I/O 2013 大会上发布. 2.Volley特点 扩展性强. And ...
- asp.net 操作共享目录文件
背景: 服务器A为程序服务器,服务器B为文件服务器.服务器A的程序需要修改删除服务器B的文件. 实现方式:采用虚拟目录映射 操作步骤: 1.在服务器A与服务器B建立相同账号和密码的windows用户 ...
- LeetCode Design Log Storage System
原题链接在这里:https://leetcode.com/problems/design-log-storage-system/description/ 题目: You are given sever ...
- Dawn 简单使用
1. install npm install dawn -g 2. create project # 1. Create & Initialize $ dn init -t front # ...
- Python脚本MAC上双击执行,如何设置?
1.在文件首行添加如下代码: 如果你想使用默认python版本执行当前的脚本,即python2,则需要添加 #!/usr/bin/env python # -*- coding: utf-8 -*- ...