来源:Coursera吴恩达深度学习课程
Andrew对几个经典的神经网络结构(classic neural network architectures)论文的阅读建议为首先是AlexNet,然后是VGGNet,最后是LeNet-5。虽然有些晦涩难懂,但对于了解这些网络结构很有帮助。
下面介绍神经网络AlexNet,是以论文的第一作者Alex Krizhevsky的名字命名的,另外两位合著者是Ilya Sutskever和Geoffery Hinton。
AlexNet首先用一张227×227×3的图片作为输入(实际上原文中使用的图像是224×224×3),但是如果你尝试去推导一下,你会发现227×227这个尺寸更好一些。第一层使用96个11×11的过滤器,步幅为4,因此尺寸缩小到55×55,缩小了4倍左右。然后用一个3×3的过滤器构建最大池化层,f = 3,步幅为2,卷积层尺寸缩小为27×27×96。接着再执行一个5×5的卷积,padding之后,输出是27×27×276。然后再次进行最大池化,尺寸缩小到13×13。再执行一次same卷积,相同的padding,得到的结果是13×13×384,384个过滤器。再做一次same卷积。再做一次同样的操作,最后再进行一次最大池化,尺寸缩小到6×6×256。6×6×256等于9216,将其展开为9216个单元,然后是一些全连接层。最后使用softmax函数输出识别的结果,看它究竟是1000个可能的对象中的哪一个。
实际上,AlexNet神经网络与LeNet有很多相似之处,不过AlexNet要大得多。正如前面讲到的LeNet或LeNet-5大约有6万个参数,而AlexNet包含约6000万个参数。当用于训练图像和数据集时,AlexNet能够处理非常相似(pretty similar)的基本构造模块(basic building blocks),这些模块往往包含着大量的隐藏单元或数据,这一点AlexNet表现出色。AlexNet比LeNet表现更为出色的另一个原因是它使用了ReLu激活函数。
下面提一些比较深奥的内容,如果你并不打算阅读论文,不听也没有关系。(上图下方的红色笔记)(1)第一点,在写这篇论文的时候,GPU的处理速度还比较慢,所以AlexNet采用了非常复杂的方法在两个GPU上进行训练。大致原理是,这些层分别拆分到两个不同的GPU上,同时还专门有一个方法用于两个GPU进行交流。(2)论文还提到,经典的AlexNet结构还有“局部响应归一化层”(Local Response Normalization),即LRN层,这类层应用得并不多,所以Andrew并没有专门讲。局部响应归一层的基本思路(basic idea)是,假如这是网络的一块,比如是13×13×256,LRN要做的就是选取一个位置,从这个位置穿过整个通道,能得到256个数字,并进行归一化。进行局部响应归一化的动机是,对于这张13×13的图像中的每个位置来说,我们可能并不需要太多的高激活神经元(a very high activation)。后来,很多研究者发现LRN起不到太大作用,现在并不用LRN来训练网络。
在AlexNet之前,深度学习已经在语音识别(speech recognition)和其它几个领域获得了一些关注,但正是通过这篇论文,计算机视觉群体开始重视深度学习,并确信深度学习可以应用于计算机视觉领域。此后,深度学习在计算机视觉及其它领域的影响力与日俱增。如果你并不打算阅读这方面的论文,其实可以不用学习这节课。但如果你想读懂一些相关的论文,这是比较好理解的一篇,学起来会容易一些。
说明:记录学习笔记,如果错误欢迎指正!转载请联系我。