Deep Forest:一种深度神经网络的替代模型架构

来源:互联网 发布:wepy 知乎 编辑:程序博客网 时间:2024/06/05 15:53

本篇博客主要参考了周志华老师团队在2017年IJCAI上发表的论文《Deep Forest: Towards an Alternative to Deep Neural Networks》。这篇文章的主要贡献是把深层次的神经网络的原理运用到了传统的机器学习算法“random forest”中去,并取得了和深度学习神经网络相当的效果。

众所周知,现在深度学习在工业界和学术界都非常的火,各种基于卷积神经网络和循环神经网络的各种模型在图像、文本处理方面都取得了很好的效果。在机器学习领域,现在几乎所有人的目光都转移到了基于深度学习模型的各种任务上来,即通过构建更加合理的神经网络结构提高基础模型的准确率;与之相对,那些传统的机器学习算法貌似被忽略了不少。而在这篇文章中,周志华老师就另辟蹊径,将随机森林模型进行有机的组合(主要是在深度上进行扩展),在文本和图像处理方面达到了和深度神经网络相当的效果。

首先,周老师提了一下目前深度神经网络的2个重要弊端:1 需要较大量的训练数据;2 针对A任务训练出来的网络结构,往往在B任务中效果非常的差,即基于深度神经网络的模型对任务敏感度更高,这样训练神经网络的过程更像是一种艺术技巧而非一种工程技巧。针对以上的两个问题,周老师将传统机器学习模型中的随机森林作为基础模型,提出了如下具有层级结构的网络:
Cascade Forest structure
这里写图片描述

图中的示例任务是一个三分类的任务,从上图可以清楚的看出,输入的特征向量在经过level 1的4个随机森林之后,转换为了4个维度为3的向量,向量每一维的含义是该样例属于该类别的概率,接下来在输入level 2的时候是将这12维的向量和之前的输入拼接起来进行输入,依次类推直到最后一层,然后把最后一层的4个3维向量对位取平均,最大的那一维就是该样例所属的类别。在每一层的4个forest中,两个黑的代表了2棵包含了500棵树的“Random forest”(即每一棵树的生成样本都是对原始数据进行有放回的抽样获得,所依赖的特征是随机从所有特征中抽取n,在树节点进行分裂的时候采取Gini指数进行特征筛选);而两个蓝的代表了2棵包含了500棵树的“Complete-random forest”(即每一棵树的生成样本都是对原始数据进行有放回的抽样获得,但是在树节点进行分裂的时候是随机选取一个特征进行分裂,这样得到的树模型会具有更高的鲁棒性)。
大家可能注意到的是,在该应用场景中每一个森林的输出都是一个三维的向量,每一维度都代表了属于该类别的概率,具体是通过下图做到的:
这里写图片描述
可以看出在该森林中,每一棵决策树的输出都是一个三维的向量,然后把这些三维向量进行平均就得到了该森林的三维输出向量。那么每一棵树的三维向量是如何得到的呢,就是在训练集上落在每一个叶子节点中各个类别样本的比例。

在深度神经网络中有两种基本的模型:卷积神经网络和循环神经网络,分别用力处理具有序列特征和二维空间的数据,周老师结合这两种网络的本质原理,提出了一种被称之为Multi-Grained Scanning的网络结构,当然肯定也是基于随机森林,其结构如下所示:
Multi-Grained Scanning
这里写图片描述
首先采用滑窗法进行特征的提取,上面那个是进行序列数据的特征提取,下面按个是进行二维空间数据的特征提取,我们以下面那个为例来进行说明。这个图片本身大小是20*20,采用卷积窗口的大小是10*10,那么采用slide为1的移动步长就会产生(20-10+1)*(20-10+1)=121 个扫描结果。这里需要注意的“ All feature vectors extracted from positive/negative training examples are regarded as positive/negative instances”,也就是说这121个结果的label都是一致的(反正我这里感觉有点不太对劲),然后同样是两颗具有500棵树的森林(一蓝一黑),把这121个扫描碎片变成了121个3维向量,然后把这些向量进行拼接,就得到了原始图像的向量化表示。(这里训练forest A和forest B的时候,应该是把所有的图像一起输入,把这些图像对应的121个碎片一起进行训练)

我们从上面可以看到,把Multi-Grained Scanning和Cascade Forest structure进行组合,就可以得到了一个能够对图片进行分类的类深度卷积网络,如下图所示:
这里写图片描述
该例子以一个处理序列输入信号为例,来说明了该网络的工作原理。首先在Multi-Grained Scanning部分,可以看到有三个逻辑构建组成,这三个唯一的不同就是扫描的窗口大小不同(对应了CNN中不同的卷积器大小),这样一个样本在经过了Multi-Grained Scanning之后就变成了三个向量(分别对应了三个不同的卷积窗口,为了方便表示我们称之为A,B和C)。 然后首先A向量给level 1的4个forest进行训练,然后把level 1的4个输出向量和A拼起来进行level 2的4个forest的训练,以此类推知道最后一层输出结果。我个人感觉这样的层级连接结构和深度神经网络特别的像,只不过在训练模型的时候,深度神经网络采用了误差反向传播的方式,而该模型则是一层一层的进行训练,他的停止条件感觉也很特别:就是在新加一层之后模型在validate set上的准确率没有明显提升的话,就停止增长。

接下来周老师在多个数据集合多个任务上把他提出的模型和传统的深度神经网络进行对比,充分说明他提出模型的有效性和对不同任务的鲁棒性(即同一种结构的模型可以适配多种应用场景,就像图中的forest都是500棵树,在Multi-Grained Scanning中每一个扫描都采用了2个forest进行编码,在cascade forest部分每一个level的forest数量都是4个,而且是两黑两蓝)。同时周老师还提到,如果把最后一层的4个random forest换成GBDT的话效果还能够提升。

在未来工作方面,周老师指出该论文中在随机森林输出部分只是采取了最简单的一种对输入的编码方式,因为只利用到了随机森林的输出概率向量,其他的信息并没有利用到:比方说落入点的父节点信息,或者每一棵决策树对于一个样本判定的路径信息等。

不管怎样,周老师的这篇文章为我们打开了一个全新的视角来审视当下最火的深度神经网络模型和传统的机器学习算法的结合,还是挺有意义的。另外该模型的代码地址为:https://github.com/kingfengji/gcforest

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大件包裹快递快递员不送上楼怎么办 滴滴车主提现忘记登录密码怎么办 荣耀6玩游戏不卡但是闪退怎么办 qq扫码允许别人电脑登录怎么办 药店被举卖假药药检局没查到怎么办 苹果手机连接汽车点了不信任怎么办 装修的化妆品柜台与图纸不合怎么办 买手机邮到了是假手机怎么办 京东白条分期还款第一期逾期怎么办 快递电话留错了在派件怎么办 如果在派件途中客户电话有误怎么办 在派件途中客户电话有误怎么办 成立售电公司后供电公司怎么办 新买的洗衣机外壳坏了怎么办 京东过了7天退货怎么办 同款衣服比京东便宜怎么办 国美不让休班还不给加班钱怎么办 在国美电器买贵商品怎么办 给民俗差评老板骂你怎么办 华为p10后置摄像头调黑了怎么办 美图m6手机相机拍照模糊该怎么办 美图t8用久了卡怎么办 美图m4手机开不开机怎么办 比亚迪m6冷凝器散热不好怎么办 深圳市小汽车摇号审核没通过怎么办 扫码开门售货机拿了不给钱怎么办 预付卡办完后对方不愿退款怎么办 海尔88u52显示內存不足怎么办 京东账号绑定的手机好不用了怎么办 京东账号换手机了手机号没变怎么办 京东发票的号和手机对不起来怎么办 京东账号忘记了只有身份证怎么办啊 京东账号手机号换了忘记账号怎么办 新换的卡被注册过京东号怎么办 以旧换新旧的没给商家报案怎么办 宜家家居家居指南地址写错怎么办 苏宁任性付没还遭到恐吓心意怎么办 大王卡激活后一直是E网怎么办 京东退货已取走后悔了怎么办 退差价把下单立返红包退还了怎么办 苏宁电器发票丢了换电器怎么办