PRN(20200816):A Hierarchical Deep Convolutional Neural Network for Incremental Learning [Tree-CNN]

Roy D , Panda P , Roy K . Tree-CNN: A Hierarchical Deep Convolutional Neural Network for Incremental Learning[J]. Neural Networks, 2018.

今天阅读的这篇论文的名字有两个版本,分别为Tree-CNN: A Deep Convolutional Neural Network for Lifelong LearningTree-CNN: A Hierarchical Deep Convolutional Neural Network for Incremental Learning。后面的是最终发表在Neural Networks上的版本。明显,第一个名字有点太浮夸了,Lifelong Learning。我个人对这篇论文的评价是一般,一直觉得Neural Networks是机器学习顶级期刊,但这篇论文让我觉得Neural Networks也不是高高在上的白月光。当然,专门记录不是为了吐槽这篇论文。论文里的思想与翁巨扬教授的IHDR有点像,这一点会在笔记中指出。抱着很高的期待看这篇论文,中间却发现工作还很简陋,还有许多需要(或者说可以)填补的坑。


1. 问题背景

深度学习存在灾难性遗忘问题:也即对新数据的学习会造成历史知识的遗忘。例如,对于一个已经学会识别苹果、梨、香蕉的深度学习网络,我现在用橘子的数据集来继续训练这个网络,学习完成后,我们发现,它虽然能够识别橘子了,但是对苹果、梨、香蕉的识别正确率却大大降低。

深度学习灾难性遗忘的原因主要是因为,深度神经网络是一种全局网络。对新数据的训练可能会大幅修改对其它类别重要的神经元的参数。当前应对该问题,主要存在三类方法:1)combining old and new data and retraining;2)knowledge distill;3)Synaptic Intelligence。

1)combining old and new data and retraining

目前为止,这是解决深度学习灾难性遗忘问题最有效的方法,没有之一。当然,它也是最暴力、最没有技术含量、成本最高的方法。它把序列学习问题变成了深度学习擅长的离线batch学习问题。改变了应用背景,灾难性遗忘问题自然就不存在了。但是,这种方法一旦遇到新的数据,就需要将新数据加入历史数据集中,打乱后,对神经网络进行重训练。对于一个时时刻刻会遇到新场景、新案例的在线学习应用,整个训练数据随着新场景的增加而增大,重训练所需要的时间与空间成本也会愈来愈大。

2) knowledge distill

知识蒸馏技术是面向于模型压缩,满足像手机上运行深度学习应用的需求,后面被应用于解决深度学习灾难性遗忘的问题。知识蒸馏技术是逆向利用了神经网络模型的一个典型案例,即然利用输入与输出数据能够得到表示某一类知识的模型,随机输入的状态到该训练好的网络中,所得到的输出肯定是包含了那个类别的知识,这个过程与蒸馏的过程很相似,被形像的称为知识蒸馏技术。基于知识蒸馏技术的方法,不需要存储历史数据。它利用当前的新状态产生对应的输出,这些输入输出(保留着历史知识)与新的数据一起对网络进行训练。它们就像是绳子的两端的拔河队员,尽力保证网络即不遗忘历史知识,又能学到新知识。

3)Synaptic Intelligence

突触智能其实说白点就是利用收集训练过程中神经元与任务相关性信息来限制与历史任务重要的神经元的修改来达到缓解灾难性遗忘问题的方法。想了解更多,可以看看Synaptic Intelligence

2. Tree-CNN方法

理论层面没有多少创新,该论文唯一值得一说的就是它的idea,很像翁巨扬教授的IHDR的简化版本在深度神经网络中的应用版本,所以说,我个人真觉得这篇论文创新点不明显。下面,我用论文中第一个实验的训练构造过程来介绍Tree-CNN的核心思想。

人类天生就具有分类的能力来避免信息爆炸,生活处处能看到分类。万事万物在人类定义的属性空间下,是能够分类的,先粗分类,然后将大类再细分类,就像一棵树一样。例如,CIFAR-10是一个包含10个类别的数据集,为了构造成一个增量式学习问题,作者先选取其中6类作为初始训练集,预留4类作为新数据,在之后加入。

6类可以人为的分成两个大类:1)动物;2)车辆。这个6类可以一起训练出一个ROOT网络模型,然后各个大类的数据集又可以分类训练两个子网络模型(ANIMAL与VEHICLE)。最后就是利用各类数据集训练叶子网络模型。

在利用6类数据集构造出如下图左边所示的网络模型树之后,需要接受4类新数据。论文中是这么做的,原文如下:

Once the new classes have been assigned locations in the Tree-CNN, we begin the re-training of the network. The root node is re-trained using all 10 classes, divided into to subclasses. The branch node “animal” is retrained using training data from 6 classes, 3 old and 3 new added to it. Similarly, branch node “vehicles” is retrained with training data from 4 classes, 3 old, 1 new.

简译一下就是:新加入的类与历史数据一起对网络重新训练!!!

吐槽时刻:啥呀,这不是解决灾难性遗忘最没有技术含量(combining old and new data and retraining)的作法吗!!!搞这么多,又是TREE,又是增量式学习,又是neural networks的,结果你告诉我,你用的就是这种简单粗暴的方法?感觉被戏弄了,这真的不是在这里刷存在感,真的有感觉被人耍了一般。

在这里插入图片描述
有人会说,它构造了这样一棵网络树,这是它最大的IDEA。慢着,可能真的是孤陋寡闻了,下图是翁巨扬教授提出的IHDR树,是不是很像。但是你Tree-CNN只是一个简单的没有多少理论的树,人家IHDR树里面要理论有理论的,而且人家解决的是回归问题。

在这里插入图片描述


未完待续

猜你喜欢

转载自blog.csdn.net/u013468614/article/details/108035430