http://www.gageet.com/2014/09203.php这个网址已都经把文章翻译好了,这里主要是说两点:
1.Googlenet借鉴了network in network里的多层感知器结构,也就是convolution层的 kernel_size=1,它的好处主要是体现在以下两方面:
a.降维,解决计算瓶颈;
b.提高神经网络的表达能力(多层感知器)。
2.Googlenet有一点突破就是对数据卷积核进行并联(多尺度的对图像进行卷积),考虑到计算的时间问题,底层用大卷积核(7*7),上层用小卷积核(3*3,5*5),值得借鉴啊。
最后,引用知乎上一为大牛讲解 Googlenet话:http://www.zhihu.com/question/27393324
正如文章中所写,增加网络宽度的好处,来源于不同尺度的卷积核并联,从而实现了对multi-scale特征的利用,也就是文章中Figure 2(a),给出的inception module的结构。但是较大尺度卷积核的使用,会带来网络规模以及计算量的增加。这里作者提出了采用小卷积核和大卷积核级联的方法,来压缩模型的参数量,也就是文中的Figure 2(b)。
按文章中Figure 3所示的网络结构,我们可以算一下:对于一张224*224*3的图片,过完前三层公用的卷积(7*7-1*1-3*3)之后,feature map的大小是28*28*192。这时如果直接使用128个3*3的卷积核,那么需要(3*3*192*128)个parameter,而如果按文中所述先用1*1的卷积核把feature map的第三维维数先降下来,再用3*3的卷积,这样模型的规模就可以小很多,文中用了96个1*1+128个3*3的卷积核级联,这时parameter的数目变成了(1*1*192*96+3*3*96*128),几乎只是原来的一半。同理对5*5的卷积,文中用16个1*1+32个5*5卷积核级联,代替直接使用32个5*5卷积核,parameter数目从(5*5*192*32)下降到(1*1*192*16+5*5*16*32)。后面每层也依次类推。