最近在阅读几篇基于CNN的增量学习的论文。
《INCREMENTAL LEARNING WITH PRE-TRAINED CONVOLUTIONAL NEURAL NETWORKS AND BINARY ASSOCIATIVE MEMORIES》
09-19 阅读
第一篇论文是《INCREMENTAL LEARNING WITH PRE-TRAINED CONVOLUTIONAL NEURAL NETWORKS AND BINARY ASSOCIATIVE MEMORIES》,这篇论文的实现思路算是比较简单,利用预训练的CNN作为特征提取器,然后使用PQ对特征编码,然后使用 Binary associative memories 进行存储和分类。
首先是介绍了增量学习的四个定义:
1. 新样本可以学习新的信息;
2. 不需要旧的数据,减少内存使用;
3. 保留学过的信息,避免灾变性失忆;
4. 适应新类别数据。
而过去的工作主要使用的方法有:
1. 为新的数据训练新的分类器,比如 learn++方法;
2. 加入新数据后训练旧模型得到新的模型;
3. 结合SVMs和learn++的“SVMlearn++”方法,但每次有新数据仍然需要训练一个新的SVM,并且会丢失部分旧信息。
为了解决这些方法的固有问题,需要重新训练模型,并且会丢失部分信息,本文的方法就是利用预训练的CNN作为特征提取器,然后使用PQ对特征编码,然后使用 Binary associative memories 进行存储和分类。
整体实现如下图所示:
这里比较关键的是第二步,即特征编码,作者使用的是PQ(Product Quantization)[1]方法,实现代码可以参考[2]和[3],这个方法应该是有个比最近邻搜索方法要更加高效的方法。
这个方法的做法是对于第一步提取的特征向量 xm ,用随机挑选的K个参考点,相互独立的量化成P个大小相等的子矩阵 xmp,1≤p≤P 。这里的参考点 Y