本文共 1164 字,大约阅读时间需要 3 分钟。
作者:徐甘霖
单位:燕山大学
关于文本分类(Text Classification)及开放领域文本分类(Open-set Text Classification)的介绍,请见5月4日的文章,里面简单介绍了文本分类(包括开放领域文本分类)的概念及常用方法,在此不再赘述。作者的主要方法是在具有m个训练类别的数据上构建一个m+1个输出结果的分类器,其中“+1”的情况代表未知类别(unknow),使用改进的CNN构建分类器,结构如下所示:
本文中的CNN通过最大池化得到一个h维的特征向量,然后经过两个全连接层及其中间的ReLU激活函数将k维的特征向量h降维得到m维的特征向量d(m是已知类别的个数),公式如下:
与传统的CNN不同的是,本文使用1-vs-Rest Layer代替softmax作为输出层。1-vs-Rest Layer包含了m个sigmod函数的分类器,每个分类器代表的相应已知类别。对模型进行测试时,模型的输出m个相应的得分(sigmod(di)),作为每个测试输入是相应的已知类别di的概率。并且,为每个已知类别设置一个阈值,于是设置的方法的方法后面会提到,然后将输出结果的概率与阈值相比较,如果全部的概率均低于相应的阈值,则这个测试输入不是已知类别,而是采用拒绝机制,将其归为未知类别。反之,将输入测试归类为概率最高的已知类别中。算法流程如下:
传统的sigmod的默认阈值为0.5,这不并适合开放领域的动态性,变化性,也没有考虑到未知类别带来的开放空间风险(open space risk)。这时,需要为每个已知类别采用其他方法设置参数。文章的主要思想如下图所示:
positive(某个已知类别)与unseen(除了前一种已知类别的其他类别)形成一个在simod函数图像中形成一个“缺口”(gap),中间就是未知类别。。函数通常在设置每个已知类的阈值时,假设已知类的所有数据是高斯分布的一半数据点,然后手工创建另一半的数据点。第二步计算上述所有数据点的标准差。最后通过公式:ti= max(0.5,1−ασi)计算阈值ti,其中,α为人工参数。
文章中使用20 Newsgroups和50-class reviews两个开源数据集进行试验,并对两个数据集的训练集分别已25%,50%,75%,100%的比例训练模型,测试集全部参与测试评估,计算每个测试比例结果的F1值。并且与其他模型进行比较,试验结果如下:
其中,DOC是本文提出模型。DOC (t= 0.5)是采用本文提出的模型将所有已知类的阈值设置为0.5。试验结果较为清晰,可以看出在训练比例25%和50%时吗,DOC模型明显好于其他模型。而接近100%时,各种模型相差不大。
论文地址:
论文源码:
转载地址:http://mqmgi.baihongyu.com/