论文:Open-Category Classification by Adversarial Sample Generation

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-17 04:09   67   0

论文题目:Open-Category Classification by Adversarial Sample Generation

论文发表:IJCAI2017
Github:

摘要:在真实的分类场景中,很难收集到一个任务存在的所有的类别标签样本。一个鲁棒的分类器在遇到一个没有见过标签的样本时应该能够分辨出来,而不是将它归类于现有的已知的类别中。这是开放类别分类(Open-Category Classification),论文引入对抗学习的思想,提出ASG框架。通过对抗性学习策略以无监督的方式生成所见类别的正面和负面样本。使用生成的样本,在进行监督学习训练。

场景:对于分类这一典型的学习任务,一般隐含地假设数据是独立同分布的,不仅对于已有的训练数据而言,对于未见过的测试数据也是这样,但是实际场景中并不是这样。我们这里研究的是 open-category classification(OCC) 问题:在训练环节并没有出现任务中所有的类别情况,但是在测试环节中出现之前没有见过的类别时,常见的分类器会给出现有的预测类别(显然是不对的)。作为open environment的分类器,遇到这种情况时应该第一时间给出样本标签是否属于已知标签。论文中提到了几个与OOC下相似的研究方向:增量学习、rejection option、异常值检测、zero-shot learning。本文还提出了使用对抗学习来生成足够样本。

问题定义:OOC问题描述:训练集中有K个类别,测试集中除了这K个标签之外还有在训练集中未曾出现的标签。所以OOC 的目标是学习一个模型:,novel表示训练集中没有见过的标签。相应的目标函数变成了:

H是假设空间,err的定义为:

OOC问题最难的就是对于novel类别的信息量太少,文章的主要思想就是生成这些类别的样本,加入训练集,这样问题就变成了一个标准的监督学习问题:,接下来就是怎么生成novel类别的数据,第一下想到的就是生成对抗网络。

生成样本:文章已知标签样本和未知标签样本的生成方法。1.未知标签样本应该是可以通过判别器将之与一直样本区分开来的样本,但是这样的样本太多了,所以我们想要得到的未知标签样本应该是在已知标签样本和未知标签样本的分界线附近的样本,所以要求这些样本是接近已知标签样本但是可以被判别器区分的。对于每个已知类别K,D表示positive data,D-表示生成的negative data。判别器的目标函数:,为了生成分界线附近的样本,我们还需要一些约束:,这个约束项就是生成样本x与已知标签样本x‘的距离(欧氏距离)要尽可能小。接下来为了生成数据的多样性,还要对生成的样本之间加上一些约束,使得生成的样本尽可能不同:

,把判别的loss函数和两个约束项结合在一起就是最后的目标函数:,这是一个非凸的目标函数,文章也给出了对应的优化方法。2.对于已知标签样本较少的情况,还可以通过修改前面的目标函数生成已知标签样本。判别器的loss函数修改成:,惩罚项为:,可以得到最后的目标函数:

整体模型:判别器的选择很重要,判别器的学习能力太强的话生成的样本很容易就被判别器区分出来,但是如果判别器的学习能力太差,那分界线就会被变得模糊,好在OOC场景下并不像非监督学习一样没有数据,所以可以通过已有的数据来建立一个合适的判别器(fine-tuning超参数)。

算法的流程如下:1.在已有数据下生成一个判别器;2.每个类别生成一些negative样本,对于positive样本少的也可以生成一些正样本。3.在每个类别生成的数据集中,训练一个分类器(那么就是一共会有k个分类器)。在预测阶段,如果K个分类器都预测为负样本,那么这个样本就是属于novel类别的,否则就属于置信度最高的类别(不同分类器的置信度怎么比较?)。

实验结果:略。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP