卷积神经网络 CNN 学习笔记
激活函数Relu
最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。Relu函数的定义
$$f(x)= max(0,x)$$
Relu函数图像如下图所示:
CNN示例
上图是一个CNN的示意图,一个卷积神经网络由若干卷积层、Pooling层、全连接层组成。你可以构建各种不同的卷积神经网络,它的常用架构模式为:
INPUT -> [[CONV]*N -> POOL?]*M -> [FC]*K
也就是N个卷积层叠加,然后(可选)叠加一个Pooling层,重复这个结构M次,最后叠加K个全连接层。
Convolution Layer 表示卷积层
Pooling Layer 表示池化
Convolution Layer
卷积层的主要是作用是对数据进行卷积操作。
卷积操作可以理解为,将数据特种进行提取的一个过程。
比如 一张图片,要检测图片中存在的边缘,也就是边缘检测,那么首先建立两个filter,分别代表横竖边缘,然后拿着filte去跟input的image进行计算,得到卷积后的结果,根据卷积后的结果进行判断是否存在边缘情况。
另一种情况,一张手写数字的图片,需要进行识别,那么需要对该图片进行特种提取,建立特种提取的方式就是建立filter的过程,然后用filter去对该image进行计算,得到我们想要提取的特种数据。
卷积层输出值的计算
我们用一个简单的例子来讲述如何计算卷积,然后,我们抽象出卷积层的一些重要概念和计算方法。
假设有一个55的图像,使用一个33的filter进行卷积,想得到一个3*3的Feature Map,如下所示:
公式如下:
$$a_{i,j}=f(\sum_{m=0}{2}\sum_{n=0}{2}w_{m,n}x_{i+m,j+n}+w_b)\qquad(式1)$$
详细参考:https://www.zybuluo.com/hanbingtao/note/485480
Pooling Layer
池化主要的作用是对卷积后的数据进行整合的一个过程,同时对数据进行降维的操作。
比如在上面的距离过程中,两张图片都会在卷积后形成特征数据,但是这些特征数据中,有很多数据对我们的结果影响可以并不大,那么我们可以对特征数据进行池化后,形成新的特征数据。
Pooling层输出值的计算
Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在nn的样本中取最大值,作为采样后的样本值。下图是22 max pooling:
卷积神经网络的训练
卷积层训练
训练公式:
$$\delta{l-1}=\sum_{d=0}D\delta_dl*W_dl\circ f'(net^{l-1})\qquad(式9)$$
符号$\circ$表示element-wise product,即将矩阵中每个对应元素相乘,$d$表示深度$D$的实力,$l$表示层。
$\delta_d^l$表示$d$深度下$l$层的误差项
$W_d^l$表示$d$深度下$l$层的权重
$net^{l-1}$表示$d$深度下$l$层的加权输入
加权输入公式:
\begin{align}
netl&=conv(Wl, a^{l-1})+w_b\
a{l-1}_{i,j}&=f{l-1}(net^{l-1}_{i,j})
\end{align}
Pooling层的训练
无论max pooling还是mean pooling,都没有需要学习的参数。因此,在卷积神经网络的训练中,Pooling层需要做的仅仅是将误差项传递到上一层,而没有梯度的计算。
Max Pooling误差项的传递
对于max pooling,下一层的误差项的值会原封不动的传递到上一层对应区块中的最大值所对应的神经元,而其他神经元的误差项的值都是0。如下图所示(假设$a{l-1}_{1,1}、a{l-1}{1,4}、a{l-1}_{4,1}a{l-1}{4,4}$为所在区块中的最大输出值):
对于mean pooling,下一层的误差项的值会平均分配到上一层对应区块中的所有神经元。如下图所示:
PS:上面两个图示的流向应该是从 layer L 到 layer L-1 ,传递过程中,Max pooling 采用
上面这个算法可以表达为高大上的克罗内克积(Kronecker product)的形式,有兴趣的读者可以研究一下。
$$\delta^{l-1} = \deltal\otimes(\frac{1}{n2})_{n\times n}$$
卷积神经网络 CNN 学习笔记的更多相关文章
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- 卷积神经网络CNN学习笔记
CNN的基本结构包括两层: 特征提取层:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征.一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来: 特征映射层:网络的每个计算层由多 ...
- CNN学习笔记:卷积神经网络
CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...
- CNN学习笔记:卷积运算
CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(一)
卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- CNN学习笔记:神经网络表示
CNN学习笔记:神经网络表示 双层神经网络模型 在一个神经网络中,当你使用监督学习训练它的时候,训练集包含了输入x还有目标输出y.隐藏层的含义是,在训练集中,这些中间节点的真正数值,我们是不知道的,即 ...
- 深度学习之卷积神经网络CNN
转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...
随机推荐
- 阅读nsq源码 ---初步架构设计图
- 网络流解线性规划问题 BZOJ1061: [Noi2008]志愿者招募
线性规划定义: 在给定有限的资源和竞争约束情况下,很多问题都可以表述为最大化或最小化某个目标.如果可以把目标指定为某些变量的线性函数,而且如果可以将资源约束指定为这些变量的等式或不等式,则得到了一个线 ...
- BZOJ_2049_[Sdoi2008]Cave 洞穴勘测_LCT
BZOJ_2049_[Sdoi2008]Cave 洞穴勘测_LCT Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由 ...
- linux内核参数注释与优化
目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少 ...
- STM32 Cube mx 安装
原文链接:http://www.cnblogs.com/strongerHuang/p/5778216.html Ⅰ.写在前面 相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32 ...
- jackson xml转对象 对象转xml
public static void main(String[] args) throws Exception { XnServiceGetUserRequest xnServiceGetUserRe ...
- 【工具篇】抓包中的王牌工具—Fiddler (1-环境搭建)
导言 在现在高速发展的互联网时代,抓包工具被广泛应用在软件开发的项目中,Fiddler可谓是当下主流的抓包工具之一.测试人员用它来抓包.回放测试记录,构造发包测试用例,开发人员用来定位问题,其强大的功 ...
- gem安装redis库时报错
报错一: [root@Redis-1 software]# /usr/local/ruby/bin/gem install redis-3.2.2.gem ERROR: Loading command ...
- Jenkins配置从节点
配置从节点步骤 在Master的站点上创建节点配置信息 在Slave访问Jenkins站点,然后下载运行服务Slave端必须安装Jdk 两种运行方式: windows 服务 运行jar包 成功后的节点 ...
- ssm框架搭建和整合流程
Spring + SpringMVC + Mybatis整合流程 1 需求 1.1 客户列表查询 1.2 根据客户姓名模糊查询 2 整合思路 第一步:整合dao层 ...