深度学习框架Caffe学习笔记(8)-BP神经网络算法
来源:互联网 发布:书单 知乎 编辑:程序博客网 时间:2024/05/21 11:26
神经网络
MNIST例程中,如果将lenet_train_test.prototxt去掉两个卷积层和下采样层,剩下两个全连接层,这个网络模型就是一个简单的神经网络模型。使用该模型训练,最终准确率也可以达到97%以上。
该神经网络示意图如下:
这个神经网络包含三个层:
- 输入层: 28x28 = 784个神经元,每个神经元代表一个像素的值
- 隐藏层: n个神经元, 例子中 n=500
- 输出层: 10个神经元,分别代表手写数字识别可能的0~9十个数字,例如: 第一个神经元(代表0)的输出值=1, 其他的<1, 数字被识别为0
神经元
每一个神经元结构如下:
神经元的输出为
其中
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权w”和每个神经元的“偏向b”换而言之,神经网络学到的东西,蕴含在连接权与偏向中
激活函数
激活函数是用来加入非线性因素的,没有激活函数,多层神经网络也只能在线性空间内变换,最终相当于一次神经网络的效果。
常用的激活函数有几种:
Sigmoid函数
Sigmoid函数,值域为(0,1)。
tanh函数
tanh函数,值域为(-1,1)。
ReLU函数
ReLU (Rectiied Linear Unit, 规整化线性单元 )函数, 值域为[0,+∞),是一种非饱和激活函数。
深度神经网络中最大的问题是梯度消失问题,这在使用Sigmod、tanh函数等饱和函数情况下尤为严重(神经网络进行反向传播时候,各层都要乘以激活函数的一阶倒数,梯度每传递一层都会衰减一次,网络层数多时,梯度会不停衰减直到消失),使得训练网络时收敛极慢,而ReLU函数这类非饱和函数收敛速度则快很多。
误差逆传播算法
误差逆传播(error BackPropagation,简称BP)算法是最杰出的代表,他是迄今为止最成功的神经网络学习算法。
神经网络的目标为让计算输出y尽可能接近理想输出t,即然误差函数
神经网络各节点的权重w的调整量为
BP神经网络的计算流程为,先根据输入数据各个节点的权重偏向,计算出神经网络的输出(前向传播计算),通过计算输出与理想输出比较得到误差,再根据误差函数再各个节点的偏导数计算出各权重、偏向的调整量(反向传播计算)。该迭代过程循环进行,直到达到某些停止条件,如训练误差已经小到一定值。
以一个隐藏层的神经网络演示计算流程,每层选一个神经元进行计算。
前向传播计算
对Hidden层的每个单元,其值
从Hidden层到Output层计算如下:
对Hidden层每个单元k,其值
反向传播计算
每层首先计算对于该层输出节点的误差梯度,即所有相对于后一层节点的误差梯度的加权和。之后使用链式法则将误差梯度传到该层输入点。
输出单元的误差梯度通过对代价函数(或损失函数)求导得到,假设输出层单元k对应的代价函数项为
对于学习率η,隐藏层和输出层的连接权重
对隐藏层的每个单元j,其误差梯度为
对于学习率η,输入层和隐藏层的连接权重
根据得到的调整量不断调整权重和偏向,让神经网络的输出误差越来越小。
- 深度学习框架Caffe学习笔记(8)-BP神经网络算法
- 【深度学习】BP神经网络
- 深度学习笔记1 BP神经网络
- BP神经网络算法学习
- BP神经网络算法学习
- BP神经网络算法学习
- BP神经网络算法学习
- 深度学习框架Keras学习系列(二):神经网络与BP算法(Neural Network and BP Algorithm)
- BP神经网络学习笔记
- BP神经网络学习笔记
- 深度学习之BP神经网络
- 《神经网络与深度学习--Nilsen》+BP学习笔记
- 深度学习入门(四) BP算法与卷积神经网络理解
- 深入浅出|深度学习算法之BP神经网络 详细公式推导
- 深入浅出|深度学习算法之BP神经网络 详细公式推导
- 深度学习框架 caffe 学习笔记 Day1
- BP神经网络学习算法原理
- 深度学习框架Caffe学习笔记(1)-Caffe环境搭建
- HTML5基础之代码入门
- 如何在百度地图上画镂空圆 Android
- Spring整合Hibernate出现BeanCreationException,ClassNotFoundException
- HDU1026 优先队列与路径
- wap网站访客手机抓取软件除了手机号码抓取还可以获取到哪些信息
- 深度学习框架Caffe学习笔记(8)-BP神经网络算法
- 推荐一些用CRF做图像语义分割的资源 此博文包含图片
- android中自己写一个Fragment的应用,类似QQ的一个框架
- CentOS7 执行yum 命令出错
- 矩阵快速幂
- oracle设置环境变量
- C#中显式销毁对象
- 多级联动以地址为例
- 移位运算符操作数是负数的处理方式