卷积神经网络

由手工设计卷积核变成自动学习卷积核(后向传播算法)

定义

初始数据 D a t a ∈ R M ∗ N Data \in R^{M*N} DataRMN

卷积核 W = ∣ w i , j ∣ i ∈ [ 1 , P ] j ∈ [ 1 , Q ] W=\vert w_{i,j}\vert \quad i\in[1,P] j\in[1,Q] W=wi,ji[1,P]j[1,Q]
卷积来实现线性变换 W W W 一次卷积共享
步长(Stride):S
填充(Padding): P 边缘都进行填充P个0

填 充 方 式 { N o − P a d d i n g : P = 0 S a m e : P = K − 1 2 其 中 P = Q = K , S = 1 填充方式\begin{cases} No-Padding: P=0 \\ Same: P=\frac {K-1} 2 \end{cases} \\其中P=Q=K,S=1 {NoPadding:P=0Same:P=2K1P=Q=KS=1

Feature Map特征图(卷积结果)大小(NO-Padding):
R e s u l t ∈ R └ M − P S ┘ + 1 , └ N − Q S ┘ + 1 Result\in R^{\llcorner {\frac {M-P} S} \lrcorner+1,\llcorner{\frac {N-Q} S}\lrcorner+1} ResultRSMP+1SNQ+1

在这里插入图片描述
一次卷积变换可以提取一个图像特征

上 下 边 缘 检 测 : [ 1 1 1 0 0 0 − 1 − 1 − 1 ] 上下边缘检测: \begin{bmatrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ -1 & -1 & -1 \end{bmatrix} 101101101

简单分析

[ x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 ] ∗ [ w 1 w 2 w 3 w 4 ] + [ b 1 b 2 b 3 b 4 ] = [ p 1 p 2 p 3 p 4 ] \begin{bmatrix} x_1 & x_2 & x_3\\ x_4 & x_5 & x_6\\ x_7 & x_8 & x_9 \end{bmatrix} * \begin{bmatrix} w_1 & w_2 \\ w_3 & w_4 \end{bmatrix} +\begin{bmatrix} b_1 & b_2 \\ b_3 & b_4 \end{bmatrix} =\begin{bmatrix} p_1 & p_2 \\ p_3 & p_4 \end{bmatrix} x1x4x7x2x5x8x3x6x9[w1w3w2w4]+[b1b3b2b4]=[p1p3p2p4]

神经网络表示
在这里插入图片描述
共享权重 W W W,非全连接(局部连接)

后项传播算法时
预 测 y ^ = f ( z 1 , z 2 , z 3 , z 4 ) 目 标 函 数 E = 1 2 ( y − y ^ ) 计 算 ∂ E ∂ w 1 z 1 = w 1 x 1 + . . . . z 2 = w 1 x 2 + . . . . z 3 = w 1 x 4 + . . . z 4 = w 1 x 5 + . . . 故 而 ∂ E ∂ w 1 = ∂ E ∂ z 1 x 1 + ∂ E ∂ z 2 x 2 + . . . \begin{aligned} 预测 & \hat y=f(z_1,z_2,z_3,z_4)\\ 目标函数& E=\frac 1 2(y-\hat y)\\ 计算&\frac {\partial E} {\partial w_1} \\ &z_1=w_1x_1+....\\ &z_2=w_1x_2+....\\ &z_3=w_1x_4+...\\ &z_4=w_1x_5+...\\ &故而\frac {\partial E} {\partial w_1} =\frac {\partial E} {\partial z_1}x_1+\frac {\partial E} {\partial z_2}x_2+... \end{aligned} y^=f(z1,z2,z3,z4)E=21(yy^)w1Ez1=w1x1+....z2=w1x2+....z3=w1x4+...z4=w1x5+...w1E=z1Ex1+z2Ex2+...

卷积网络结构

LeNet5卷积网络
Convolution:卷积层 Subsampling: 汇聚层 Full Connection: 全连接层

卷积层

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器.

线性变换(卷积)+非线性变换(ReLU激活函数)

操作

不失一般性,假设一个卷积层的结构如下:

  1. 输入特征映射组: x ∈ R M ∗ N ∗ D x \in R^{M*N*D} xRMND 为三维张量(Tensor),其中每个切片(Slice)矩阵 X d ∈ R M ∗ N X^d \in R^{M*N} XdRMN 为一个输入特征映射, 1 ≤ d ≤ D 1\le d\le D 1dD .
  2. 输出特征图(Feature Map): y ∈ R M ′ ∗ N ′ ∗ P y\in R^{M'*N'*P} yRMNP 为三维张量,其中每个切片矩阵 Y p ∈ R M ′ ∗ N ′ Y^p\in R^{M'*N'} YpRMN 为一个输出特征映射, 1 ≤ p ≤ P 1\le p\le P 1pP
  3. 卷积核: W ∈ R U ∗ V ∗ P ∗ D W\in R^{U*V*P*D} WRUVPD 为四维张量,其中每个切片矩阵 W p , d ∈ R U , V W^{p,d}\in R^{U,V} Wp,dRU,V 为一个二维卷积核, 1 ≤ p ≤ P , 1 ≤ d ≤ D 1\le p \le P, 1\le d \le D 1pP,1dDP个卷积核 y ∈ R U ∗ V ∗ D y\in R^{U*V*D} yRUVD 提取图片的P个特征

R M ∗ N ∗ D × P 个 R U ∗ V ∗ D = R M ′ ∗ N ′ ∗ P R^{M*N*D} \times P个 R^{U*V*D} =R^{M'*N'*P} RMND×PRUVD=RMNP
在这里插入图片描述
线 性 变 换 : Z p = W p X + b p = ∑ d = 1 D W p , d X d + b p 非 线 性 变 换 : Y p = f ( Z p ) 参 数 ( 权 重 偏 置 ) : P ∗ ( U ∗ V ∗ D + 1 ) \begin{aligned} 线性变换:&Z^p=W^p X +b^p=\sum_{d=1}^D{W^{p,d} X^d +b^p}\\ 非线性变换:&Y^p=f(Z^p)\\ 参数(权重偏置):&P*(U*V*D+1) \end{aligned} 线线():Zp=WpX+bp=d=1DWp,dXd+bpYp=f(Zp)P(UVD+1)

在这里插入图片描述

参数学习

简化上述计算过程
设 : s t r i d e = 1 X ∈ M ∗ N , W ∈ U ∗ V , Z = W ∗ X y ^ = f ( Z ) 目 标 函 数 : E = E ( y ^ , y ) 那 么 ( 类 比 以 上 二 维 的 简 单 分 析 ) : ∂ E w u , v = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 E ′ f ′ ∂ y i , j ∂ w i , j = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 E ′ f ′ x i + u − 1 , j − v − 1 \begin{aligned} 设:&\\ & stride=1\\ & X\in{M*N} ,\quad W\in{U*V}, \quad Z=W*X\\ & \hat y=f(Z)\\ 目标函数:& E=E(\hat y, y)\\ 那么(类比以上二维的简单分析):&\\ \frac {\partial E} {w_{u,v}}&=\sum_{i=1}^{M-U+1}{\sum_{j=1}^{N-V+1}{E'f' \frac {\partial y_{i,j}} {\partial w_{i,j}}}}\\ &=\sum_{i=1}^{M-U+1}{\sum_{j=1}^{N-V+1}{E'f'x_{i+u-1,j-v-1}}} \end{aligned} ()wu,vEstride=1XMN,WUV,Z=WXy^=f(Z)E=E(y^,y)=i=1MU+1j=1NV+1Efwi,jyi,j=i=1MU+1j=1NV+1Efxi+u1,jv1


∂ E ∂ W = E ′ f ′ X \frac {\partial E}{\partial W}=E'f' X WE=EfX

汇聚层

汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进行 特征选择,降低特征数量,从而减少参数数量.

卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的 神经元个数并没有显著减少 如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合.
做法: 丢弃部分特征or取平均

假设汇聚层的输入特征映射组为 X ∈ R M ∗ N ∗ D X\in R^{M*N*D} XRMND 对于其中每一个特征映射 X d ∈ R M ∗ N , 1 ≤ d ≤ D X^d \in R^{M*N}, 1\le d\le D XdRMN,1dD,将其划分为很多区域 R m , n d , 1 ≤ m ≤ M ′ , 1 ≤ n ≤ N ′ R^d_{m,n}, 1\le m\le M', 1\le n\le N' Rm,nd,1mM,1nN ,这些区域可以重叠,也可以不重叠.汇聚(Pooling)是指对每个区域进行下采样(Down Sampling)得到一个值,作为这个区域的概括.

常见的汇聚方式

  1. 最大汇聚 取 R m , n d R^d_{m,n} Rm,nd 区域内的最大值作为输出
  2. 平均汇聚 取 R m , n d R^d_{m,n} Rm,nd 区域内的平均值作为输出

Y d = g ( X d ) g 为 m a x ( ) 或 m e a n ( ) Y^d=g(X^d) \quad g为max() 或 mean() Yd=g(Xd)gmax()mean()

目前主流的卷积网络中,汇聚层仅包含下采样操作.但在早期的一些卷积网络(比如LeNet-5)中, 有时也会在汇聚层使用非线性激活函数
Y ′ d = f ( Y d ) Y'^{d}=f(Y^d) Yd=f(Yd)

典型的汇聚层是将每个特征映射划分为2 × 2大小的不重叠区域,然后使用最大汇聚的方式进行下采样.
汇聚层也可以看作一个特殊的卷积层,卷积核大小为𝐾 × 𝐾,步长为𝑆 × 𝑆,卷积核为max函数或 mean函数.
过大的采样区域会急剧减少神经元的数量,也会造成过多的信息损失.

全连接层

神经网络

卷积网络的整体结构

一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成.

目前常用的卷积网络整体结构如图5.9所示.一个卷积块为连续 M个卷积层和 b 个汇聚层(M 通常设置为2 ∼ 5,b为0或1).
一个卷积网络中可以堆叠N个连续的卷积块,然后在后面接着 K 个全连接层(𝑁 的取值区间比较大,比如 1 ∼ 100 或者更大;𝐾 一般为0 ∼ 2).

在这里插入图片描述

目前,卷积网络的整体结构趋向于使用 更小的卷积核(比如 1 × 1 和 3 × 3)以及更深的结构(比如层数大于 50).此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用也变得越来越小
因此 目前比较流行的卷积网络中,汇聚层的比例正在逐渐降低,趋向于全卷积网络.

Le-Net5

在这里插入图片描述

卷 积 层 C 1 : 输 入 : 32 ∗ 32 6 个 卷 积 核 : 5 ∗ 5 s t r i d e = 1 参 数 : 6 ∗ ( 5 ∗ 5 + 1 ) 汇 聚 层 S 2 : 输 入 : 28 ∗ 28 ∗ 6 采 样 窗 口 : 2 ∗ 2 平 均 汇 聚 不 相 交 参 数 : 卷 积 层 C 3 : 输 入 : 14 ∗ 14 ∗ 6 不 使 用 连 接 表 : 16 个 卷 积 核 : 5 ∗ 5 ∗ 6 参 数 : 16 ∗ ( 5 ∗ 5 ∗ 6 + 1 ) 使 用 连 接 表 : 60 个 卷 积 核 : 5 ∗ 5 s t r i d e = 1 汇 聚 层 S 4 : 输 入 : 10 ∗ 10 ∗ 16 采 样 窗 口 : 2 ∗ 2 平 均 汇 聚 不 相 交 参 数 : 卷 积 层 C 5 : 输 入 : 5 ∗ 5 ∗ 16 120 个 卷 积 核 : 5 ∗ 5 ∗ 16 s t r i d e = 1 参 数 : 120 ∗ ( 5 ∗ 5 ∗ 16 + 1 ) 全 连 接 层 F 6 : 输 入 : 1 ∗ 1 ∗ 120 84 个 神 经 元 参 数 : 84 ∗ ( 120 + 1 ) 输 出 层 : 10 个 径 向 基 函 数 ( R a d i a l B a s i s F u n c t i o n , R B F ) 组 成 \begin{aligned} 卷积层C1:&\\ &输入:32*32\\ &6个卷积核:5*5 \quad stride=1\\ &参数:6*(5*5+1)\\ 汇聚层S2:&\\ &输入:28*28*6\\ &采样窗口:2*2 \quad 平均汇聚 \quad 不相交\\ &参数:\\ 卷积层C3:& \\ &输入:14*14*6\\ &不使用连接表:16个卷积核:5*5*6\\ &参数:16*(5*5*6+1)\\ &使用连接表:60个卷积核:5*5\quad stride =1\\ 汇聚层S4:&\\ &输入:10*10*16\\ &采样窗口:2*2 \quad 平均汇聚 \quad 不相交\\ &参数:\\ 卷积层C5:& \\ &输入:5*5*16\\ &120个卷积核:5*5*16 \quad stride=1\\ &参数:120*(5*5*16+1)\\ 全连接层F6:&\\ &输入:1*1*120 \quad 84个神经元\\ &参数:84*(120+1)\\ 输出层:&\\ &10个径向基函数(Radial Basis Function,RBF)组成 \end{aligned} C1:S2:C3:S4:C5:F6::32326:55stride=1655+1:28286:22:14146使1655616556+1使6055stride=1:101016:2255161205516stride=11205516+1111208484(120+1)10RadialBasisFunctionRBF

整个网络的计算速度取决于卷积层
e g : C 1 : 28 ∗ 28 ∗ ( 5 ∗ 5 ) ∗ 6 F 6 : 120 ∗ 84 eg:C1: 28*28*(5*5) *6\quad F6: 120*84 eg:C1:2828(55)6F6:12084
整个网络的参数个数取决于全连接层
e g : C 1 : 6 ∗ ( 5 ∗ 5 + 1 ) F 6 : 84 ∗ ( 120 + 1 ) eg:C1: 6*(5*5+1) \quad F6: 84*(120+1) eg:C1:6(55+1)F6:84(120+1)

连接表

卷积层的每一个输出特征映射都依赖于所有输入特征映射,相当于卷积层的输入和输出特征映射之间是全连接的关系.
实际上,这种全连接关系不是必须的.我们可以让每一个输出特征映射都依赖于少数几个输入特征映射.

定义一个连接表(Link Table)𝑇 来描述输入和输出特征映
射之间的连接关系
如果第 p 个输出特征映射依赖于第 d 个输入特征映射,则 T p , d = 1 T_{p,d}=1 Tp,d=1 ,否则为0

Y p = f ( ∑ d , T p , d = 1 W p , d X d + b p ) Y^p=f\bigg(\sum_{d,T_{p,d}=1}^{}{W^{p,d}X^d+b^p}\bigg) Yp=f(d,Tp,d=1Wp,dXd+bp)

其中 𝑇 为 𝑃 × 𝐷 大小的连接表.假设连接表 𝑇 的非零个数为 𝐾,每个卷积核的大小为𝑈 × 𝑉,那么共需要𝐾 × 𝑈 × 𝑉 + 𝑃 参数.
第p列表示第p个特征由当前列的输入特征表示

AlexNet

第一个现代深度卷积网络模型
其首次使用了很多现代深度卷积网络的技术方法,比如使用 GPU 进行并行训练采用了 ReLU 作为非线性激活函数使用 Dropout 防止过拟合使用数据增强来提高模型准确率等.
AlexNet赢得了2012年ImageNet图像分类竞赛的冠军.

AlexNet的结构如图5.12所示,包括5个卷积层、3个汇聚层和3个全连接层(其中最后一层是使用 Softmax函数 的输出层).

在这里插入图片描述

  • 采用了 ReLU 作为非线性激活函数
    收敛速度快 (负值直接舍弃,若分布均匀每次舍弃一半数据;不像sigmoid使用一个特定的值 δ \delta δ
  • 汇聚层 (LeNet5:Subsampling Layer采用平均汇聚方式
    在AlexNet中,提出了最大池化(Max Pooling)的概念,即对每一个邻近像素组成的“池子”,选取像素最大值作为输出。–> 重叠的池化
    在LeNet中,池化的像素是不重叠的;而在AlexNet中进行的是有重叠的池化。实践表明,有重叠的最大池化能够很好的克服过拟合问题,提升系统性能。
    后项传播时:mean–> f ′ ÷ ( 1 4 ) f'\div (\frac 1 4) f÷(41) ;而 max–>最值时赋值即可其他地方0
  • Dropout随机丢弃
    为了避免系统参数更新过快导致过拟合,每次利用训练样本更新参数时候,随机的“丢弃”一定比例的神经元,被丢弃的神经元将不参加训练过程,输入和输出该神经元的权重系数也不做更新。 这样每次训练时,训练的网络架构都不一样,而这些不同的网络架构却分享共同的权重系数。实验表明,随机丢弃技术减缓了网络收敛速度,也以大概率避免了过拟合的发生。
    Amazing… 随机。。。。

在这里插入图片描述

  • 增加训练样本。尽管ImageNet的训练样本数量有超过120万幅图片,但相对于6亿待估计参数来说,训练图像仍然不够。
    Alex等人采用了多种方法增加训练样本,包括:1. 将原图水平翻转;2. 将256×256的图像随机选取224×224的片段作为输入图像。
    运用上面两种方法的组合可以将一幅图像变为2048幅图像。还可以对每幅图片引入一定的噪声,构成新的图像。这样做可以较大规模增加训练样本,避免由于训练样本不够造成的性能损失
  • 用GPU加速训练过程。

这些操作建立在样本数据足够大 首先ReLU收敛快 然后最大池化 丢弃池内非最值(非线性操作) Dropout随机丢弃…

代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值