2021.12.20 第9篇(ICML2019) 半精读
论文链接:Shallow-Deep Networks: Understanding and Mitigating Network Overthinking
代码链接:Shallow-Deep Networks: Understanding and Mitigating Network Overthinking
Contributions
contribution 1
本文核心观点如Figure 1所示:
个人觉得本文和Yoshua Bengio等人提出的Understanding intermediate layers using linear classifier probes很相似,都是通过中间层来预测精度,只不过Yoshua Bengio等人只聚焦于解释中间层的动态性,而本文则加了实际应用。
contribution 2
对于大约95%的样本来说,不用到最后一层就能实现准确的预测,这就说明其后面的那些层就浪费了,换而言之就是不同样本的训练难易程度不一样,困难的样本需要更多的层来实现精确预测。这点对应的有种模型压缩的研究方向,这里只举了一个比较新的研究:如21年CVPR-Dynamic Slimmable Network,其工作原理如Figure 2所示:
Table 1反映了本文提出的SDNs的参数量,flops以及训练时间与CNNs的比较结果。
说实话由于没有很细的看文章Table 2没怎么看懂是什么意思,有兴趣可以自行研究,这个不妨碍下文的理解。
contribution 3
基于发现的Overthinking现象提出了confidence-based early exits and analysis of confusion.
Understanding the Overthinking Problem
本文提出了一个overthinking的概念,
(
x
,
y
)
(x,y)
(x,y)表示样本及其真实标签,如果
y
i
^
=
y
\hat{y_i}=y
yi^=y表示第
i
i
i层的内部预测值也是准确的,作者实验发现有
y
i
^
=
y
≠
y
f
i
n
a
l
\hat{y_i}=y \neq y_{final}
yi^=y=yfinal的情况出现。本文降这种情况叫做the destructive effect of overthinking。
Figure 2发现被IC层数较深分类正确的样本相较于IC层数较浅分类正确的样本更复杂。
Figure 3显示了被IC第一层分类正确的,但是被最终层分错的样本。
Mitigating the Overthinking Problem
Confidence-Based Early Exits
有了上述的Overthinking问题,本节介绍怎么来解决这个问题。本文提出了一种confidence-based early exits(早停机制很早就有),为了保证停止的是合理的,本文采用了置信度来衡量,简单来说,置信度越高,说明对这个样本分成这个类的信心越大。Table 3显示了对置信度阙值的探索。
此外本文还发现早停可以减轻the Wasteful Effect,同样看Table 3早停机制的模型训练精度比原始CNN训练更高(这个个人觉得仁者见仁,智者见智,毕竟我训练出来在CIFAR-10上的ResNet56可是有95点多,狗头保命)。在此之后还做了一些早停的实验,这里我懒得看了,不写了。
Network Confusion Analysis
本节介绍了confusion metric来定义中间层和最终层的输出不一致性。本文使用了 D i ( x ) = ∣ ∣ F f i n a l ( x ) − F i ( x ) ∣ ∣ 1 \mathcal{D}_i{(x)}=||\mathcal{F}_{final}(x)-\mathcal{F}_{i}(x)||_1 Di(x)=∣∣Ffinal(x)−Fi(x)∣∣1来度量一致性差异, ∑ ∀ i D i ( x ) \sum_{\forall i}{\mathcal{D}_i(x)} ∑∀iDi(x)表示所有中间层的和。
An SDN’s internal predictions reveal how consistently the network reaches its final prediction. Disagreements among them hint that the prediction is inconsistent and confused; whereas an agreement indicates consistency.
Figure 4显示了被正常分类样本和被误分类样本的confusion scores,其中被正常分类样本(−0.29 on average),被误分类样本(0.71 on
average)。
Figure 5用了可视化来帮助理解。
We see that the first IC focuses on the general structure of the input, whereas the final classifier focuses on the fine details.
看了最后可视化其实反而让我疑惑了,毕竟浅层网络本来就是提取global的特征,而深层是提取specific的,因此这个好像本来也就没毛病?只是本文用了一个指标来计算了一下?
个人总结
实验量以及实验的广泛性很好,故事讲的也很不错,有带来一些启发,值得学习。