李宏毅机器学习第八周_卷积神经网络_CNN
本文介绍了卷积神经网络(CNN)在图像分类和下围棋等任务中的应用及相关知识点。图像分类是将图像分为不同类别的任务,通过训练一个机器学习模型,模型可以自动从图像数据中提取特征并进行分类。在CNN中,图像被表示为三维张量,通过卷积层、池化层和全连接层等操作,将图像转换为数字表示,用于分类或其他任务。在图像分类中,感受野和参数共享是CNN的重要概念,感受野指卷积层关注的输入图像区域大小,参数共享可以减少
目录
摘要
本文介绍了卷积神经网络(CNN)在图像分类和下围棋等任务中的应用及相关知识点。图像分类是将图像分为不同类别的任务,通过训练一个机器学习模型,模型可以自动从图像数据中提取特征并进行分类。在CNN中,图像被表示为三维张量,通过卷积层、池化层和全连接层等操作,将图像转换为数字表示,用于分类或其他任务。在图像分类中,感受野和参数共享是CNN的重要概念,感受野指卷积层关注的输入图像区域大小,参数共享可以减少模型中需要训练的参数数量。此外,池化层可以减少特征的空间大小,保留重要特征。在下围棋中,CNN可以通过学习大量的棋谱数据和人类下棋方式,预测每一步棋的最优解。尽管CNN在图像处理和计算机视觉任务中表现出色,但也存在对位置和尺度敏感、参数量较高、缺乏全局信息建模、数据需求量大和可解释性较差等缺点。
ABSTRACT
This article introduces the application of Convolutional Neural Networks (CNN) in tasks such as image classification and playing Go, along with related concepts. Image classification is the task of categorizing images into different classes, and CNN is a machine learning model that can automatically extract features from image data and perform classification. In CNN, images are represented as three-dimensional tensors, and through operations like convolutional layers, pooling layers, and fully connected layers, images are transformed into numerical representations for classification or other tasks. In image classification, receptive field and parameter sharing are important concepts in CNN. Receptive field refers to the size of the input image region that each neuron in a convolutional layer focuses on, and parameter sharing reduces the number of parameters that need to be trained in the model. Additionally, pooling layers can reduce the spatial size of features while retaining important information. In the context of playing Go, CNN can predict the optimal move at each step by learning from a large amount of game data and human players' strategies. Despite the strong performance of CNN in image processing and computer vision tasks, it has limitations such as sensitivity to position and scale, high parameter count, limited ability to model global information, large data requirements, and limited interpretability. However, researchers have been working on improving CNN and proposing various methods to overcome these limitations and enhance model performance and effectiveness.
卷积神经网络_CNN
Image Classfication
图像分类是指将图像分为不同的类别或标签的任务。通常,这是通过训练一个机器学习模型来完成的,该模型可以自动从图像数据中提取特征,并将其与已知的图像类别进行比较。在训练过程中,模型会不断地调整其参数,以最大程度地减少分类错误的数量。一旦模型训练完成,它就可以用来对新的未知图像进行分类,从而自动将其归类到正确的类别中。
假设图片输入的大小是100x100的猫,模型的目标是分类,把每一个分类表示成一维的向量,猫的值为1,其它的就是0,dimension的长度就代表现在的模型能够辨识出多少种类型的动物。模型的输出是辨识出对应动物的概率,理想的结果是Cross entropy越小越好。
如何把一张图片当做模型的输入?
在机器学习中,将一张图片作为模型的输入通常需要将其转换为数字表示。这个数字表示通常是一个向量或矩阵,其中包含了图像的像素值或特征。
一种常见的方法是使用卷积神经网络(CNN)来提取图像的特征。CNN是一种特殊的神经网络,它可以自动从图像中提取有用的特征。在CNN中,图像被表示为一个三维张量,其中第一维表示图像的高度,第二维表示图像的宽度,第三维表示图像的通道数(比如RGB图像有三个通道)。把这三维的张量拉直,就可以输入到一个神经网络中去。这个向量的每一维的数值就是某一个颜色的强度。
在CNN中,图像通过一系列卷积层、池化层和全连接层进行处理,最终得到一个向量表示。这个向量表示可以作为模型的输入,用来进行分类或其他任务。
除了CNN,还有其他一些方法可以将图像转换为数字表示,比如使用特征提取器或手工设计特征。无论使用哪种方法,将图像转换为数字表示都是图像分类任务中非常重要的一步。

考虑到图像的特性,不需要输入所有的值:
在Image Classfication中,找到一些特别重要的特征,这些特征代表了某种部件。例如,一张小鸟的图片,找到鸟的嘴巴、鸟的眼睛、鸟的爪子这些特征,综合起来就可以输出找到了一只鸟。

Simplification 1
在CNN中,设定一个区域叫做Receptive field,每一个neural只关注Receptive field所输入的值,多个neural可以处理同一个Receptive field。
在机器学习中,Receptive field(感受野)是指卷积神经网络(CNN)中每个神经元所关注的输入图像区域大小。感受野的大小取决于卷积层的大小和步长,通常随着网络层数的增加而增加。
具体来说,CNN中的每个神经元只连接到输入图像的一部分区域,这个区域被称为神经元的感受野。感受野的大小由卷积层的大小(kernel size)和步长(stride)决定。例如,如果卷积层的大小为3x3,步长为2,则每个神经元的感受野大小为3x3。当卷积层数增加时,每个神经元的感受野也会随之增加。如果超出了图像的范围的话(overlap),可以做补0(padding),也可以补整张图的平均值。

理解感受野的大小对于设计和调整CNN模型非常重要。通过调整卷积层的大小和步长,可以控制感受野的大小,从而影响模型的性能和准确性。此外,理解感受野的大小还可以帮助我们理解CNN模型如何自动从图像中提取特征,从而实现图像分类等任务。
Simplification 2
同样的特征可能出现在图片的不同区域里面,例如鸟的嘴巴可能出现在图片的左上方,也可能出现在图片的中间位置。但是它们一定会在Receptive field中,会被侦测到。那么这些侦测鸟的嘴巴的neural做的事情都是一样的,范围不一样的,可以让不同的Receptive field的neural共享参数吗?
在机器学习中,共享参数是一种常见的简化方法,用于减少模型中需要训练的参数数量。在图像分类任务中,卷积神经网络(CNN)是一种常见的模型,其中共享参数被广泛应用。
具体来说,CNN中的卷积层可以看作是一组滤波器,每个滤波器都对输入图像进行卷积运算,从而提取不同的特征。在传统的卷积层中,每个滤波器都有自己的参数集,需要独立地训练。这意味着每个滤波器都需要大量的训练数据来学习自己的参数,从而导致模型非常庞大,难以训练和处理。
为了解决这个问题,可以使用共享参数的方法。具体来说,可以让多个滤波器共享相同的参数集(filter),这样就可以大大减少模型中需要训练的参数数量。在训练过程中,这些共享参数会同时更新,从而使得每个滤波器都能够受益于整个数据集的信息。

Simplification 3
池化(Pooling)是卷积神经网络中的一种常见操作,它通常在连续的卷积层之间进行,用于减少特征的空间大小,同时保留最重要的特征。这具有以下几个特点:
-
降低维度:池化可以显著减少网络的参数数量,降低计算复杂度,同时也可以帮助防止过拟合。比如,如果我们有一个 4×4 的特征图,应用了一个 2×2 的最大池化,我们就会得到一个 2×2 的输出。
-
保持特征的空间信息:尽管池化操作会降低特征的分辨率,但它保持了特征的空间布局,使我们仍然可以从中获取空间的相对位置信息。
-
提升模型的空间鲁棒性:池化通过缩小特征尺寸的同时保留其主要特性,加强了模型对小的空间位移的鲁棒性。
主要有两种常见的池化技术:最大池化(Max Pooling)和平均池化(Average Pooling)。
-
最大池化:在每个池化窗口中,选择具有最大值的像素作为输出。它的主要思想是只保留最显著的特征,并且丢弃其他非最大的部分。
-
平均池化:在每个池化窗口中,计算所有像素的平均值作为输出。它的主要目的是减小输入的大小,同时保持所有特征的平均信息。
池化层的选择(最大池化、平均池化或其他类型)在很大程度上取决于特定的应用需求和数据特性。在实践中,最大池化层经常用于视觉神经网络,因为它能有效地保留明显特征而忽略部分较小或不显著的特征。
什么是CNN(卷积神经网络)?
Receptive field加上Parameter sharing就是Convolutional layer,有用convolutional layer的神经网络就是CNN(卷积神经网络)。
Convolutional layer卷积层是深度学习中的一种常见层类型,主要用于图像处理和计算机视觉任务中。卷积层的主要作用是从输入图像中提取特征,从而实现图像分类、目标检测等任务。卷积层里面有很多的filter,每一个filter是一个3x3xchannel的tensor,filter的作用是抓取图片中的特征。
filter滤波器是一个小型的矩阵,通常包含一些预先设定的权重。在卷积过程中,滤波器会在图片上滑动,对覆盖的区域进行点积运算。这个过程可以看作是滤波器和其覆盖的图片区域之间的相似度计算:如果该区域的模式与滤波器的模式相似,那么运算结果会很大;反之,如果不相似,那么结果会很小。
每个滤波器对输入进行卷积运算后得到的结果矩阵就是一个特征图(Feature Map)。特征图捕获了输入数据的某种局部特征。
整的CNN架构是经过多次的Convolution+Pooling,最后将pooling的结果Flatten(拉直)为一个向量,最后将这个向量经过Fully Connected Layers(可能还要经过softmax)就可以得到影像辨识的结果。

Playing Go
CNN(卷积神经网络)在下围棋上的应用非常广泛。CNN可以通过学习大量的棋谱数据和人类棋手的下棋方式,来预测每一步棋的最优解。下围棋其实就是一个分类的问题,输入是棋盘上黑子和白字的位置,输出是下一步应该要走的位置。在下围棋的过程中,CNN可以通过卷积操作来提取棋盘上的特征,例如棋子的位置、颜色、形状等等。然后,通过多层神经网络的计算,CNN可以输出每一步棋的胜率和最优解。
为什么解决下围棋的问题用CNN的效果比用fully-connected network的效果更好?
棋盘可以看做一张图片,解析度为19x19的图片(很小),每一个像素代表了可以落子的位置,棋盘上的每个位置用48个数字来描述那个位置发生了什么,下围棋运用CNN时没有使用pooling。
-
CNN具有局部感知能力,可以捕捉图像中的局部模式和特征,而围棋棋盘是一个二维结构,每个位置的状态与周围位置相关,因此CNN更适合处理围棋的局部结构。
-
CNN使用参数共享,减少了模型的参数量,提高了训练效率和泛化能力。在下围棋问题中,参数共享可以更好地利用棋盘上相似位置的信息,提升模型的理解能力。
-
CNN具有平移不变性,即对输入的平移操作不会改变网络的输出。在处理围棋棋局时,CNN可以忽略棋局的绝对位置,更关注棋局的局部结构和相对关系。
CNN的缺点:
对位置和尺度的敏感性:传统的CNN对于输入的位置和尺度变化相当敏感。这意味着如果目标在图像中移动、缩放、旋转,模型可能无法正确识别它。虽然一些改进的CNN结构,如空洞卷积(dilated convolution)和多尺度卷积(multi-scale convolution),可以部分缓解这个问题,但仍然存在一定的限制。所以在做影像辨识的时候,往往都需要做data augmentation,把训练资料放大、缩小、旋转。
总结:
卷积神经网络(CNN)在图像分类和下围棋等任务中被广泛应用。CNN通过卷积、池化和全连接等操作将图像转换为数字表示,用于分类和预测。在下围棋中,CNN可以提取棋盘特征,并计算最优解。然而,CNN对位置和尺度敏感,可以通过改进结构和数据增强来缓解这个问题。总的来说,CNN在图像分类和下围棋等任务中有重要价值,但需要根据具体情况选择合适的网络结构和技术手段。
更多推荐


所有评论(0)