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 训练 ...
随机推荐
- LeetCode OJ:Perfect Squares(完美平方)
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...
- xhtml html
xhtml是用xml语言重写了html,相比html更规范了, XHTML是HTML像XML的一个过渡语言,它比HTML严谨性会高点,然后基本语言都还是沿用的HTML的标签,只不过废除了部分表现层的标 ...
- build.prop文件介绍与用法举例
build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变 以下是修改教程及一些build.prop参数的中英文对照解释,修改前,注意先备份原build. ...
- 如何突破 Java 程序员的分水岭
第一阶段:一年之内的 JAVA 从业人员 这个阶段是你成长极快的阶段,而且你可能会经常加班.但是加班不代表你就可以松懈了,永远记得我说的那句话,从你入行那一刻起,你就要不停的学习.在这一年里,你至少需 ...
- 前端之JavaScript 补充
1. BOM window location.href = "https://www.sogo.com" location.reload() // 重新加载当前页 location ...
- [leetcode]_Binary Tree Level Order Traversal I && II
题目:给定一棵二叉树,对其进行层次遍历,将遍历结果存入二维链表中. 思路:二叉树的层次遍历关键在于使用Queue. 复习: Queue的定义.LinkedList实现了Queue接口,因此可用Link ...
- MYSQL中防止插入重复记录的解决方案(无重复值更新)
说明:一般我们使用MYSQL插入记录时,类似于这样的语句: insert into table_name(email,phone,user_id) values(‘test9@163.com’,’99 ...
- 中 varStatus的属性简介
varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性.就拿varStatus="status"来说,事实上定义了一个status ...
- LG2120 [ZJOI2007]仓库建设
题意 L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到 ...
- docker 命令记录
从 Docker 镜像仓库获取镜像的命令是 docker pull.其命令格式为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 具体的选项 ...