卷积神经网络是如何工作的?
什么是卷积神经网络?
卷积神经网络是一种前馈神经网络,其人工神经元可以对局部覆盖区域内的周围单元做出响应,对于大规模图像处理具有优异的性能。卷积神经网络由一个或多个卷积层和一个顶部全连接层,以及相关的权重和池化层组成。这种结构使卷积神经网络能够利用输入数据的二维结构。与其他深度学习架构相比,卷积神经网络在图像和语音识别方面可以给出更好的结果。该模型也可以使用反向传播算法进行训练。与其他深度前馈神经网络相比,卷积神经网络需要考虑的参数更少,这使它们成为一种有吸引力的深度学习架构。
卷积神经网络在图像识别方面具有强大的功能,许多图像识别模型也基于CNN架构进行了扩展。另外值得一提的是,CNN模型是参照人脑视觉组织建立的深度学习模型。学习CNN可以帮助我学习其他深度学习模型。
特点:
CNN比较图像的各个部分,这些部分被称为特征。通过比较相似位置的粗略特征,cnn可以更好地区分图像是否相同,而不是比较整个图像。图像中的每个特征就像一个更小的图像,即一个更小的二维矩阵,这些特征捕获图像中的常见元素。
卷积:
每当CNN解析一个新图像时,在不知道上述特征在哪里的情况下,CNN就会比较图像中的任何位置。为了计算整个图像中有多少匹配特征,我们在这里创建了一个过滤机制。这种机制背后的数学原理被称为卷积,这就是CNN这个名字的由来。
卷积的基本原理是计算特征与图像部分的符合程度,如果将两者的每个像素的值相乘,然后将总和除以像素的个数。如果两幅图像的每个像素都匹配,将这些乘积相加并除以像素数得到1。相反,如果两个像素完全不同,则会得到-1。通过重复上述过程,总结图像中各种可能的特征,就可以完成卷积。根据每个卷积的值和位置,构造一个新的二维矩阵。这是经过特征过滤的原始图像,它可以告诉我们在原始图像中哪里可以找到特征。值越接近1的部分越符合特征,值越接近-1,差异越大;对于值接近0的部分,几乎没有相似之处。下一步是将相同的方法应用于不同的特征,以及图像不同部分的卷积。最后,我们将得到一组经过过滤的原始图像,每个图像对应一个特征。 Simply think of the entire convolution operation as a single processing step. In the operation of CNNs, this step is called a convolutional layer, which means that there are more layers to follow.
CNN的工作原理是计算量大的。虽然我们可以在一张纸上解释CNN是如何工作的,但加法、乘法和除法的数量在整个过程中会迅速增加。有如此多的因素影响计算量,CNN处理的问题可以变得非常复杂,这也难怪一些芯片制造商正在为CNN的计算需求设计和制造专门的芯片。
池:
池化是一种压缩图像和保留重要信息的方法。它的工作原理只需要数学的第二学位就能理解。池化将在图像上选择不同的窗口,并在该窗口范围内选择一个最大值。实际上,边长为2或3的正方形是两像素步幅的理想设置。
原始图像被池化后,它所包含的像素数量会减少到原始图像的四分之一,但由于池化后的图像包含了原始图像中每个范围的最大值,所以它仍然保留了每个范围和每个范围。特征的整合程度。汇总的信息更关注图像中是否有匹配的特征,而不是这些特征在图像中存在的位置。可以帮助CNN确定一个特征是否包含在图像中,而不必被特征的位置分散注意力。
池化层的功能是将一张或几张图片池化为更小的图片。我们最终得到的图像具有相同数量的像素,但像素更少。有助于改进刚才提到的计算开销大的问题。预先将800万像素的图像降低到200万像素可以使后续工作更容易。
线性整流单元:
CNN中的一个重要步骤是校正线性单元(ReLU),它在数学上将图像上的所有负数转换为0。这个技巧可以防止cnn接近0或无穷大。线性校正后的结果将与原始图像具有相同的像素数,只是所有的负值将被替换为零。
深度学习:
原始图像经过过滤、校正、合并后,会变成包含特征信息的一组更小的图像。然后,这些图像可以再次过滤和压缩,它们的特征将随着每次处理而变得更加复杂,图像将变得更小。最后,较低级的处理层包含简单的特征,如角或光点。高阶处理层包含更复杂的特征,例如形状或图案,这些高阶特征通常很容易识别。
全连接层:
全连接层会在一个高级别上收集过滤后的图片,并将这些特征信息转换为投票。在传统的神经网络架构中,全连接层的作用是主要的初级构建块。当我们将图像输入到这个单元时,它将所有像素值视为一维列表,而不是之前的二维矩阵。列表中的每个值决定了图片中的符号是圆还是叉。由于一些值更擅长区分分叉,而另一些值更擅长区分圆圈,这些值会比其他值得到更多的选票。所有值对不同选项的投票数将以权重或连接强度表示。因此,每当CNN判断一个新图像时,该图像在到达全连接层之前会经过许多较低的层。投票后,得票最多的选项将成为此图像的类别。
与其他层一样,可以组合多个完全连接的层,因为它们的输入(列表)和输出(投票)采用类似的形式。在实践中,可以将多个完全连接的层组合在一起,其中几个层上出现几个虚拟的、隐藏的投票选项。只要增加一个全连接层,整个神经网络就可以学习更复杂的特征组合,做出更准确的判断。
反向传播:
反向传播的机器学习技巧可以帮助我们确定权重。要使用反向传播,需要准备一些已经有答案的图片,然后必须准备一个未经训练的CNN,其中任何像素、特征、权重和全连接层的值都是随机确定的。你可以用带标签的图像训练这个CNN。
经过CNN的处理,每张图片最终都会有一轮选举来决定类别。与之前标记的正解相比,是识别误差。通过调整特征和权重,减小了选举产生的误差。在每次调整之后,这些特征和权重都被微调得更高或更低,然后重新计算误差,并保留成功减少误差的调整。所以,当我们调整卷积层中的每个像素和全连接层中的每个权重时,我们可以得到一组权重,它们在判断当前图像时稍微更好。然后重复上述步骤以识别更多的标记图像。在训练过程中,单个图片中的错误判断会过去,但这些图片中的共同特征和权重仍然存在。如果有足够多的标记图像,这些特征和权重的值最终会接近一个稳定的状态,能够很好地识别大多数图像。但是反向传播也是一个计算量非常大的步骤。
Hyperparameters:
- 每个卷积层应该有多少个特征?每个特征应该有多少像素?
- 每个池化层的窗口大小是多少?间隔时间应该是多长?
- 每个额外的全连接层应该有多少隐藏的神经元(选项)?
除了这些问题之外,我们还需要考虑许多高级结构问题,例如CNN中应该有多少处理层以及按什么顺序。一些深度神经网络可能包括数千个处理层,并且有许多设计可能性。有了这么多的排列,我们只能测试CNN设置的一小部分。因此,CNN的设计通常会随着机器学习社区积累的知识而发展,偶尔会有一些意想不到的性能改进。此外,许多改进技术已经过测试并被发现是有效的,例如使用新的处理层或以更复杂的方式连接不同的处理层。