【23-24 秋学期】NNDL 作业7 基于CNN的XO识别

一、用自己的语言解释以下概念

局部感知、权值共享

局部感知是只连接相邻层的部分神经元。若每一层神经元之间使用全连接(Fully-

Connected)的结构,在数据量较大时,训练速度会非常的慢,需要较大的计算内存。图像局部范围内的像素有较高的关联性,随着距离的加长,像素的信息相关性会降低,因此在

经元时,不需要同时输入全局信息给单个神经元,只需要感知图像的局部信息,随着层数的增加深层的神经元会拥有广阔的感受野,使得模型能准确表征图像的全局信息。

权值共享的设计思路来源于生物学科中的神经网络结构。主要思想是在一张图像中对不同

的感受野(Receptive Field)使用相同的权值参数进行卷积运算,即实现参数共享,其中感受野是指 CNN 的输出特征图的像素点映射在原始图像上的范围大小。权值共享既降低了模型的复杂度又减少了模型的权值参数量,解决了多层感知机中随着神经元变多而导致训练时间变长的问题。

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第1张图片

  • 不进行parameter sharing

如果不用parameter sharing实现上图的运算,卷积核结构就会变成下图所示

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第2张图片

  • 不进行local connectivity

如果不用局部连接,那当然就是全连接网络了(fully connect)即每个元素单元与隐层的神经原进行全连接,网络结构如下所示。

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第3张图片

 【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第4张图片 

这几张图片描述的都是一个东西,但是有的大有的小,有的靠左边,有的靠右边,有的位置不同,但是我们构建的网络识别这些东西的时候应该是同一结果。为了能够达到这个目的,我们可以让图片的不同位置具有相同的权重(权值共享),也就是上面所有的图片,我们只需要在训练集中放一张,我们的神经网络就可以识别出上面所有的,这也是权值共享的好处。

 池化(子采样、降采样、汇聚)。会带来那些好处和坏处

池化是深度学习中常用的一种操作,它通常用于减小特征图的尺寸、降低计算量和参数数量,同时也有助于增强模型对平移、旋转和缩放等变换的鲁棒性。池化操作有如下优缺点:

优点:

  1. 减小计算量:池化可以减小特征图的尺寸,从而减少后续神经网络层的计算量和参数数量,加快模型的训练和推理速度。
  2. 增强平移不变性:通过对局部特征进行汇总,池化可以增强模型对平移不变性,使得模型对目标在图像中的位置变化更加鲁棒。
  3. 降低过拟合风险:池化可以减小特征图的尺寸,有助于减少模型的复杂度,降低过拟合的风险。

缺点:

  1. 信息损失:池化操作会丢失部分原始特征图的信息,可能导致模型在一定程度上丧失对细节的感知能力。
  2. 引入伪像素:在最大池化等操作中,会引入伪像素,即某些被池化的区域中并没有有用信息,但仍然参与了特征提取,这可能影响模型的表征能力。
  3. 尺度选择困难:池化操作会改变特征图的尺度,选择合适的池化尺寸可能需要一定的经验和调参工作。

全卷积网络 【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第5张图片 

在全连接层中所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类为四分类问题,所以卷积神经网络的输出层就会有四个神经元。

 低级特征、中级特征、高级特征

  1. 低级特征: 低级特征通常指图像中的边缘、角点、纹理等局部信息,这些信息通常由图像的像素点直接计算得到。低级特征可以通过简单的图像处理算法(如Sobel算子、Laplacian算子)或浅层卷积神经网络提取得到。低级特征对应于图像的细微结构,包含了关于图像局部的基本信息。

  2. 中级特征: 中级特征是在低级特征的基础上进行组合和抽象得到的特征表示,它通常涉及到更大范围的像素区域,具有一定的不变性和抽象性。比如,线段、角、轮廓等可以被认为是中级特征。在深度学习中,中级特征可以由卷积神经网络的中间层提取得到,这些特征能够代表图像中的一些复杂纹理和形状信息。

  3. 高级特征: 高级特征是对图像语义信息的抽象表示,它捕获了图像中的语义概念和物体类别等高级信息。在深度学习中,高级特征通常由网络的后几层提取得到,这些特征可以用于实现图像分类、目标检测、图像分割等任务。高级特征有助于描述图像中的整体结构和语义内容,而不仅仅局限于局部的纹理和边缘信息。

这三种层次的特征表示相互衔接,从低级特征到高级特征的逐渐提取过程也反映了图像信息从细节到语义的逐步抽象过程。在实际应用中,这些不同层次的特征表示通常会结合使用,以实现对图像信息更全面、更深层次的理解和表达。

 多通道。N输入,M输出是如何实现的?

当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积核,以便与输入数据进行互相关运算。假设输入的通道数为c,那么卷积核的输入通道数也需要为c。如果卷积核的窗口形状是wℎ×wk,那么当c=1时,我们可以把卷积核看作形状为wℎ×wk的二维张量。

到目前为止,不论有多少输入通道,我们还只有一个输出通道。然而,正如我们在所讨论的,每一层有多个输出通道是至关重要的。在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。直观地说,我们可以将每个通道看作对不同特征的响应。而现实可能更为复杂一些,因为每个通道不是独立学习的,而是为了共同使用而优化的。因此,多输出通道并不仅是学习多个单通道的检测器。

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第6张图片

1×1的卷积核有什么作用

看起来似乎没有多大意义。 毕竟,卷积的本质是有效提取相邻像素间的相关特征,而1×1卷积显然没有此作用。 尽管如此,1×1仍然十分流行,经常包含在复杂深层网络的设计中。下面,让我们详细地解读一下它的实际作用。

因为使用了最小窗口,1×1卷积失去了卷积层的特有能力——在高度和宽度维度上,识别相邻元素间相互作用的能力。 其实1×1卷积的唯一计算发生在通道上。

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第7张图片

二、使用CNN进行XO识别
 1.复现参考资料中的代码

2.重新设计网络结构

至少增加一个卷积层,卷积层达到三层以上

准确率加下降到百分之五十,因此增加轮数

当训练轮数增多时,模型有机会更好地学习数据的特征和模式,从而提高性能。这通常是因为:

  1. 更多的迭代次数: 更多的训练轮数意味着模型能够在整个数据集上进行更多次的参数更新。这有助于模型更好地收敛到最优解。

  2. 降低过拟合的风险: 在一定程度上,增加训练轮数可以帮助模型更好地泛化到未见过的数据,因为模型有更多机会学习数据中的一般模式,而不是仅仅记住训练数据的特定实例。

  3. 学习更复杂的模式: 一些复杂的模式可能需要更多的训练时间才能被模型学到。随着训练轮数的增多,模型有机会探索更复杂的模式和关联,从而提高性能。

去掉池化层,对比“有无池化”的效果

准确率无变换但速率变慢

池化层在深度学习中通常被用来减小特征图的尺寸,降低计算复杂度,并提取更显著的特征。没有进行池化操作可能导致速度下降的原因包括:

  1. 特征图尺寸较大:如果不进行池化操作,特征图的尺寸会保持较大,这将增加后续层的计算量。特别是对于全连接层,输入的特征维度较高会导致参数规模较大,从而影响计算速度。

  2. 过多的卷积层:如果网络中包含多个连续的卷积层而没有池化层,特征图的尺寸可能会持续增加,导致后续层需要处理更大的特征图,增加计算负担。

  3. 内存和计算资源限制:在一些硬件设备上,如GPU或CPU,大尺寸的特征图需要更多的内存和计算资源来处理,这可能导致速度下降。

修改“通道数”等超参数,观察变化

通道数为一时候准确率为50%,通道数为20时准确率99%,通道数为50时准确率为50

通道数的改变会对神经网络的表示能力和计算复杂度产生影响。

  1. 表示能力:通道数的增加可以提高网络的表示能力,使网络能够学习到更加丰富和复杂的特征。每个通道可以看作是对数据的一种特定抽象表示,因此更多的通道意味着网络可以学习到更多不同层次、不同角度的特征信息。

  2. 计算复杂度:通道数的增加会导致网络的计算复杂度增加。这是因为每个通道都需要进行卷积操作、激活函数处理等,因此通道数的增加会导致模型的参数数量和计算量增加。

另外,通道数的改变还可能会影响到网络训练的速度和稳定性。通道数过大可能会导致过拟合,通道数过小可能会导致欠拟合,因此需要根据具体任务和数据集来合理地设置通道数。

3.可视化

选择自己的最优模型
可视化部分卷积核和特征图
探索低级特征、中级特征、高级特征 

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第8张图片

【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第9张图片【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第10张图片【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第11张图片【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第12张图片【23-24 秋学期】NNDL 作业7 基于CNN的XO识别_第13张图片

图太多不放了

使用框架进行卷积池化操作,体会到了卷积主要是提取特征,而池化主要偏向于降维,理解卷积过程中的卷积核由来、特征图由来以及卷积核参数的设置。发现不同的卷积核提取的主要特征不同。太久没写了写一半没保存感冒也没好,状态还需要调整,听歌写才撑着写完。

你可能感兴趣的:(cnn,人工智能,神经网络)