1。背景1.1BoostingBoosting[1]是一种经典的训练Ensemble模型的方法,其中一种是GBDT的具体实现,广泛应用于各种问题。介绍boost的文章很多,这里不再赘述。简单来说,boosting方法就是通过特定的准则,一个一个地训练出一系列的弱分类,并对这些弱分类进行加权,形成一个强分类器(图1)。1.2残差网络残差网络[2]是目前在图像分类等任务上最先进的模型,也被应用到语音识别等领域。其核心是skipconnect或shortcut(图2)。这种结构使得梯度更容易向后传播,从而使训练更深的网络成为可能。在之前作为Ensemble模型之ResidualNetwork的博文中,我们知道有学者将残差网络视为一种特殊的Ensemble模型[3,4]。该论文的作者之一是RobertSchapire(刚刚注意到他加入了MicrosoftResearch),他是AdaBoost的创建者(与YoavFreund一起)。Ensemble的观点基本上是(一种)主流观点。2.训练方法2.1框架残差网络是一个线性分类器(LogisticRegression)。假设模块,其中$C$是分类任务的类别数。弱模块分类器,其中$\alpha$是标量,即$h$是两个相邻假设层的线性组合。***层没有下层,因此可以认为它有一个虚拟的下层,$\alpha_0=0$和$,o_0(x)=0$。将残差网络显示为一个ensemble,使得残差网络的最终输出为$F(x)$,结合上面的定义,很明显:这里使用了telescopingsum技术(telescopingsum),所以作者说所提出的算法是伸缩和提升。我们只需要一步步训练残差网络(residualblock),相当于训练了一系列弱分类的enembles。其中,除了训练残差网络的权重外,还需要训练一些辅助参数——每层的$\alpha$和$W$(训练完成后可以丢弃)。2.2TelescopingSumBoosting(SplitItemSumBoosting)文章正文以二分类问题为例。我们比较关注多分类问题,相关算法在附录中。文中给出的伪代码描述的很清楚,直接复制如下:其中$\gamma_t$为标量;$C_t$是m乘以C(样本数乘以类别数)的矩阵,$C_t(i,j)$表示第$i$行第$j$列的元素。需要注意的是,$st(x,l)$表示$s_t(x)$的第$l$个元素(这里用的符号有点随意:-);$st(x)=\sum{\tau=1}^th\tau(x)=\alpha_t\cdoto_t(x)$。与算法3类似,$f(g(x_i),l)$表示$f(g(x_i))$的第$l$个元素,$g(x_i,y_i)$表示$g(x_i)$的第$i$个元素。显然,算法4给出的最小化问题可以用SGD优化,也可以数值求解([1]4.3节)。3.Theory理论部没细看。总的来说,作者证明BoostResNet是保留了boost算法的一个优势:1)误差随着网络深度(即弱分类器的数量)呈指数下降;2)防过拟合,模型复杂度随网络深度线性增加。有关详细信息,请参阅论文。4.讨论BoostResNet的特点是逐层训练,它有一系列的好处:减少内存使用(MemoryEfficient),使得训练大型深度网络成为可能。(目前我们只能在CIFAR上训练千层残差网络。)为了减少计算量(ComputationallyEfficient),每一层只训练一个浅层模型。因为只需要训练浅层模型,所以在优化方法(非SGD方法)上有更多的选择。另外,网络层数可以根据训练情况动态确定。4.2有些题文章要和逐层训练的残差网络(固定或不固定前几层的权重)进行对比,而不是仅仅对比所谓的e2eResNet。作者在1.1节也提到,训练框架不局限于ResNet,甚至神经网络。我不知道它将如何用于训练普通的深度模型。竞争性分层预训练现在有点过时了。参考文献Schapire&Freund。提升:基础和算法。麻省理工学院。他等人。用于图像识别的深度残差学习。维特等人。残差网络的行为类似于相对浅层网络的集合。谢等。深度神经网络的聚合残差变换。
