锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【深度学习笔记】5.卷积神经网络

时间:2023-01-20 20:00:00 fci连接器10075025

CNN

CNN(Convolutional Neural Networks,CNN)中文名称卷积神经网络。

通常,当我们使用全连接神经网络时,权重矩阵的参数非常多。它使整个网络收敛非常缓慢。然而,自然图像处理具有局部不变性的特点,即尺度缩放、平移、旋转等操作不影响其语义信息,但全连接前馈网络难以提取这些局部不变性特征。所以介绍CNN。

CNN也是前馈神经网络,它最大的区别是受生物学上感受野的启发,引入了卷积核的概念。

卷积

卷积是一种连续卷积和离散卷积的计算方法。
{ ( f ? g ) ( n ) = ∫ ? ∞ ∞ f ( τ ) g ( n ? τ ) d τ n = τ ( n ? τ ) ( f ? g ) ( n ) = ∑ τ = ? ∞ ∞ f ( τ ) g ( n ? τ ) \begin{cases} (f*g)(n)=\int_{-\infty}^{\infty}f(\tau)g(n-\tau)d\tau \\ n=\tau (n-\tau) (f*g)(n)=\sum^{\infty}_{\tau=-\infty}f(\tau)g(n-\tau) \end{cases} { (f?g)(n)=?f(τ)g(n?τ)dτn=τ (n?τ)(f?g)(n)=τ=f(τ)g(nτ)
卷积有很多应用,经常用于处理一个输入,通过系统产生一个适应需求的输出。是用于计算信号的延迟累计的一种手段

avatar

  • 统计学中加权平均法
  • 概率论中两个独立变量之和概率密度的计算
  • 信号处理中的线性系统
  • 物理学的线性系统
  • 图像处理中的应用(卷积神经网络)

例如,假设一个信号发生器每个时刻t产生一个信号x,其信息的衰减率为w。即在k-1个时间步长后,信息为原来的w倍。假设w_1=1,w_2=1/2,w_3=1/4,则时刻t收到的信号y_t为当前hi为当前时刻产生的信息和以前时刻延迟信息的叠加,即:
y = 1 ∗ x t + 1 / 2 ∗ x t − 1 + 1 / 4 ∗ x t − 2 = ω 1 ∗ x t + ω 2 ∗ x t − 1 + ω 3 ∗ x t − 2 = ∑ k = 1 3 ω k ∗ x t − k + 1 y=1*x_t+1/2*x_{t-1}+1/4*x_{t-2} \\ =\omega_1*x_t+\omega_2*x_{t-1}+\omega_3*x_{t-2} \\ =\sum^{3}_{k=1} \omega_k*x_{t-k+1} y=1xt+1/2xt1+1/4xt2=ω1xt+ω2xt1+ω3xt2=k=13ωkxtk+1

其中w就是滤波器,也就是常说的卷积核(Convolution Kernel)

给定一个输入信号x和滤波器w,卷积输出为:
y y = ∑ k = 1 K ω k x t − k + 1 y_y=\sum^{K}_{k=1}\omega_kx_{t-k+1} yy=k=1Kωkxtk+1
而不同的滤波器提取出来的序列也有不同:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPAww0VG-1638018363661)(https://datawhalechina.github.io/unusual-deep-learning/PIC/5/3.png)]

步长与零

填充

下面引入滤波器的滑动步长S和零填充P

卷积的结果按输出长度不同可分三类:

  • 窄卷积:步长T=1,两端不补零P=0,卷积后输出长度是M-K+1
  • 宽卷积:步长T=1,两端补零P=K-1,卷积后的长度是M+K-1
  • 等宽卷积:步长T=1,两端补零P=(K-1)/2,卷积后输出长度M

在早期的文献中,卷积一般默认为窄卷积。而目前的文献中,卷积一般默认为等宽卷积。

卷积与图像

上面提到,卷积在图像处理中发挥着重要的左右。而图像一般是二维矩阵的形式输入神经网络中,因此我们需要使用二维卷积

下面给出定义:一个输入信息X和滤波器W的二维卷积为Y=W*X,既
y i j = ∑ u = 1 U ∑ v = 1 V ω u v x i − u + 1 , j − v + 1 y_{ij}=\sum^{U}_{u=1}\sum_{v=1}V\omega_{uv}x_{i-u+1,j-v+1} yij=u=1Uv=1Vωuvxiu+1,jv+1
实际如下图:

下图直接表示卷积层的映射关系

多个卷积核的情况:下图是表示步长2、filter 3*3 、filter个数6、零填充 1的情形。

几乎很多实际应用都可以对应到这个问题上,都是在做这样一件事

1)输入对应着rgb图片

2)一旦输入的特征图个数是多个,这个时候每一组filter就应该是多个,而这里有两组filter

3)输入是三个特征图,输出为两个特征图,那么我们同样看看每个特征图怎么计算的。

典型的卷积层为3维结构

其他卷积

转置卷积/微步卷积

低维特征映射到高维特征

空洞卷积

为了增加输出单元的感受野,通过给卷积核插入“空洞”来变相地增加其大小。

卷积神经网络基本原理

一般的卷积神经网络基本结构包括:输入层卷积层激活函数池化层全连接层输出层。当然,在某些特殊业务场景下,可能会基于简单的卷积网络结果添加其他的类似预训练模型、机器学习模型等操作。

下面将从卷积层开始介绍每一层的细节。

卷积层

二维卷积运算:给定二维的图片作为输入,卷积核为K,那么卷积的公式可以表示为:
S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) K ( m , n ) S(i,j)=(I * K)(i,j)=\sum_m\sum_nI(i-m,j-n)K(m,n) S(i,j)=(IK)(i,j)=mnI(im,jn)K(m,n)
绝技和需要进行上下翻转和左右翻转,所以
S ( i , j ) = ( [ I ( i − 2 , j − 2 ) I ( i − 2 , j − 1 ) I ( i − 2 , j ) I ( i − 1 , j − 2 ) I ( i − 1 , j − 1 ) I ( i − 1 , j ) I ( i , j − 2 ) I ( i , j − 1 ) I ( i , j ) ] ∗ [ K ( 2 , 2 ) K ( 2 , 1 ) K ( 2 , 0 ) K ( 1 , 2 ) K ( 1 , 1 ) K ( 1 , 0 ) K ( 0 , 2 ) K ( 0 , 1 ) K ( 0 , 0 ) ] ) S(i,j)=(\left[ \begin{matrix} I(i-2,j-2) & I(i-2,j-1) & I(i-2,j)\\ I(i-1,j-2) & I(i-1,j-1) & I(i-1,j) \\ I(i,j-2) & I(i,j-1) & I(i,j)\end{matrix} \right]*\left[ \begin{matrix} K(2,2) & K(2,1) & K(2,0)\\ K(1,2) & K(1,1) & K(1,0) \\ K(0,2) & K(0,1) & K(0,0)\end{matrix} \right]) S(i,j)=(I(i2,j2)I(i1,j2)I(i,j2)I(i2,j1)I(i1,j1)I(i,j1)I(i2,j)I(i1,j)I(i,j)K(2,2)K(1,2)K(0,2)K(2,1)K(1,1)K(0,1)K(2,0)K(1,0)K(0,0))
卷积实际上就是互相关,其实更直接一点就是输入数据与卷积核对应“坐标”的每一格数据相乘的累加。

累加完毕之后,卷积核会根据我们设定的步长等因素平移,然后继续相乘累加。就犹如下图一样:

卷积的步长(stride):卷积核移动的步长,决定着卷积核计算完一个单位以后,移动的“距离“

卷积的模式:Full、Same、Valid

  • Full:当卷积核与图片像素开始相交时做卷积
  • Same:当卷积核中心(K)与图片像素相交时开始做卷积
  • Valid:当卷积核完全与与图片像素相交时开始做卷积

数据填充:如果我们有一个 𝑛×𝑛 的图像,使用𝑓×𝑓 的卷积核进行卷积操作,在进行卷积操作之前我们在图像周围填充 𝑝 层数据,输出的维度:

感受野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域。

要计算感受野大小,可以采用从后往前逐层计算法:

  • 第i层感受野到校和第i-1层的卷积核大小步长相关,同时也与第i-1层感受野相关
  • 假设最后一层(卷积层或池化层)输出特征图感受野的大小(相对于其直接输入而言)等于卷积核的大小

卷积层的深度(卷积核个数):一个卷积层通常包含多个尺寸一致的卷积核

激活函数

激活函数是用来加入非线性因素,提高网络表达能力,卷积神经网络中最常用的是ReLU,Sigmoid使用较少。这点在前馈神经网络章节中也有相关提及。

ReLU函数

优点

  • 计算速度快,ReLU函数只有线性关系,比Sigmoid和Tanh要快很多
  • 输入为正数的时候,不存在梯度消失问题

缺点

  • 强制性把负值置为0,可能丢掉一些特征
  • 当输入为负数时,权重无法更新,导致“神经元死亡”(学习率不 要太大)

Parametric ReLU

$$
f(x)=\left{
\begin{aligned}
\alpha x,x<0 \
x,x>0

\end{aligned}
\right.
$$

  • 当 𝛼=0.01 时,称作Leaky ReLU
  • 当 𝛼 从高斯分布中随机产生时,称为Randomized ReLU(RReLU)

优点

  • 比sigmoid/tanh收敛快
  • 解决了ReLU的“神经元死亡”问题

缺点

  • 需要再学习一个参数,工作量变大

ELU函数

$$
f(x)=\left{
\begin{aligned}
\alpha (e^x-1),x<0 \
x,x\geq0

\end{aligned}
\right.
$$

优点

  • 处理含有噪声的数据有优势
  • 更容易收敛

缺点

  • 计算量较大,收敛速度较慢

总结

激活函数汇总

  • CNN在卷积层尽量不要使用Sigmoid和Tanh,将导致梯度消失。
  • 首先选用ReLU,使用较小的学习率,以免造成神经元死亡的情况。
  • 如果ReLU失效,考虑使用Leaky ReLU、PReLU、ELU或者Maxout,此时一般情况都可以解决

特征图

  • 浅层卷积层:提取的是图像基本特征,如边缘、方向和纹理等特征
  • 深层卷积层:提取的是图像高阶特征,出现了高层语义模式,如“车轮”、“人脸”等特征

池化层

所谓的池化就是使用某个位置相邻输出的总体统计特征作为该位置 的输出。通俗的讲就是将矩阵中某几个格的数据压缩成1个格。

通常池化会使用最大池化与均值池化。而池化层是不需要训练学习参数读,它只需要指定池化类型、核大小、步幅即可。

假设现有一个3x3的矩阵,核大小为2x2,步幅为1。

池化的作用

  • 减少网络中的参数计算量,从而遏制过拟合
  • 增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微 小扭曲不会改变池化输出——因为我们在局部邻域已经取了最大值/ 平均值)
  • 帮助我们获得不因尺寸而改变的等效图片表征。这非常有用,因为这样我们就可以探测到图片里的物体,不管它在哪个位置

全连接层

  • 对卷积层和池化层输出的特征图(二维)进行降维
  • 将学到的特征表示映射到样本标记空间的作用

输出层

输出层其实就是全连接成后的一个函数处理。

对于分类问题,输出层有:
y i = e z i ∑ i = 1 n e z i y_i=\frac{e^{z_i}}{\sum^{n}_{i=1}e^{z_i}} yi=i=1nezie元器件数据手册
IC替代型号,打造电子元器件IC百科大全!

相关文章