深度神经网络在传统闭集分类任务上取得了很大的性能提升,然而其在开放集识别任务中仍面临巨大的挑战。在开放集识别任务中,未知样本(即未在训练类别中出现过的样本)会在测试阶段出现。这要求模型不仅能够准确分类已知样本(即所属类别在训练阶段出现过),同时还要准确区分已知样本和未知样本[1]。开放集识别本质上是一个图片类分类问题,其中图片为已知类个数,而所有未知样本均被视为额外的1类。开放集识别更贴近实际应用要求,例如在自动驾驶中,未知的物体和场景会不断出现;在医学图像分析中,未知的疾病类型也会不断出现。
相较于广阔的未知世界,人们所收集标注的训练样本仅能覆盖实际中有限的少数类别。利用有限的训练数据,大多模式识别方法很难在未知样本上具备可信的泛化能力。在CNN中,其SoftMax操作输出的后验概率常被用于检测输入样本是否为未知样本。然而,实验表明,即便对差异很大的未知样本,CNN仍以较大置信度将其错误地分到已知类别中。CNN出现这样错误主要归结于两大原因。一方面,CNN中SoftMax操作将样本属于已知类的后验概率归一化为1,而未给未知类预留一定的概率,故根据其输出的类后验概率很容易将未知样本错分为已知样本。另一方面,CNN为纯判别模型,其本质上对整个特征空间进行了划分并将所有的特征区域分配给了已知类,而未给未知类预留一定的特征空间,这也使得它难以处理未知样本。相对于判别模型,生成模型显式地刻画了已知类的特征分布。若一个样本特征在已知类分布下似然较低,则可将其判为未知样本。故生成模型更适用于检测未知样本。然而,生成模型对已知类样本的分类精度通常较差。在开放集识别任务中,将生成模型和判别模型结合是一重要趋势。
在CNN中,不同的开放集识别方法被相继提出,它们可大概被分为3大类:基于数据增广的方法、基于统计模型的方法、基于网络结构的方法。基于数据增广的方法通过收集或生成未知样本,直接训练一个图片类的分类器[2]。该方法较为直接,但收集或生成大量未知样本往往需要耗费大量的标注或计算代价。此外,增加的有限未知样本也很难体现真实而多变的未知世界。基于统计模型的方法对已知类特征或Logits进行统计建模,利用样本在模型下的似然度来判断样本是否为未知样本[3]。这类方法有很好的理论分析,且有不错的性能表现,是目前一类主流的开放集识别方法。但是,这类方法本质上是一种后处理的方式,在模型训练阶段并未将开放集识别任务考虑进去,而仍像传统闭集分类任务那样来训练模型。基于网络结构的方法通过利用特殊的网络结构,如Auto-encoder,Ladder Net,One-vs-rest层等来训练模型[4]。这类方法通常效果很好,但特殊的结构也限制了其在不同场景中的应用。在开放集识别任务中,大多数方法在性能、通用性、效率等方面仍与应用需求存在较大差距。