卷积神经网络 (CNN) 初学者指南
已发表: 2021-07-05在过去的十年中,人工智能和更智能的机器取得了巨大的增长。 该领域产生了许多专门研究人类智能不同方面的子学科。 例如,自然语言处理试图理解和建模人类语音,而计算机视觉旨在为机器提供类似人类的视觉。
由于我们将讨论卷积神经网络,因此我们的重点将主要放在计算机视觉上。 计算机视觉旨在使机器能够像我们一样看待世界,并解决与图像识别、图像分类等相关的问题。 卷积神经网络用于实现计算机视觉的各种任务。 它们也被称为 CNN 或 ConvNet,它们遵循类似于人类大脑中神经元的模式和连接的架构,并受到大脑中发生的各种生物过程的启发,以使交流发生。
目录
卷积神经网络的生物学意义
CNN 的灵感来自我们的视觉皮层。 它是大脑皮层的区域,参与我们大脑的视觉处理。 视觉皮层具有对视觉刺激敏感的各种小细胞区域。
这个想法在 1962 年由 Hubel 和 Wiesel 在一项实验中得到扩展,发现不同的不同神经元细胞对特定方向的不同边缘的存在做出反应(被激发)。 例如,一些神经元会在检测水平边缘时触发,其他神经元会在检测对角边缘时触发,而其他一些神经元会在检测到垂直边缘时触发。 通过这个实验。 Hubel 和 Wiesel 发现神经元以模块化的方式组织起来,所有的模块一起产生视觉感知。
这种模块化方法——系统内的专用组件具有特定任务的想法——是构成 CNN 的基础。
解决了这个问题,让我们继续讨论 CNN 如何学习感知视觉输入。
卷积神经网络学习
图像由单个像素组成,这是数字 0 到 255 之间的表示。因此,您看到的任何图像都可以通过使用这些数字转换为适当的数字表示——这也是计算机处理图像的方式。
以下是使 CNN 学习图像检测或分类的一些主要操作。 这将使您了解学习是如何在 CNN 中进行的。
1.卷积
卷积在数学上可以理解为两个不同函数的组合积分,以找出不同函数的影响或如何相互修改。 以下是如何用数学术语定义它:
卷积的目的是检测图像中不同的视觉特征,如线条、边缘、颜色、阴影等。 这是一个非常有用的属性,因为一旦你的 CNN 了解了图像中特定特征的特征,它就可以在图像的任何其他部分识别该特征。
CNN 利用内核或过滤器来检测任何图像中存在的不同特征。 内核只是经过训练以检测特定特征的不同值的矩阵(在人工神经网络世界中称为权重)。 过滤器在整个图像上移动以检查是否检测到任何特征的存在。 过滤器执行卷积操作以提供最终值,该值表示存在特定特征的可信度。
如果图像中存在特征,则卷积运算的结果是具有高值的正数。 如果该特征不存在,则卷积运算会产生 0 或非常低值的数字。
让我们通过一个例子更好地理解这一点。 在下图中,已经训练了一个过滤器来检测加号。 然后,过滤器通过原始图像。 由于原始图像的一部分包含训练过滤器的相同特征,因此存在特征的每个单元格中的值都是正数。 同样,卷积运算的结果也会产生很大的数。
但是,当相同的过滤器通过具有不同特征和边缘集的图像时,卷积运算的输出会更低——这意味着图像中没有任何明显的加号存在。
因此,对于具有曲线、边缘、颜色等各种特征的复杂图像,我们需要 N 个这样的特征检测器。
当这个过滤器通过图像时,会生成一个特征图,它基本上是输出矩阵,用于存储这个过滤器在图像不同部分的卷积。 在许多过滤器的情况下,我们最终会得到一个 3D 输出。 此过滤器应具有与输入图像相同数量的通道,以便进行卷积操作。
此外,可以使用步幅值以不同的间隔在输入图像上滑动过滤器。 步幅值告知过滤器应该在每一步移动多少。
因此,可以使用以下公式确定给定卷积块的输出层数:
2.填充
使用卷积层时的一个问题是,一些像素往往会在原始图像的周边丢失。 由于通常使用的过滤器很小,每个过滤器丢失的像素可能很少,但是当我们应用不同的卷积层时,这会累加起来,导致很多像素丢失。
填充的概念是在 CNN 的过滤器处理图像时向图像添加额外的像素。 这是在图像处理中帮助过滤器的一种解决方案——通过用零填充图像来为内核提供更多空间来覆盖整个图像。 通过向过滤器添加零填充,CNN 的图像处理更加准确和准确。
检查上面的图像——通过在输入图像的边界添加额外的零来完成填充。 这可以在不丢失任何像素的情况下捕获所有不同的特征。
3.激活图
特征图需要通过本质上是非线性的映射函数。 特征图包含一个偏置项,然后通过非线性的激活(ReLu)函数。 该功能旨在为 CNN 带来一定程度的非线性,因为被检测和检查的图像本质上也是非线性的,由不同的对象组成。
4. 池化阶段
一旦激活阶段结束,我们将继续进行池化步骤,其中 CNN 对卷积特征进行下采样,这有助于节省处理时间。 这也有助于减少图像的整体大小、过度拟合以及在卷积神经网络被输入大量信息时可能出现的其他问题——尤其是当这些信息与图像的分类或检测不太相关时。
池化基本上有两种类型——最大池化和最小池化。 在前者中,根据设定的步幅值在图像上传递一个窗口,并且在每个步骤中,将窗口中包含的最大值汇集到输出矩阵中。 在 min pooling 中,最小值汇集在输出矩阵中。
作为输出结果形成的新矩阵称为池化特征图。
在最小和最大池中,最大池的一个好处是它允许 CNN 专注于少数具有高值的神经元,而不是专注于所有神经元。 这种方法使得过度拟合训练数据的可能性很小,并使整体预测和泛化顺利进行。
5. 展平
池化完成后,图像的 3D 表示现在已转换为特征向量。 然后将其传递给多层感知器以产生输出。 查看下图以更好地理解展平操作:
如您所见,矩阵的行被连接成一个特征向量。 如果存在多个输入层,则连接所有行以形成更长的扁平特征向量。
6. 全连接层(FCL)
在这一步中,扁平化的地图被馈送到神经网络。 神经网络的完整连接包括输入层、FCL 和最终输出层。 全连接层可以理解为人工神经网络中的隐藏层,除了与隐藏层不同的是,这些层是全连接的。 信息通过整个网络,计算出一个预测误差。 然后,此错误作为反馈(反向传播)通过系统发送,以调整权重并改进最终输出,使其更准确。
从上述神经网络层获得的最终输出通常不会加起来为 1。 这些输出需要降低到 [0,1] 范围内的数字——然后将代表每个类别的概率。 为此,使用了 Softmax 函数。
从密集层获得的输出被馈送到 Softmax 激活函数。 通过这种方式,所有最终输出都映射到一个向量,其中所有元素的总和为 1。
全连接层的工作原理是查看前一层的输出,然后确定与特定类最相关的特征。 因此,如果程序预测图像中是否包含猫,它将在代表四条腿、爪子、尾巴等特征的激活图中具有较高的值。 同样,如果程序正在预测其他内容,它将具有不同类型的激活图。 全连接层负责处理与特定类和权重密切相关的不同特征,以便权重与前一层之间的计算是准确的,并且您可以获得不同输出类的正确概率。
CNN 工作的快速总结
以下是 CNN 如何工作并帮助计算机视觉的整个过程的快速总结:
- 图像中的不同像素被馈送到卷积层,在那里执行卷积操作。
- 上一步生成卷积映射。
- 这个映射通过一个整流函数来产生一个整流映射。
- 使用不同的卷积和激活函数对图像进行处理,以定位和检测不同的特征。
- 池化层用于识别图像的特定、不同部分。
- 池化层被展平并用作全连接层的输入。
- 全连接层计算概率并给出[0,1]范围内的输出。
综上所述
CNN 的内部功能非常令人兴奋,为创新和创造打开了很多可能性。 同样,人工智能下的其他技术也很吸引人,并试图在人类能力和机器智能之间发挥作用。 因此,来自世界各地的人们,属于不同的领域,正在意识到他们对这个领域的兴趣,并且正在迈出第一步。
幸运的是,人工智能行业非常受欢迎,并且不会根据你的学术背景来区分。 您所需要的只是技术知识和基本资格,一切就绪!
如果您想掌握 ML 和 AI 的精髓,理想的做法是参加专业的 AI/ML 计划。 例如,我们的机器学习和人工智能执行计划是数据科学有志者的完美课程。 该计划涵盖统计和探索性数据分析、机器学习和自然语言处理等主题。 此外,它还包括超过 13 个行业项目、25 个以上的现场会议和 6 个顶点项目。 本课程最好的部分是您可以与来自世界各地的同龄人互动。 它促进思想交流,并帮助学习者与来自不同背景的人建立持久的联系。 我们的 360 度职业帮助正是您在 ML 和 AI 之旅中脱颖而出所需要的!