首先推荐大家看文章:From N to N+1: Multiclass Transfer Incremental Learning
核心细想就是Transfer Incremental Learning
在传统的机器学习假设训练数据和预测数据服从相同的数据分布。然而在很多情况下,这种分布的假设并不满足。不满足同分布假设的情况往往发生在训练数据过期,而标注新的数据又非常昂贵。于是,在有大量不同分布的过期训练数据,完全丢弃这些过期的数据将是非常的浪费,在这种情况下,迁移学习就非常重要了。
迁移学习的目标就是将从一个环境中学习到的知识用来帮助新环境中的学习任务,因此,迁移学习不会像传统的机器学习那样作同分布假设。举一个通俗的例子,一个会下象棋的人可以更容易的学会下围棋;一个认识桌子的人可以更加容易的认识椅子;
原理图如下:Transfer learning的任务就是检测出小狗,并且系统已经学习到了几种动物(小猫、马)。从有n个类别学习第n+1个类别。
代码组成部分:
Contents
--------
data/ -- demo data
tmp/ -- temporary files (e.g. source classifiers)
lib/ -- algorithm implementations
lib/util -- utilities
lib/dogma -- parts from DOGMA library
lib/mktl -- Multi-Kernel Transfer Learning implementation files
lib/multikt -- MultiKT implementation files
lib/tl_baselines/ -- baseline TL algorithm implementation files
lib/GenericClassifier.m -- abstract base class for classifiers (kernel computation and generic evaluation routines)
lib/HyperSearch.m -- hyperparameter grid search utility class
lib/MulticlassOneVsRest.m -- multiclass OVA classifier, where binary classfiers can be plugged in
lib/MulticlassRLS.m -- multiclass LSSVM classifier
lib/SimpleNplusOne.m -- Source+1 baseline implementation
lib/SourcePlusOneHingeL.m -- Source+1 (hinge) baseline implementation
lib/MTKL.m -- interface to MKTL (compatibe with generic evaluation framework)
lib/MultiKT.m -- interface to MultiKT (compatibe with generic evaluation framework)
lib/PmtSvm.m -- interface to PmtSvm (Tabula Rasa) (compatibe with generic evaluation framework)
lib/MultisourceTrAdaBoost.m -- interface to MultisourceTrAdaBoost (compatibe with generic evaluation framework)
lib/MULTIpLE.m -- The MULTIpLE algorithm implementation
NplusoneBenchmark.m -- main experiment file; preamble contains its description