CNN理论基础

参考:

http://x-algo.cn/index.php/2016/12/22/1318/

Inception v1

目标

人类的大脑可以看做是神经元的重复堆积,Inception网络存在的原因就是想找构造一种「基础神经元」结构。人类的神经元之间链接往往是稀疏链接,所以就是寻找「稀疏网络」的稠密表示,并希望这个稠密网络在效果上可以「接近」甚至「超越」稀疏链接的网络

1x1卷积层

对特征降维,一方面可以解决计算瓶颈,同时限制网络的参数大小,可以将网络做的更「宽」和更「深」,效果也不差

线性激活

整个GoogLeNet的卷积层和Inception单元内部,都是采用线性激活函数。

单元结构

QQ20161201-0

整体结构

googlenet_diagram

QQ20161223-1

论文:Going deeper with convolutions

Batch Normalization

就是添加了一个归一化层。简称BN(Batch Normalization)。

在一个多层的神经网络中,如果前一层的参数发生了变化,就会导致前一层的输出「分布」发生改变,这种改变又会导致当前层的学习受到很大的影响,例如学习速度变慢、初始化参数对最终训练结果影响很大。所以,一种直观的想法就是在两层之间添加一层「归一化」层,从而消除这种分布的改变,提升训练的速度且不过渡依赖初始化参数

这种分布变化的现象称为「Internal Covariate Shift」,早年是有解决方案「domain adaptation」。

梯度弥散(梯度消失)

如果激活函数式sigmoid函数,反向传播的之后只会在 |x||x| 较小的地方梯度值比较大,别的部分梯度很快接近为0,改变这种状况通常可以通过ReLU(Rectified Linear Units)激活函数/合理的初始化参数/合理的学习率来解决。导致反馈对权重的改变没作用了。

归一化之后,可以将非线性激活函数的效用得到提高,有效避免了数据集中落在一个取值区域。

白化(whitening)

http://ufldl.stanford.edu/wiki/index.php/Whitening

我们已经了解PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化(一些文献中也叫sphering)。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。


2D 的例子

下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。

如何消除输入特征之间的相关性? 在前文计算 \textstyle x_{\rm rot}^{(i)} = U^Tx^{(i)} 时实际上已经消除了输入特征\textstyle x^{(i)}之间的相关性。得到的新特征 \textstyle x_{\rm rot} 的分布如下图所示:

PCA-rotated.png

这个数据的协方差矩阵如下:

\begin{align}\begin{bmatrix}7.29 & 0  \\0 & 0.69\end{bmatrix}.\end{align}

(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据均值为0时成立。下文的论述都隐式地假定这一条件成立。不过即使数据均值不为0,下文的说法仍然成立,所以你无需担心这个。)

### 局部感知野的概念及其在CNN中的作用 卷积神经网络(Convolutional Neural Network, CNN)的核心理论之一是 **局部感受野**(Local Receptive Fields),这一概念来源于生物神经系统的研究成果,模仿了视觉皮层中简单细胞的感受特性[^3]。 #### 1. 局部感受野的定义 局部感受野指的是每个神经元仅与输入数据的一部分区域相连,而不是像传统的多层感知机那样实现全局连接。这种机制显著减少了参数数量并提升了计算效率[^2]。例如,在处理二维图像时,每一个卷积核只覆盖一小部分像素范围,这些被覆盖的部分即构成了该神经元的局部感受野。 #### 2. 局部感受野的作用 - **减少参数量**:由于每个神经元只需学习与其对应的局部区域特征有关的信息,因此相比全连接方式大幅降低了所需权重的数量。 - **增强空间不变性**:即使目标物体的位置发生轻微偏移,只要仍处于某个神经元的感受范围内,则不会影响最终输出结果。 - **提取多层次特征**:随着层数增加,高层级上的节点会逐渐汇聚来自低层级多个较小感受域的内容形成更大规模的整体表示形式。 #### 3. 数学表达 假设有一个大小为 \(H \times W\) 的输入图片经过尺寸为 \(K \times K\) 的滤波器扫描后得到的新图像是 \(O\),那么对于任意位置 (i,j),新图像上对应点处数值可由如下公式计算得出: \[ O(i, j) = f(\sum_{m=0}^{K-1}\sum_{n=0}^{K-1}[I(i+m, j+n)*W(m,n)]+b)\] 这里\(f()\)代表激活函数;\(I(),W()\)& b分别指代原始输入矩阵、权重系数以及偏差项。此过程体现了单个神经单元如何基于有限邻近区域内样本值来做出响应决策的过程[^3]。 ```python import numpy as np def convolve(input_image, kernel_size=(3,3)): h,w=input_image.shape[:2] kh,kw=kernel_size output_height=h-kh+1 output_width=w-kw+1 result=np.zeros((output_height,output_width)) for i in range(output_height): for j in range(output_width): region=input_image[i:i+kh,j:j+kw] result[i][j]=np.sum(region*weight)+bias return result ``` 以上代码片段展示了基本的一维离散线性卷积运算逻辑简化版,实际应用当中还需要考虑边界条件填充等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值