基于决策树集成的auto-encoder —— EncoderForest (eForest)

本人的第一篇博客,仅仅只是个人随笔性质,不喜勿喷

0. 论文原文

J. Feng and Z.-H. Zhou. AutoEncoder by forest. In: Proceedings of the 32nd AAAI Conference on Artificial Intelligence (AAAI'18), New Orleans, LA, 2018. (CORR abs/1709.09018)

1. 摘要

这里直接复制原文的摘要,以免个人翻译有出入:

Auto-encoding is an important task which is typically realized by deep neural networks (DNNs) such as convolutional neural networks (CNN). In this paper, we propose EncoderForest(abbrv. eForest), the first tree ensemble based auto-encoder. We present a procedure for enabling forests to do backward reconstruction by utilizing the Maximal CompatibleRule (MCR) defined by the decision paths of the trees, and demonstrate its usage in both supervised and unsupervised setting. Experiments show that, compared with DNN based auto-encoders, eForest is able to obtain lower reconstruction error with fast training speed, while the model itself is reusable and damage-tolerable.

2. 方法

目前业界主流的自编码器都是基于神经网络,例如全连接神经网络(MLP),卷积神经网络(CNN),其目的是将原始输入映射至一个隐空间(latent space),从而获取其低维或者稀疏表示。为了获得原输入的良好表示,自编码器需要以最小化重构误差为目标。因此自编码器基本结构由一个编码器(encoder)和一个解码器(decoder)组成,其中encoder负责将输入映射至隐空间,而decoder负责将隐空间的表示重构为原表示。基于神经网络的自编码器通常以均方误差为损失函数,通过梯度下降等方法进行学习。

而周志华教授与其学生另辟蹊径,在随机森林的基础上构建出编码器与解码器。其想法很简单,在一个有N个决策树的森林中,对于每棵树Ti将输入映射至其的一个叶子节点,将该叶子节点的索引记为ni。利用森林中的每棵树做相同的操作就可以得到输入的N维表示(n1,n2,n3...nN)。

在设计解码器的时候稍微有点技巧。利用决策树进行决策时需要将决策的路径记录下来,而每个决策路径对应了一个规则(rule)。在进行解码重构的过程中,利用森林中N个规则,运用Maximum Compatible Rule(MCR),获取N维编码所对应的更精确的规则,以此规则进行重构。对于枚举型属性,该规则中的值可直接作为属性值,对于连续变量,通常规则得到的是属性的一个范围,可以取其最大值,最小值,或者中值作为其最终属性。

3. 个人思考

其实EncoderForest 的本质是规则编码,利用决策树得到N个规则的数值编码,重构时再利用相同的森林还原即可,可以看到,基于树的编码和基于神经网络这样的计算型框架还是有一些差别的。其中一个最大的区别就是,神经网络自编码器得到的是数值连续的隐空间,而树自编码器是离散表示的规则空间。由于基于随机森林,eForest可得益于其训练速度,实际上也确实如此。在mnist 和 cifar10 上的训练速度比基于神经网络的框架快10倍以上。而且,由于其编码解码都依赖于相同的森林,是基于规则的,而不是像神经网络编码器那样编码和解码器是“分别”通过计算学出来的,其重构误差一般很低。另外,虽然决策树的学习具有随机性,但是决策树的编码的规则往往具有很强的相关性,因此对于编码的缺失,甚至是损坏,有很强的容忍能力。

当然eForest作为一个新提出的概念,本身也有很多缺陷。首先由于其编码需要进行路径选择,解码的时候需要利用MCR计算,而不像神经网络那样进行简单的矩阵运算,其解码和编码速度比神经网络慢不少。而且,其编码的隐空间是离散空间,表达能力十分有限,再加上规则之间的相关性,其有效编码数量往往十分少。

关于后者举个例子,原输入有M个属性,通过N个树的森林进行编码。现在考虑满二叉树的情况,每层的划分属性都为同一个,则产生的叶子节点有2^M个,因此理论上可产生N^(2^M)个编码,而实际上合法编码远没有这么多。假设所有属性为连续值,每个规则对该属性都进行了一次划分,理想情况下所有规则的划分都不相同,因此划分了N+1个区间,某个值只可能落在某个区间里,因此M个属性只能产生M^(N+1)个区间组合,因此只可能有M^(N+1)个合法编码,很显然在M和N都很大时,前者是要远远大于后者的。

最后,树自编码器的实际编解码效率很高,但这是以牺牲编码的表达能力为代价的,这种代价带来的后果是,它不能胜任很多任务,例如神经网络自编码器都可胜任的生成任务(generative task),虽然其可以利用规则编码进行解码生成,但其编码是有限的因此生成的结果也是有限的,更不用说结果的多样性了。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页