这周看的文章,感觉都还挺有意思,但是实用价值一般,就简要的存个档。
前两篇时周志华的深度森林3弹的前两弹,第三弹以前介绍过,我也是跟风读了读,毕竟周志华知名度还是比较高的,感觉还是挺有想法的,但是距离实用还是有一些距离。总体而言,第一篇借鉴神经网络多层的想法,然随机森林也搞成多层,每层也做表征学习。第二篇是自编码,用最大兼容规则(MCR)重构出原图。第三篇是借鉴反向传播,构造逆函数,把误差传回去更精确的学习。
Ladder Network和PU learning(Positive and Unlabeled Learning)都属于半监督学习,都是标注数据占很少的一部分的情况。
作者:
Zhi-Hua Zhou, Ji Feng
National Key Laboratory for Novel Software Technology,
Nanjing University, Nanjing 210023, China
{zhouzh, fengj}@lamda.nju.edu.cn
探索对于不可微模型构造深度模型。
深度学习成功背后的原因是有这三个特性: layer-by-layer processing, in-model feature transformation and sufficient model complexity.
我们提出的gcForest在生成深度模型的同时保持了深度学习的三个特性。
而且树模型与深度学习相比,有更少的超参数,这可以使得模型调参工作大大减轻。
representation learning(layer-by-layer processing)
It is well known that an ensemble can usually achieve better generalization performance than single learners.
To construct a good ensemble, the individual learners should be accurate and
diverse.
we include different types of forests to encourage the diversity, because diversity is crucial for ensemble construction.
随机森林+极端随机数->每一个类别的概率+原始输入作为下一层的特征。最后一层再平均
多个窗口扫描作为特征输入,产生的结果作为输出concatenate到后面作为那一层的输出。
In all experiments gcForest is using the same cascade structure: Each level consists of 4 completely-random tree forests and 4 random forests, each containing 500 trees.
Three-fold cross validation is used for class vector generation.
The number of cascade levels is automatically determined.
把数据分为80%的growing set和20%的estimating set,当在estimating set准确率不在提升时,层数停止生长。
For d d raw features, we use feature windows with sizes of [d/16],[d/8],[d/4] [ d / 16 ] , [ d / 8 ] , [ d / 4 ]
Comparison of test accuracy on MNIST
gcForest | 99.26% |
---|---|
LeNet-5 | 99.05% |
Deep Belief Net | 98.75% |
SVM (rbf kernel) | 98.60% |
Random Forest | 96.80% |
Comparison of test accuracy on CIFAR-10
ResNet | 93.57% |
---|---|
AlexNet | 83.00% |
gcForest(gbdt) | 69.00% |
gcForest(5grains) | 63.37% |
Deep Belief Net | 62.20% |
gcForest(default) | 61.78% |
Random Forest | 50.17% |
MLP | 42.20% |
Logistic Regression | 37.32% |
SVM (linear kernel) | 16.32% |
Experiments show that, compared with DNN autoencoders, eForest is able to obtain lower reconstruction error with fast training speed, while the model itself is reusable and damage-tolerable.
In this paper, we present the EncoderForest, (abbrv. eForest), by enabling a tree ensemble to perform forward encoding and backward decoding operations and can be trained in both supervised or unsupervised fashion. Experiments showed the eForest approach has the following advantages:
AutoEncoder有两个基本功能:编码和解码。对于随机森林来说,编码是没有困难的,因为叶节点的信息可以被看作是一种编码;更不用说,节点的子集甚至是路径的分支都可以提供更多的编码信息。
eForest编码过程:给定训练好的森基森林,把输入数据输入到森林的每颗树中,将每个数结果叶子结点的索引的集合作为编码特征。该编码过程与如何分割树节点的特定学习规则是彼此独立的。因此,可以监督学习决策规则,也可以无监督学习(例如完全随机树)。
eForest解码过程:每个叶节点对应于来自根的路径,每条路径对应一个符号规则,然后推导出最大兼容规则(MCR)。 MCR规则:每个组件覆盖范围都不能扩大,否则会出现不兼容的问题。
key idea: 将有监督学习与无监督学相结合,通过反向传播最小化无监督和有监督的损失函数(不需要层预训练)。
Ladder Networks目的是把无监督学习很好的融入有监督学习中。虽然有些算法也能够同时实施有监督和无监督学习,但是往往无监督学习是一个辅助任务,提供预训练。在复杂的任务中,无监督学习往往不能够提取对于有监督学习有用的信息,因为无监督学习的目的是尽可能的保留原始数据的信息,而有监督学习的特征提取过程中有过滤与任务无关的信息的作用,有点像以前介绍的LDA和PCA的区别,这个不同点使得有监督学习和无监督学习的兼容(半监督学习)很困难。
Ladder Networks的原始数据是一小部分标注数据 {(x1,y1),(x2,y2),...,(xN,yN)} { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } 和大量未标注数据 {xN+1,xN+2,...,xN+M,} { x N + 1 , x N + 2 , . . . , x N + M , } , N≪M N ≪ M 。
Ladder Networks的结构是:
encoder: x⟶z(1)⟶z(2)⟶y x ⟶ z ( 1 ) ⟶ z ( 2 ) ⟶ y
decoder: y⟶z(2)⟶z(1)⟶x y ⟶ z ( 2 ) ⟶ z ( 1 ) ⟶ x
对于有标注数据,我们想要最小化encoder的误差,对于我们想要最小化encoder和decoder过程中所有变量的差距。为了增加鲁棒性,我们会无标注数据在encoder过程中产生的特征上加噪声。loss function是 loss=∑Ni=1ylog y^+λ∑N+Mi=N+1∑d|zd^−zd¯|2 l o s s = ∑ i = 1 N y l o g y ^ + λ ∑ i = N + 1 N + M ∑ d | z d ^ − z d ¯ | 2
这样就把无标注数据在特征提取中利用上了。
参考文献:
Semi-Supervised Learning with Ladder Networks[https://arxiv.org/abs/1507.02672] - 24 Nov 2015
Deconstructing the Ladder Network Architecture[https://arxiv.org/abs/1511.06430] - 24 May 2016
给定一个正例数据集P和一个无标注数据集U,在无标注数据集中同时含有正例和反例。通过使用P和U建立一个分类器能够辨别U或测试集中的正例。
问题最终被转换成一个有限制的最优化问题(Constrained Optimization Problem),即算法试图在使得正例数据中的错误率低于1-r的情况下最小化无标注数据中正例数据的数目。
基于限制最优化问题,可采用两种方法来建立PU分类器:
两个步骤组成:
间谍技术(Spy Technique):
a.随机地从P中选取一个正例文档集合S,并把S加入到U中
b.通过把P-S当成是正例集合,U+S当成是反例集合,在这两个集合上运行朴素贝叶斯算法,得到NB分类器被用于给U+S中的每个样本d进行分类,即为每个文档赋予一个概率类别标识Pr(1|d),其中1代表正例类别
c.利用间谍文档的概率标识来决定哪些文档最有可能是反例。使用一个阈值t来确定,U中那些概率Pr(1|d)小于t的文档被认为是最有可能的反例文档,用RN表示。
1DNF技术:首先建立一个正例特征集合PF,其中包括那些在正例集合P中出现次数大于在无标注数据U中出现次数的特征,得到U与P中出现的所有特征并得到一个词汇表V,从U中发现可靠反例文档,U中的某个文档如果不含有PF中任何特征的话被认为是一个可靠的反例。
NB(朴素贝叶斯)技术:用NB分类器从无标注数据集U中发现一组可靠反例集合RN。
Rocchio技术:与NB技术类似,只需有Rocchio分类器代替NB分类器。
在P和RN上运行一个学习算法(如NB或SVM),集合U-RN中的文档不在考虑范围内;迭代地运行某个学习算法直到它收敛或达到某个停止条件。
使用NB分类器的EM算法
迭代SVM(Iterative SVM):该方法中,SVM通过使用P,RN和Q(U-RN)不断地循环运行。