我们先来看看较早的AlexNet
AlexNet 中卷积的形式为
1卷积的对象为:上一层输出特征。
2卷积的方法为:对上一层每个特征做同样大小视觉窗口的卷积(如3*3),然后同一个卷积核操作的结果做线性合并。
GoogLeNet
Inception1 中卷积的形式为
1卷积的对象为: 上一层的输出特征。
2卷积的方法为:
第一步:
对上一层每个特征都是用1*1的窗口做卷积,然后同一个卷积操作的结果做线性合并。
对上一层每个特征都是用3*3的窗口做卷积,然后同一个卷积操作的结果做线性合并。
对上一层每个特征都是用5*5的窗口做卷积,然后同一个卷积操作的结果做线性合并。
第二步:
对11, 3*3, 5*5,卷积出来的结果做线性合并
关于第二步我的理解是:
5*5卷积出来的特征是5*5范围信息的特征,
3*3卷积出来的特征是3*3范围信息的特征,
1*1卷积出来的特征是1*1范围信息的特征。
当我们将这三个视觉范围内的特征相结合,那合并出来结果就代表了视觉范围从1*1 一直扩展到 5*5的各个视觉范围内的总的特征信息。就类似我们将局部特征和大一点的局部特征,然后再大一点的局部特征,和到一起来当做这个范围内的特征了。
举例来说:我一次视觉记录下来了你的个头(大的范围),脸长什么样(局部范围),眼睛漂不漂亮(更小的局部范围),这种分层次的特征被一起记录了下来。
而这种不同视域范围(宽度)上的关联会通过多个Inception1模块普通的级联(pool),最终遍布到整个图像的视域中。
相比而言AlexNet中少了这种关联性,它的每一次的下一级的特征都是同样视域里特征的组合,而GoogLeNet inception1 中的下一次特征包含了相同视域 和 不同视域里特征组合,所能描述的特征更有空间渗透感。
至于作者为什么把原始的特征也池化一次(就是inception里面的那个maxpooling)传递下来,我的理解是,上层特征直接跳跃到输出能让每一次的结果里也包含了上层的信息,这种传递到后面也能够产生跨层特征的组合。
inception后的结果其实就类似是由 原始x 和 卷积值 f1(x), f2(x), f3(x) 组合影响得到的。
其实个人感觉有点类似RNN里那种操作了,类似文字处理时要把那种上下文关系用运算表示出来,并且能够训练调节。
inception中把那种空间上下文,也关系到一起产生影响,来进行调节。
以上只为个人的一些前期理解,如有错误,欢迎指出,不胜感激,欢迎讨论。