这是个06年的老文章了,但是很多地方还是值得看一看的.

一、概要

主要讲了CNN的Feedforward Pass和 Backpropagation Pass,关键是卷积层和polling层的BP推导讲解。

二、经典BP算法

前向传播需要注意的是数据归一化,对训练数据进行归一化到 0 均值和单位方差,可以在梯度下降上改善,因为这样可以防止过早的饱,这主要还是因为早期的sigmoid和tanh作为激活函数的弊端(函数在过大或者过小的时候,梯度都很小),等现在有了RELU和batch normalization这两个神器,基本上对梯度消失的问题有了不错的解决。然后是BP算法,论文里面稍微难理解的是公式5的推导,

(引用的这里的翻译http://www.cnblogs.com/shouhuxianjian/p/4529202.html):

网络中我们需要后向传播的“ 误差”可以被认为是关于有偏置项扰动的每个单元的 “敏感性”。也就是说:

(公式4)

因为,所以偏置的敏感性其实等于一个单元的所有输入产生的误差偏导。下面的就是从高层到低层的BP:

(公式5)

因为左边是输入X的误差偏导,有因为,所以要前面的误差偏导乘上第l+1个W在乘上激活函数的偏导,这个如果对BP算法有所了解的话应该很好理解。

这里的“o” 表示是 逐原始相乘的。对于公式2中的误差函数,输出层神经元的敏感性如下:

(公式6)

最后,关于某个给定的神经元的更新权重的delta-rule就是对那个神经元的输入部分进行复制,只是用神经元的delta进行缩放罢了(其实就是如下面公式7的两个相乘而已)。在向量的形式中,这相当于输入向量(前层的输出)和敏感性向量的外积:

(公式7)

(公式8)

 三、CNN

Sub-sampling的好处是来减少计算时间并且逐步的建立更深远的空间和构型的不变性,后面一点说的很拗口,我的理解还是对平移和缩放不变性的confidence吧。

1.计算梯度

这里论文就很不讲道理了,直接摆公式,什么都没有...卷积层和polling层的反向传播还是相当重要的,这里推荐一篇博文http://www.cnblogs.com/tornadomeet/p/3468450.html,里面对CNN的BP算法讲的很好,基本上推完这四个问题,CNN的BP算法就有了一定的了解了

博客里面比较难理解的是这个图:

也就是把卷积核旋转180度以后,从做左到右,再从上到下,计算得到每个值,跟feadforward pass的卷积不同,因为那个其实是一个相关的操作...只不过以卷积的形式表现了出来,这个才是正统的卷积处理。

这里需要理清一下这四个问题,首先是输出的误差敏感项,这个直接看推导就行了,然后是卷积层的下一层为pooling层时,求卷积层的误差敏感项,因为反向传播的时候,输出会比输入小,所以梯度在传递的时候和传统BP算法不一样,所以如何得到卷积层的误差敏感项就是这个问题考虑的。第三个问题考虑的是pooling层下面接卷积层,这个是因为我们要得到pooling层的误差敏感性,依靠的是卷积核的误差敏感项求的,同样是因为scale 的问题,所以需要去考虑。最后一个问题就是卷积层本身,在得到输出的误差敏感性之后,怎么得到W的,这个只要用相关的操作就可以得到,简单的理解是l层i和l+1层j之间的权值等于l+1层j处误差敏感值乘以l层i处的输入,而卷积的操作是一个累加的过程,所以BP的时候,也需要相关的操作得到。

 四、combine

论文最后讲的几个feature map融合的想法也很好的理解,我的问题是,这个feature map不是一直作为多通道输出的么,为什么需要去融合,后来很多知名的net好像也并没有用到这个方法,是不是只是一次尝试?

论文笔记《Notes on convolutional neural networks》的更多相关文章

  1. 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记

    论文题目:<Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition> 论文作者:Qibin ...

  2. [place recognition]NetVLAD: CNN architecture for weakly supervised place recognition 论文翻译及解析(转)

    https://blog.csdn.net/qq_32417287/article/details/80102466 abstract introduction method overview Dee ...

  3. 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation

    Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...

  4. 论文笔记——Rethinking the Inception Architecture for Computer Vision

    1. 论文思想 factorized convolutions and aggressive regularization. 本文给出了一些网络设计的技巧. 2. 结果 用5G的计算量和25M的参数. ...

  5. 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

    Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...

  6. 论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

    ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware 2019-03-19 16:13:18 Pape ...

  7. 论文笔记:DARTS: Differentiable Architecture Search

    DARTS: Differentiable Architecture Search 2019-03-19 10:04:26accepted by ICLR 2019 Paper:https://arx ...

  8. 论文笔记:Progressive Neural Architecture Search

    Progressive Neural Architecture Search 2019-03-18 20:28:13 Paper:http://openaccess.thecvf.com/conten ...

  9. 论文笔记:Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation

    Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation2019-03-18 14:4 ...

  10. 论文笔记系列-DARTS: Differentiable Architecture Search

    Summary 我的理解就是原本节点和节点之间操作是离散的,因为就是从若干个操作中选择某一个,而作者试图使用softmax和relaxation(松弛化)将操作连续化,所以模型结构搜索的任务就转变成了 ...

随机推荐

  1. ubuntu jdk install

    1.下载jdk-7u75-linux-x64.tar.gz,默认在/home/csf/Downloads 2.csf@ubuntu:~/Downloads$ sudo mkdir /usr/java ...

  2. windows下安装win7虚拟机并安装oracle

    一.win7虚拟机 与安装linux虚拟机没有什么不同,不同的是选择客户机操作系统.内存.磁盘容量,以及映像文件. 创建win7虚拟机步骤简化: 新建虚拟机-->>自定义-->> ...

  3. 牛客小白月赛1 G あなたの蛙は旅⽴っています【图存储】【DP】

    题目链接:https://www.nowcoder.com/acm/contest/85/G 思路: DP 空间可以优化成一维的, 用一维数组的 0 号单元保存左斜对角的值即可. 存图这里真不好理解 ...

  4. Spring Boot 前世今生

    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 ...

  5. 分享自己写的基于Dapper的轻量级ORM框架~

    1.说明 本项目是一个使用.NET Standard 2.0开发的,基于 Dapper 的轻量级 ORM 框架,包含基本的CRUD以及根据表达式进行一些操作的方法,目前只针对单表,不包含多表连接操作. ...

  6. centos7中使用LVM管理磁盘和挂载磁盘

    centos7使用LVM管理一块新的磁盘 注意!文中凡是带#的都是命令标志. 一些重要概念: LV(Logical Volume)- 逻辑卷, VG(Volumne Group)- 卷组, PV(Ph ...

  7. python笔记-dict字典的方法

    #!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...

  8. 21.VUE学习之-操作data里的数组变异方法push&unshit&pop&shift的实例应用讲解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. psutil模块的基础使用

    注:Python并没有自带psutil模块,需要自己去安装 安装psutil模块 pip install psutilorpip3 install psutil 一.导入模块 import psuti ...

  10. Oracle 数据库密码过期问题

    (1)在CMD命令窗口中输入:           sqlplus 用户名/密码@数据库本地服务名 as sysdba;(如:sqlplus scott/1234@oracle1 as sysdba; ...