卷积神经网络通俗易懂理解

1.前言

卷积神经网络是当下AI人工智能深度学习的基础,CNN可以应用在场景分类,图像分类,现在还可以应用到自然语言处理(NLP)方面的很多问题,比如句子分类等。下面进行讲解。

计算机视觉和 CNN 发展十一座里程碑

2.神经元

神经网络是由大量的神经元相互连接而成的,每个神经元接受线性组合输入之后,刚开始只是简单地线性加权,后给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出,每两个神经元之间的链接称之为权重。
在这里插入图片描述
上述为一个简单地神经元结构,x1,x2为输入,w1,w2为权重,b为偏置项,可以理解为使得我们的输出更加的偏向于真实值的调整项,z为线性组合之后的输出,其中z=w1x1+w2x2+b,g(z)为激活函数将上面的线性变换通过激活函数进行非线性变换,a是非线性变换之后的输出,则a=g(z)=g(w1x1+w2x2+b)

3.激活函数

常用的激活函数有sigmoid,tanh,relu等。。。,下面介绍sigmoid函数,如下所示:
在这里插入图片描述
可以看到sigmoid函数可以将输出值压缩到0-1之间,而输入值可以为任意值,跟逻辑回归一样,我们可以将激活函数看作是一种“分类概率”,线性加权之后的输入通过非线性激活函数sigmoid之后将输入值压缩到0-1之间,我们可以将这些值看做概率,如果输出为0.9,那么可以理解为90%的概率为正样本。

3.神经网络

在这里插入图片描述
跟上面一样,上面是一个单个神经元 ,将多个单个神经元组合在一起就形成了神经网络
在这里插入图片描述
上述是一个三层的神经网络结构,最左边的叫做输入层,中间的叫做隐藏层,最右边的叫做输出层,其中隐藏层可以为多层隐藏层,每一层的输出都会作为下一层的输入,层和层之间为全连接结构,同一层的神经元之间没有连接。
输入层:主要指对众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。输入的数据做一些预处理工作,包括归一化,去均值,pca等等操作

4.CNN之卷积层

4.1 CNN怎么进行识别

计算机如何识别一张图片,一个可能的方法就是计算机存储一张标准的图像,将需要识别的图像和标准的计算机存储的图像进行比对,如果两者一致,那么可以判断计算机存储图像和未知图像一致,识别成功。
且即使未知图像有一些偏移或者稍微变形模糊的情况,也依旧可以识别成功,CNN是将未知图像和标准图像一个局部一个局部的进行比对,对比的过程就是卷积操作。
在这里插入图片描述
如上述所示,我们要预测X和O,即使图像做了一些稍微的改变计算机也可以识别成功。
在计算机的“视觉”中,一幅图看起来就像是一个二维的像素数组(可以想象成一个棋盘),每一个位置对应一个数字。在我们这个例子当中,像素值"1"代表白色,像素值"-1"代表黑色。
在这里插入图片描述
当比较两幅图的时候,如果有任何一个像素值不匹配,那么这两幅图就不匹配,至少对于计算机来说是这样的。
在这里插入图片描述
也就会导致识别不成功。但是这么做,显得太不合理了。理想的情况下,我们希望,对于那些仅仅只是做了一些像平移,缩放,旋转,微变形等简单变换的图像,计算机仍然能够识别出图中的"X"和"O"。就像下面这些情况,我们希望计算机依然能够很快并且很准的识别出来:这就是CNN出现的要解决的问题。
对于CNN来讲,他是一个局部一个局部的进行比对,这些局部我们可以称之为“feature”特征,在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,相比起传统的整幅图逐一比对的方法。

4.2 什么是卷积

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
举个具体的例子。比如下图中,图中左边部分是原始输入数据,图中中间部分是滤波器filter,图中右边是输出的新的二维数据。
在这里插入图片描述
对于上述图像,卷积操作就是简单地相乘再相加,中间滤波器filter与数据窗口做内积,具体为:04+00+00+10+10+00+2*-4+10+00=-8

4.3 图像上的卷积

在下图对应的计算过程中,输入是一定区域大小(widthheight)的数据,和滤波器filter(带着一组固定权重的神经元)做内积后等到新的二维数据。具体来说,左边是图像输入,中间部分就是滤波器filter(带着一组固定权重的神经元),不同的滤波器filter会得到不同的输出数据,比如颜色深浅、轮廓。相当于如果想提取图像的不同特征,则用不同的滤波器filter,提取想要的关于图像的特定信息:颜色深浅或轮廓。
在这里插入图片描述
因为是提取局部特征,滤波器filter不同,经过滑动之后进行卷积的数值就不同,所以得到的结果就不同,得到的结果不同,那么就可以提取到不用的图片特征。
在CNN中,滤波器filter(带着一组固定权重的神经元)对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有这么几个参数:
  a. 深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。
  b. 步长stride:决定滑动多少步可以到边缘。
c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
在这里插入图片描述
上述就是卷积操作,可以看到:
两个神经元,即depth=2,意味着有两个滤波器。
数据窗口每次移动两个步长取3
3的局部数据,即stride=2。
zero-padding=1。扩充0的数据为一个
然后分别以两个滤波器filter为轴滑动数组进行卷积计算,得到两组不同的结果。
输出为7x7x3的数据,7x7表示图像数据的像素/长宽,3表示为3个通道,分别为R,G,B
中间部分为两个滤波器,filterw0和filterw1
最右边则是两个不同的输出,随着左边数据窗口的平移滑动,滤波器Filter w0 / Filter w1对不同的局部数据进行卷积计算。

下面根据上面的卷积操作给出几个概念:
1.上述左边的数据因为CNN卷积的对象是图像的局部,每次滤波器都是针对某一局部的数据窗口进行卷积,这就是CNN的***局部感知***机制
2. 上述的左边的数据因为是对局部的数据窗口进行卷积,数据一直在变化,但是我们的滤波器一直没有发生变化,滤波器也可以认为是一种权重,这就是CNN中的***权值共享***机制

下面我们对上述过程进行讲解:
即上图中的输出结果1具体是怎么计算得到的呢?其实,类似wx + b,w对应滤波器Filter w0,x对应不同的数据窗口,b对应Bias b0,相当于滤波器Filter w0与一个个数据窗口相乘再求和后,最后加上Bias b0得到输出结果1,如下过程所示:
在这里插入图片描述
10+10±10±10+00+11±10±10+01=1
在这里插入图片描述
-1
0+00±10+00+01±11+10±10+02=-1
在这里插入图片描述
00+10+00+10+02+10+00±10+1*0=0
上述三个过程相加起来再加上一个偏置项1就是1±1+0+1=1,也就是下面的红线所示的位置
在这里插入图片描述
然后滤波器Filter w0固定不变,数据窗口向右移动2步,继续做内积计算,得到0的输出结果,绿线所画位置。
在这里插入图片描述
最后,换做另外一个不同的滤波器Filter w1、不同的偏置Bias b1,再跟图中最左边的数据窗口做卷积,可得到另外一个不同的输出。
在这里插入图片描述

5.CNN的激励层

上面介绍了激活函数sigmoid,但实际梯度下降中,sigmoid容易饱和、造成终止梯度传递,且没有0中心化。咋办呢,可以尝试另外一个激活函数:ReLU,其图形表示如下
在这里插入图片描述
ReLU的优点是收敛快,求梯度简单。

6.池化层

池化,简言之,即取区域平均或最大,如下图所示
在这里插入图片描述
上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。
池化的作用:减小输出大小和降低过拟合。降低过拟合是减小输出大小的结果,它同样也减少了后续层中的参数的数量。

近期,池化层并不是很受青睐。部分原因是:

现在的数据集又大又复杂,我们更关心欠拟合问题。
Dropout 是一个更好的正则化方法。
池化导致信息损失。想想最大池化的例子,n 个数字中我们只保留最大的,把余下的 n-1 完全舍弃了。

参考:这里

  • 16
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会尽力用通俗易懂的语言来解释Transformer。 Transformer是一种用于处理序列数据的模型,它在自然语言处理领域有着重要的应用,比如机器翻译、文本生成等任务。 传统的序列模型,比如循环神经网络(RNN)和长短时记忆网络(LSTM),在处理长序列时可能会面临信息传递不足或者梯度消失等问题。而Transformer则采用了一种全新的架构,它不依赖于循环或者卷积操作,而是利用了自注意力机制(Self-Attention)。 自注意力机制可以帮助模型在处理序列时更好地关注不同位置之间的依赖关系。在Transformer中,输入序列会通过多层的注意力模块进行处理。每个注意力模块都包含了多头注意力机制,它能够同时关注输入序列中不同位置的信息。这样一来,模型可以更好地理解输入序列中不同位置之间的关系,并将这些关系融合到特征表示中。 除了自注意力机制,Transformer还引入了残差连接和层归一化来加强模型的训练效果和稳定性。残差连接可以帮助信息在模型中更快地传播,层归一化则可以对每一层的输入进行归一化,有助于加速训练过程。 Transformer的优势在于能够并行计算,因为自注意力机制可以同时计算不同位置的注意力权重。这使得Transformer在处理长序列时更加高效,并且能够处理更多的输入信息。 要掌握Transformer的理论知识,你可以深入学习相关的教材和论文。了解自注意力机制的原理、计算方法以及Transformer的整体架构是非常重要的。此外,通过实践项目来应用Transformer也是非常有帮助的,比如构建一个机器翻译系统或者文本生成模型。 希望这样的解释对你有帮助!如果还有其他问题,请随时提问。祝你在学习NLP的道路上取得进步!加油!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值