卷积神经网络:修订间差异
Tansinan 1995(留言 | 贡献) 从英文维基翻译“loss function” |
|||
第30行: | 第30行: | ||
由于池化层过快地减少了数据的大小,目前文献中的趋势是使用较小的池化滤镜,<ref>{{cite arXiv|title = Fractional Max-Pooling|eprint= 1412.6071|date = 2014-12-18|first = Benjamin|last = Graham|class= cs.CV}}</ref>甚至不再使用池化层。<ref>{{cite arXiv|title = Striving for Simplicity: The All Convolutional Net|eprint= 1412.6806|date = 2014-12-21|first = Jost Tobias|last = Springenberg|first2 = Alexey|last2 = Dosovitskiy|first3 = Thomas|last3 = Brox|first4 = Martin|last4 = Riedmiller|class= cs.LG}}</ref> |
由于池化层过快地减少了数据的大小,目前文献中的趋势是使用较小的池化滤镜,<ref>{{cite arXiv|title = Fractional Max-Pooling|eprint= 1412.6071|date = 2014-12-18|first = Benjamin|last = Graham|class= cs.CV}}</ref>甚至不再使用池化层。<ref>{{cite arXiv|title = Striving for Simplicity: The All Convolutional Net|eprint= 1412.6806|date = 2014-12-21|first = Jost Tobias|last = Springenberg|first2 = Alexey|last2 = Dosovitskiy|first3 = Thomas|last3 = Brox|first4 = Martin|last4 = Riedmiller|class= cs.LG}}</ref> |
||
=== |
===损失函数层=== |
||
损失函数层(loss layer)用于决定训练过程如何来“惩罚”网络的预测结果和真实结果之间的差异,它通常是网络的最后一层。各种不同的损失函数适用于不同类型的任务。例如,[[Softmax函数|Softmax]]交叉熵损失函数常常被用于在K个类别中选出一个,而[[邏輯函數|Sigmoid]]交叉熵损失函数常常用于多个独立的二分类问题。欧几里得损失函数常常用于结果取值范围为任意实数的问题。 |
|||
損耗層(Loss layer) |
|||
==应用== |
==应用== |
2017年1月5日 (四) 16:29的版本
机器学习与数据挖掘 |
---|
此條目可参照外語維基百科相應條目来扩充。 |
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,[1]对于大型图像处理有出色表现。
卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更优的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要估计的参数更少,使之成为一种颇具吸引力的深度学习结构[2]。
概览
发展
结构
卷積層
卷積層(Convolutional layer),卷積神經網路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
線性整流層
線性整流層(Rectified Linear Units layer, ReLU layer)使用線性整流(Rectified Linear Units, ReLU)作为這一層神經的激活函數(Activation function)。它可以增强判定函数和整个神经网络的非线性特性,而本身并不会改变卷积层。
事实上,其他的一些函数也可以用于增强网络的非线性特性,如双曲正切函数 , ,或者Sigmoid函数。相比其它函数来说,ReLU函数更受青睐,这是因为它可以将神经网络的训练速度提升数倍[3],而并不会对模型的泛化准确度造成产生显著影响。
池化層(Pooling Layer)
池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上一种形式的向下采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效地原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。
池化层通常会分别作用于每个输入的特征并减小其大小。目前最常用形式的池化层是每隔2个元素从图像划分出的区块,然后对每个区块中的4个数取最大值。这将会减少75%的数据量。
除了最大池化之外,池化层也可以使用其他池化函数,例如“平均池化”甚至“L2-范数池化”等。过去,平均池化的使用曾经较为广泛,但是最近由于最大池化在实践中的表现更好,平均池化已经不太常用。
由于池化层过快地减少了数据的大小,目前文献中的趋势是使用较小的池化滤镜,[4]甚至不再使用池化层。[5]
损失函数层
损失函数层(loss layer)用于决定训练过程如何来“惩罚”网络的预测结果和真实结果之间的差异,它通常是网络的最后一层。各种不同的损失函数适用于不同类型的任务。例如,Softmax交叉熵损失函数常常被用于在K个类别中选出一个,而Sigmoid交叉熵损失函数常常用于多个独立的二分类问题。欧几里得损失函数常常用于结果取值范围为任意实数的问题。
应用
图像识别
卷积神经网络通常在图像识别系统中使用。
视频分析
相比图像识别问题,视频分析要难许多。CNN也常被用于这类问题。
自然语言处理
卷积神经网络也常被用于自然语言处理。 CNN的模型被证明可以有效的处理各种自然语言处理的问题,如语义分析[6]、搜索结果提取[7]、句子建模[8] 、分类[9]、预测[10]、和其他传统的NLP任务[11] 等。
药物发现
卷积神经网络已在药物发现中使用。卷积神经网络被用来预测的分子与蛋白质之间的相互作用,以此来寻找靶向位点,寻找出更可能安全和有效的潜在治疗方法。
围棋
卷积神经网络在计算机围棋领域也被使用。2016年3月,AlphaGO对战李世石的比赛,展示了深度学习在围棋领域的重大突破。
微调(fine-tuning)
可用包
- Caffe: Caffe包含了CNN使用最广泛的库。它由伯克利视觉和学习中心(BVLC)研发,拥有比一般实现更好的结构和更快的速度。同时支持CPU和GPU计算,底层由C++实现,并封装了Python和MATLAB的接口。
- Torch7(www.torch.ch)
- OverFeat
- Cuda-convnet
- MatConvnet
- Theano:用Python实现的神经网络包[12]
- TensorFlow
参考
- ^ Convolutional Neural Networks (LeNet) - DeepLearning 0.1 documentation. DeepLearning 0.1. LISA Lab. [31 August 2013].
- ^ Convolutional Neural Network. [2014-09-16].
- ^ Krizhevsky, A.; Sutskever, I.; Hinton, G. E. Imagenet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems. 2012, 1: 1097–1105.
- ^ Graham, Benjamin. Fractional Max-Pooling. 2014-12-18. arXiv:1412.6071 [cs.CV].
- ^ Springenberg, Jost Tobias; Dosovitskiy, Alexey; Brox, Thomas; Riedmiller, Martin. Striving for Simplicity: The All Convolutional Net. 2014-12-21. arXiv:1412.6806 [cs.LG].
- ^ Grefenstette, Edward; Blunsom, Phil; de Freitas, Nando; Hermann, Karl Moritz. A Deep Architecture for Semantic Parsing. 2014-04-29. arXiv:1404.7296 [cs.CL].
- ^ Learning Semantic Representations Using Convolutional Neural Networks for Web Search – Microsoft Research. research.microsoft.com. [2015-12-17].
- ^ Kalchbrenner, Nal; Grefenstette, Edward; Blunsom, Phil. A Convolutional Neural Network for Modelling Sentences. 2014-04-08. arXiv:1404.2188 [cs.CL].
- ^ Kim, Yoon. Convolutional Neural Networks for Sentence Classification. 2014-08-25. arXiv:1408.5882 [cs.CL].
- ^ Collobert, Ronan, and Jason Weston. "A unified architecture for natural language processing: Deep neural networks with multitask learning."Proceedings of the 25th international conference on Machine learning. ACM, 2008.
- ^ Collobert, Ronan; Weston, Jason; Bottou, Leon; Karlen, Michael; Kavukcuoglu, Koray; Kuksa, Pavel. Natural Language Processing (almost) from Scratch. 2011-03-02. arXiv:1103.0398 [cs.LG].
- ^ 深度网络:Theano项目主页。