Reading Note「7」Deep Forest: Towa

2019-09-30  本文已影响0人  是许嘉晨

在听完WAIC上周志华大佬的分享之后,就决定阅读一下他提出的「Deep Forest」,他认为这是一个取代「Deep Neural Network」的思路。

首先在他提出了当前深度神经网络架构的很多不足之处,

所以为了解决神经网络上述的问题,作者提出了「Deep Forest」的概念,也就是将很多个森林组合在一起(森林就是树的组合,Deep Forest中若干森林组成一层,然后通过若干层的叠加实现效果)。在这个概念下作者提出了「multi-Grained Cascade Forest, gcForest」。

首先先来说一下「Forest」
对于一个已经训练好的Forest,输入一个sample我们就可以得到这个sample的class distribution。首先对于一个Forest中的每一颗树,它的叶子结点一定是一种类别分布(即在训练过程中落到这个叶子中的各个类别的sample所占的比例,然后用这个比例来作为预测的时候的结果),然后对整个Forest输入一个input时就是将它放入每一棵树,观察它会落到哪一个叶子结点,即可以得到对应的class distribution,(其实训练的时候,每一个sample也可以得到其对应的class distribution,就是这个sample所在的叶子结点的sample分布)然后只需要对Forest中每一颗树的预测结果进行平均,就可以得到这棵树对这个sample的预测结果。

「Cascade Forest」
作者通过四颗树实现了「Cascade Forest」,作为深度森林的一层,四颗树中分别为两颗「completely-random tree forests」以及两颗「random forests 」(具体的差别我也不知道,但是结构应该是类似的),然后通过训练四颗不同的森林,构成了一层,如下图所示,然后将这一层的输出(每一个森林都输出一个class distribution)作为下一层的输入,最后构成了如下的深度森林模型。

Cascade Forest

「Training Process」
那么有这样一颗「Cascade Forest」之后如何训练呢,或者说如何让prediction逼近ground truth呢?在深度学习中采用的是「Back Propagation」的方法迭代求解整个网络的最优参数结构,但是在「Cascade Forest」中很明显是不能够进行这样的训练的,因此作者提出的训练方式就是叠加深度森林的层数(四颗森林为一层),通过将上一层的输出作为该层的输入来不断地迭代,一直到新增加层数对整个网络表现的提升不再明显为止。

「Multi-Grained」
在图像识别以及语音识别中,深度学习具有能够充分挖掘特征之间的位置关系的特点,例如利用二维卷积核对图像进行特征提取的时候,像素之间的关系会被反应在kernel weight上,所以为了使得「Cascade Forest」能够对特征之间的关系同样敏感,作者利用了一个「sliding window」来提取输入特征的局部信息,从而建立位置关系,如下如所示。

从图中我们可以发现,无论是sample属于「序列型」还是「图像型」,都可以通过滑动窗口将其转化为多个instance,将每个instance单独输入到一个预处理森林(与深度森林的每一层有所不同,它仅仅只由两个森林构成,算是对数据的预处理吧),然后将每个instance预处理的结果结合起来作为深度森林的输出。

同时通过调整sliding window的大小以及stride的大小,可以实现「multi-scale」这个功能。因此整体的网络架构如下图所示。

「Experiment」
实验部分,主要是可以聊一聊究竟怎么来训练这个新型深度结构。正如前面所说,训练过程是一个森林层增加的过程,但是究竟怎样才算是训练结束呢,这个思路有一点像决策树剪枝的想法。

首先我们有一个「Training Set」,然后我们将它划分为80%的「Growing Set」以及20%的「Estimating Set」,然后用「Growing Set」来指导整个网络中每一棵树的生成,从而确定深度结构,而用「Estimating」来判断当前的结构的表现,当表现变化不大的时候则停止继续叠加森林层。最终,再用整个「Training Set」来重新训练一遍深度结构(我认为在最后这个训练中,并不会再调整网络结构,即每一个树的结构,只会调整每一个叶子结点的分布估计,用Training Set在每个叶子结点中sample的类别分布来作为每一个叶子结点的分布估计)。

上一篇 下一篇

猜你喜欢

热点阅读