了解卷积神经网络
卷积神经网络 (ConvNet) 是深度学习中广泛使用的工具。它们特别适用于作为输入的图像,但它们也适用于其他应用情形,如文本、信号和其他连续响应。卷积神经网络在几个方面不同于其他类型的神经网络:
卷积神经网络的灵感来自视觉皮层的生物结构,视觉皮层包含简单和复杂的细胞排列 [1]。人们发现这些细胞基于视野的子区域而激活。这些子区域称为感受野。受这项研究发现的启发,卷积层中的神经元连接到该层之前各层的子区域,而不是像其他类型的神经网络那样进行全连接。神经元对图像中这些子区域之外的区域没有响应。
这些子区域可能重叠,因此 ConvNet 的神经元会产生在空间上相关的结果,而在其他类型的神经网络中,神经元不共享任何连接并产生独立的结果。
此外,在具有全连接神经元的神经网络中,参数(权重)的数量可能随着输入大小的增加而快速增加。卷积神经网络通过减少连接数量、共享权重和下采样来减少参数个数。
一个 ConvNet 由多个层组成,例如卷积层、最大池化层或平均池化层以及全连接层。
ConvNet 的每层中的神经元以三维方式排列,从而将三维输入变换为三维输出。例如,对于图像输入,第一层(输入层)将图像保留为三维输入,维度分别为图像的高度、宽度和颜色通道。第一个卷积层中的神经元连接到这些图像的区域,并将它们变换为一个三维输出。每层中的隐藏单元(神经元)学习原始输入的非线性组合,这称为特征提取 [2]。这些从一个层学习到的特征(也称为激活)成为下一个层的输入。最后,学习到的特征成为网络末尾的分类器或回归函数的输入。
根据所包含的层的类型和数量,ConvNet 的架构可能有所不同。包含的层的类型和数量取决于特定的应用或数据。只包含一个或两个卷积层的较小网络可能足以学习少量灰度图像数据。另一方面,对于具有数百万彩色图像的更复杂数据,您可能需要包含多个卷积层和全连接层的更复杂的网络。
您可以通过以下方式在 MATLAB® 中串联卷积神经网络的各层:
layers = [ imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,Stride=2) fullyConnectedLayer(10) softmaxLayer];
在定义网络的层后,您必须使用 trainingOptions
函数指定训练选项。例如,
options = trainingOptions("sgdm");
接下来,为您的任务选择损失函数。如果您有分类响应,则可以使用交叉熵损失,而如果您的响应是连续的,则可以使用均方误差损失。
lossFcn = "crossentropy";
然后,您可以使用 trainnet
函数用您的训练数据对网络进行训练。数据、层、损失函数和训练选项成为训练函数的输入。例如,
net = trainnet(data,layers,lossFcn,options);
参考
[1] Hubel, H. D. and Wiesel, T. N. '' Receptive Fields of Single neurones in the Cat’s Striate Cortex.'' Journal of Physiology. Vol 148, pp. 574-591, 1959.
[2] Murphy, K. P. Machine Learning: A Probabilistic Perspective. Cambridge, Massachusetts: The MIT Press, 2012.
另请参阅
trainnet
| trainingOptions
| dlnetwork