GoogLeNet和VGG是2014年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名。
本文主要内容如下:
GoogLeNet分析了现有提升网络精度的常见办法及缺点
GoogLeNet解决上面问题的办法,Inception基本原理,以及为什么想到使用Inception。
为什么不叫“GoogleNet”,而叫“GoogLeNet”
GoogLeNet网络结构以及辅助loss函数
简单介绍了下:Inception v2 、Inception v3以及Inception v4 和 Inception-ResNet
1 GoogLeNet分析了现有提升网络精度的常见办法及缺点
GoogLeNet首先分析了,现有提升网络识别(分类)的精度的常见办法,及其缺点:
使用更深的网络,但是这会导致参数太多,如果训练数据集有限,很容易产生过拟合;
创建数据集的代价很大,尤其是如果数据集分类很麻烦的情况下;
网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。
2 GoogLeNet解决上面问题的办法
解决这些问题的方法当然就是在增加网络深度和宽度的同时减少参数,为了减少参数,自然就想到将全连接变成稀疏连接。但是在实现上,全连接变成稀疏连接后实际计算量并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是计算所消耗的时间却很难减少。
那么,有没有一种方法既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。大量的文献表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,就如人类的大脑是可以看做是神经元的重复堆积,因此,GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,来搭建一个稀疏性、高计算性能的网络结构。
2.1 Inception
Inception naive结构如下: