知行编程网知行编程网  2022-01-24 15:30 知行编程网 隐藏边栏 |   抢沙发  16 
文章评分 0 次,平均分 0.0
今天跟大家分享一篇很有意思的文章,是一篇探讨深度学习模型记忆&遗忘机制的文章,是一篇角度很新颖的题材,同时又有一定启发作用。

这篇文章发表在深度学习顶会ICLR19,标题是《An empirical study of example forgetting during deep neural network learning》。

这篇文章是我最近看到的最有意思的文章之一了,同时我跑了这篇文章的代码并做了很深入的研究和分析。很有意思,值得一读!希望这篇博客能对您目前的工作有所启发!

首先,我们来看一个机器学习里的基本概念“learnt”与“forget”。

learnt与forget

如果一个样本被模型"learnt":代表该样本能够被模型正确分类。接着,本文定义了一个十分有意思的概念,叫做"forgetting event":即样本在某个时间点 t 被"learnt",然后在之后的一个时间点 t' 被错误分类了,其中 t' > t,这样的一个事件称之为 "forgetting event" 。相反,如果一些样本,它一旦被 "learnt" 之后,再也没有被忘记过,那么我们称该样本为 "unforgettable examples"

举个例子,它就像小孩在学习记单词一样,对于单词 "apple",如果这个小孩能认出它是"苹果",这说明这个单词被 "learnt";小孩又陆陆续续的记了很多其它的单词,当他再一次遇到单词"apple"的时候,如果此时小孩觉得该单词的意思是"梨子",那么说明,这个单词被小孩遗忘了,这个事件称之为 "forgetting event"。对于一些简单的单词例如"car",被小孩学会后再也没有被遗忘过,那么这些单词我们称之为 "unforgettable examples"

那么,对于神经网络,在学习样本的时候,哪些样本会被容易 "learnt",哪些样本容易被模型遗忘,哪些样本又会是 "unforgettable examples" 呢?

文章给出了三个非常重要且有指导性的结论:

  • CIFAR10、CIFAR100这类的数据集中存在着大量的 "unforgettable examples"。即这些样本一旦被模型学会将不再遗忘,并且这一现象与随机种子的设置以及不同模型结构的选择无关。

  • 具有噪声标记的样本往往是"most forgettable examples",这一点有利于我们去识别噪声样本。

  • 如果把很大一部分"least forgettable examples"丢掉,用剩下的样本进行训练,在测试集上仍然具有极具竞争力的性能。

重要的,是那些训练中被多次遗忘的样本

首先来看第一个结论,上图分别代表在三个不同数据集上的结果。可以看出,"forgetting event" 为 0 的样本数占绝大多数,也就是说,绝大部分样本一旦被模型学会了,就不会再被遗忘

重要的,是那些训练中被多次遗忘的样本

第二个结论,如上图所示,代表 "forgetting event" 在两种样本上的分布。左边的图红色是噪声样本,绿色是干净样本。右边的图代表同一批样本在加噪声前(蓝色)和在加噪声后(红色)的分布情况。其实两者是从两个不同的方面来刻画噪声样本和干净样本对 "forgetting event" 的分布差异。可以明显看出,噪声样本的分布(红色)比较靠右,也就是说,噪声样本容易被模型忘记,当然这一结论也很符合认知。

重要的,是那些训练中被多次遗忘的样本

第三个结论更有意思!首先两个图的纵坐标都是测试集上的准确率。左边的图的横坐标为训练集被移除的百分比,右边图的横坐标为被移除样本的 "forgetting event" 的平均数。

首先来看左边这个图,红、绿、蓝线分别代表不移除、有选择性的移除以及随机移除样本,其中有选择性的移除是指优先移除掉 "forgetting event" 小的样本。换句话来说,首先把那些 "unforgettable examples" 的简单样本从训练集中拿掉,然后再慢慢拿掉一些遗忘次数较少的样本,可以看出在有选择性的拿掉 20%-30% 的样本时,模型的性能竟丝毫没有下降,后续就算性能下降了也会比随机的拿掉要好。右边这个图也有类似的结果和结论。

这个实验主要想说明一个问题,那就是重要的样本,往往是那些被遗忘次数多的样本。换句话说,对于学习一个有效的分类模型,我们只需要关注那些遗忘次数多的样本就够了

重要的,是那些训练中被多次遗忘的样本

接着,我们来看看 "unforgettable and forgettable examples" 有怎样的区别。很显然也很容易想到,就是不容易被遗忘的那些样本往往是一些简单样本,其目标清楚、明显且背景简单单一;而那些容易被忘记的样本往往是一些难样本,其背景复杂且目标不清楚、不完整等等。

总结

首先,难样本和噪声样本都容易被模型忘记。再看结论3,把绝大部分"unforgettable"样本丢掉,发现性能基本没掉。说明 "unforgettable"的样本其实对训练模型没啥帮助,有就行了,多没用!换句话说,只需要难样本就行了,但是呢,噪声样本也往往是 "most forgettabel"的,然后我又不想要噪声样本,这就有矛盾了,也能带来很多思考了。欢迎大家在评论区分享你的想法!

 

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享