其他分享
首页 > 其他分享> > 机器学习之深度学习学习笔记(四)

机器学习之深度学习学习笔记(四)

作者:互联网

文章目录

一、卷积神经网络(CNN)

CNN是专门被设计在影像上的,如图像分类

1.1 Image Classification

当我们对图像进行分类的时候,图像的大小可能是不一样的,所以我们把他们的形状变得一样再丢尽=进网络中进行训练。而对图像的表示方法,我们可以用独热向量(One-Hat-vector)表示:[0 0 0 0 0 0 1 0 0 0 …]向量的长度取决于图像种类的数量,最终结果经过softmax后变成概率分布,概率最大为最终结果。
对于一张彩色图片,有三个通道(channels),我们可以把他看成由一个三维的Tensor组成,而当图像输入时,我们常常是将tensor拉直直接作为网络的输入:
在这里插入图片描述
上面可以简单计算输入一共有100 * 100 * 3个,当是进入全连接网络是,因为每一个神经元与每一个输入都要有一个weight,假如第一层有1000个神经元,那么第一层总共需要1000 * 100 * 100 * 3个权重参数,数量十分具大!在这里插入图片描述
参数越多,虽然会使网络的弹性越大,但也可能会导致过拟合,影响预测结果。我们可以看出全连接网络并不是很适合做影片识别,因为他每一个神经元都将图片的全部点都看过一遍,存在大量的重合部分,对于图片而言,其实他是有某一部分就能决定这张图片的种类,所以很多神经元是多余的。在这里插入图片描述

1.1.1 CNN的第一种解释

我们让一个神经元只看图片的一部分特征
在这里插入图片描述
如上述图片的神经元只看3 * 3 * 3部分的特征,而这个区域叫做Receptive field(感受野),而这样的话神经元只需要3 * 3 * 3个weight参数,参数量减少很多。而Receptive field是可以重叠的在这里插入图片描述
因为图片的所有调整我们都会看,所以只要关心感受野的高和宽进行,深度不用理,我们一般用kernel size(卷积核)去表示感受野,且我们是有一组的神经元去关照这个感受野的在这里插入图片描述
看完这个范围之后,我们要移动到下一个范围,但要移动多少呢,这由stride参数决定,一般来说取1,2在这里插入图片描述
当我们继续移动使,到后面就会遇到一个问题,就是感受野超过了图像的范围,我们会用padding的补值方法,以此下去,在看完横向之后,又会继续往垂直方向看在这里插入图片描述
补充:虽然笔记做得是理论知识的记录,但也要回到操作上,卷积神经网络的方法是
nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
in_channels表示输入通道
out_channels表示输出通道
kernel_size表示卷积核大小,用f表示
stride表示步长,用s表示
padding表示填充的数目,注意一般填充时是整一个图片周围的填充,而不是某一维的填充,大小用p表示
首先做实验我们知道当padding为零的时候,图像在经过卷积神经网络之后是变小的,而如果我们能使padding的值合适,图像的大小是不变的。这就涉及到p的计算和输出图像维度n的计算,如以下公式:
p = (f - 1) // 2
n’ = [(n + 2p - f) // s] + 1
接下来再看看参数共享问题,我们知道感受野是由一系列的神经元来控制的,但也有一个问题是,因为生物是有共性的,比如说鸟都有嘴,如果我们在找每一张图片的鸟嘴时,都要一组不同的参数,那这样参数太多了,因为机器是在做着相同的事情,所以我们可以使在特定感受野不同的神经元的weight参数是一样的在这里插入图片描述
因为输入不一样,所以他们的输出自然也不一样。CNN的第一种解释可以这样简单的描述在这里插入图片描述

1.1.2CNN的第二种解释

对于卷积神经网络,就是按照卷积核的大小在图像中抓取部分的图案然后进行分析在这里插入图片描述
那又是如何抓取,首先卷积核是一个个的tensor,而他的数值是通过学习而来的,然后放到图像上,与对应的值做内积得到一个值在这里插入图片描述
然后卷积核会按照stride的长度往左右上下移动,全部做内积,最终得到一个新的图像Tensor,最后再用每一个卷积核做相同的过程,得到一个特征图在这里插入图片描述
我们可以得到的特征图看作一张新的图片,假如说有64个卷积核,那么新图片就有64个通道。我们用卷积核扫过整张图片的过程就是卷积(Convolution),对应的层叫做卷积层

1.1.3 两种方法的比较

在这里插入图片描述

1.2 池化层(pooling)

当我们把一张大的图片缩小,但是不会影响图片的性质,这就是pooling所能做的事情pooling中没有参数,他的行为是固定好的,类似激活函数,破零有许多种如:Min pooling、Mean pooling、Max poolingd等,这里记录Maxpooling
我们前面说过当经过卷积之后会产生新的tensor,我们再把得到的tensor分成分成许多的组在这里插入图片描述
Max pooling做的事情就是取出最大值,然后由这些值组成新的tensor,这样就可以达到缩小图片的效果
在这里插入图片描述
我们一般在做完卷积之后通常会搭配pooling,或者说我们一般会交替使用convolution和pooling
在这里插入图片描述
对于整个的CNN神经网络结果大概是下面这样,同时,在昨晚做完卷积之后,我们会加上几层的全连接层,经过softmax得到最终结果在这里插入图片描述

标签:卷积,深度,笔记,学习,pooling,图像,图片,我们,神经元
来源: https://blog.csdn.net/weixin_53598445/article/details/120462676