2.这个gc forest模型,实际上也是尝试着像NN一样通过多层学习学到更高维度更抽象的特征,通过加层数来实现特征和特征之间的各种非线性组合,最终抽离出各种非线性特征,其中几乎一定存在很不错的特征。 3.为什么每一层的输出选择分类结果的维度?这样是否损失了一些特征信息?是否对学习效果有影响。 4.这个模型是否真的能成为万金油模型,我还是不敢下断言,一来不是很稀疏,二来,有很多看起来很随意的设置,三来这样搞tree,真的会比NN在理论上容易分析一些么?还是请大佬来解答相关问题。 5.这个模型从第一层起即关注对最终结果的loss,对特征学习是不是一个约束,即难以学习到更好的特征? 知乎原文链接:https://www.zhihu.com/question/56474891/answer/149366668 gcForest 很好,但并没超越DNN 【作者:毛潇锋】 首先说说论文的思想。 gcForest模型还是把训练分成两个阶段: 第一个是G阶段(Multi-Grained Scanning),这一步主要是feature extraction,具体做法和卷积神经网络类似(如下图),n*n的窗口滑动来获得raw feature,只不过这里不再有权值了,20*20大小的图片,用10*10的窗口按滑动步长1来取的话,会生成121个特征,然后直接将121个10*10像素的图放到Forest里面,产生121个三维的类概率向量,两个Forest就是2*121个三维类概率向量,以此类推。同理在用5*5或者15*15的窗口重复上述步骤,最后把所有向量聚合,形成一个维度非常高的feature。重要的是,这个过程是全程受监督的,已经有答主说了,gcForest的feature extraction过程是受label监督的,开奖,而DNN的feature extraction过程是由高层BP传下来的梯度指导更新的,在DNN较深的情况下,高层传下来的梯度容易受到各种因素的影响而波动,这是gcForest优于DNN的一点。 <span style="font-size: 14px;"><img src="https://pic2.zhimg.com/v2-d22afb7381ae9b5fd4f44d018c7dfcad_b.png" data-rawwidth="626" data-rawheight="209" class="origin_image zh-lightbox-thumb" width="626" data-original="https://pic2.zhimg.com/v2-d22afb7381ae9b5fd4f44d018c7dfcad_r.png"></span>
第二个是C阶段(Cascade Forest),它由下图所示的级联随机森林构成,每个Forest也是输出3维的类概率向量,有的同学会说那不是一步就完成了吗?当然不是的,如下图4个Forest输出的4*3维向量要和原Input聚合,再做为下一层的输入,以此类推,当我们发现结果已经较优了的时候,就可以停止,取平均后最大值对应的类作为输出。为什么要将输出和原Input聚合作为下一层的输入?这种做法我的理解是为了使得输出越来越向某一个值靠近,即让级联随即森林趋于收敛和稳定。 <span style="font-size: 14px;"><img src="https://pic1.zhimg.com/v2-dbd09ff9f8f7e631c77ad87ec49143a4_b.png" data-rawwidth="584" data-rawheight="280" class="origin_image zh-lightbox-thumb" width="584" data-original="https://pic1.zhimg.com/v2-dbd09ff9f8f7e631c77ad87ec49143a4_r.png"></span>
然后再来说说和DNN的不同。 (责任编辑:本港台直播) |