神经网络之模块化视角(一)
介绍
在过去几年中,深度神经网络已经导致各种模式识别问题的突破性结果,例如计算机视觉和语音识别。导致这些结果的基本组成部分之一是一种称为卷积神经网络的特殊神经网络。
在最基本的情况下,卷积神经网络可以被认为是一种使用相同神经元的许多相同拷贝的神经网络。这允许网络拥有大量神经元并表达计算大型模型,同时保持实际参数的数量 - 描述神经元行为方式的值 - 需要相当小的学习。
这种具有相同神经元的多个拷贝的技巧大致类似于数学和计算机科学中的函数的抽象。编程时,我们编写一个函数并在很多地方使用它 - 不是在不同的地方编写相同的代码一百次使编程更快,并导致更少的错误。类似地,卷积神经网络可以学习一次神经元并在许多地方使用它,这使得学习模型和减少错误变得更容易。
卷积神经网络的结构
假设您希望神经网络查看音频样本并预测人类是否在说话。如果有人说话,也许你想做更多的分析。
您可以在不同的时间点获得音频样本。样品间隔均匀。
尝试使用神经网络对它们进行分类的最简单方法是将它们全部连接到完全连接的层。有许多不同的神经元,每个输入连接到每个神经元。
更复杂的方法注意到在数据中查找的属性中的一种对称性。我们非常关心数据的本地属性:在给定时间内有多少声音?它们是增加还是减少?等等。
我们关注所有时间点的相同属性。知道开始时的频率很有用,知道中间的频率很有用,最后知道频率也很有用。再次注意,这些是本地属性,因为我们只需要查看音频样本的小窗口以确定它们。
所以,我们可以创建一组神经元,A,查看我们数据的小时段。2 A.查看所有这些细分,计算某些功能。然后,将该卷积层的输出馈送到完全连接的层F中。
在上面的例子中,A只查看由两点组成的段,这是不现实的。通常,卷积层的窗口会大得多。
在以下示例中,A看看,这也不现实 - 遗憾的是,想象A是很棘手的 连接到很多点。
卷积层的一个非常好的特性是它们是可组合的。您可以将一个卷积层的输出提供给另一个卷积层。通过每个层,网络可以检测更高级别,更抽象的功能。
在下面的例子中,我们有一组新的神经元,B。乙 用于创建堆叠在前一个卷顶层上的另一个卷积层。
卷积层通常与池化层交织在一起。特别是,有一种称为最大池层的层非常受欢迎。
通常,从高层次的角度来看,我们并不关心特征存在的精确时间点。如果频率的变化稍早或稍后发生,那么重要吗?
最大池层在前一层的小块上占用最多的特征。输出告诉我们前一层的区域中是否存在某个要素,但不是精确位置。
最大池层有点“缩小”。它们允许后来的卷积层处理更大的数据部分,因为池化层之后的小补丁对应于之前更大的补丁。它们还使我们对一些非常小的数据转换不变。
在我们之前的例子中,我们使用了1维卷积层。但是,卷积层也可以处理更高维数据。实际上,卷积神经网络最着名的成功是应用2D卷积神经网络来识别图像。
在二维卷积层中,而不是看段,A 现在看看补丁。
对于每个补丁,A将计算功能。例如,它可能学习检测边缘的存在。或者它可能学会检测纹理。或者两种颜色之间的对比。
在前面的例子中,我们将卷积层的输出馈送到完全连接的层。但我们也可以组成两个卷积层,就像我们在一维情况下所做的那样。
我们还可以在两个维度上进行最大池化。在这里,我们在一个小补丁上采用了最多的功能。
这真正归结为,在考虑整个图像时,我们不关心边缘的精确位置,直到像素。它足以在几个像素内知道它的位置。
有时也使用三维卷积网络,用于诸如视频或体积数据(例如,3D医学扫描)之类的数据。但是,它们的使用并不是很广泛,而且难以想象。
现在,我们先前说过A是一群神经元。我们应该更准确一点:A是什么 究竟?
在传统的卷积层中,A 是一堆并行的神经元,它们都获得相同的输入并计算不同的特征。
例如,在二维卷积层中,一个神经元可能检测到水平边缘,另一个神经元可能检测到垂直边缘,另一个可能检测到绿色 - 红色对比度。
也就是说,在最近的论文“网络中的网络”中,提出了一个新的“Mlpconv”层。在这个模型中,A将有多层神经元,最后一层输出该区域的更高级别的特征。在本文中,该模型取得了一些非常令人印象深刻的结果,为许多基准数据集设定了新的技术水平。
也就是说,就本文而言,我们将重点关注标准卷积层。我们已经足够考虑那里了!
我很佩服你的计算方法的优雅; 在真正数学的马匹上穿越这些领域一定很好,而我们这样的人必须徒劳无功地走上这条路。- 艾尔伯特爱因斯坦
神经网络之模块化视角(二)
注:本文系翻译