3.1.4 语言特征选择
在明确了特征表示以后,如何学习文本任务中的语义信息呢?这就需要构建有深度有层次的特征表示模型,通过选取有效的语言特征进行表示学习。在表示学习方面,传统机器学习和深度神经网络学习思路并不一致。
传统机器学习要进行特征选择。特征选择就是要选择那些最能表征文本含义的组合特征,降低特征空间维数,减小计算复杂度,有助于文本任务计算性能的改善。文本特征选择流程主要包括特征产生、特征评价和验证。特征选择的方法有很多,常用的方法包括过滤法、封装法和嵌入法[3]。其中,过滤法忽略算法偏好,对特征与目标函数的相关性、一致性进行评价,然后过滤筛选,计算速度较快;封装法将算法偏好与特征选择紧密结合,利用机器学习算法评估特征子集,将特征子集的搜索与评估指标结合起来,但是当样本特征较多时计算复杂度显著增加;嵌入法将特征选择嵌入到模型的构建中,弥补了上述两种方法的不足[4],但是需要人工设计嵌入逻辑,泛化性不高。很多时候语言特征选择不容易与机器学习方法偏好融合,所以过滤法相关的评估方法比较常用。选取较强的特征,摒弃弱特征,或尝试组合特征构造新特征。常用的特征选择评估函数包括TF-IDF、卡方()校验(Chisquare, CHI)、信息增益(Information Grain,IG)和互信息(Mutual Information,MI)等。除了运用评估函数外,还可以对原始特征进行降维变换,形成新的特征来完成特征选择。
1.评估函数筛选
特征选择基本思路是根据文本数据特征分布的统计情况,采用一些评估函数对各维特征进行加权排序,从中选择权值高的特征项,因此文本特征评估函数的选择非常重要。下面将对一些常见的评估函数进行介绍。
(1)词频-逆向文档频率
词频-逆向文档频率(TF-IDF)方法是词特征权重计算的经典方法。词频(Term Frequ-ency, TF)定义某个词组在文档中出现的次数与文档总词数的比值。计算如式(3.1)所示,此处对不同文档长度进行了归一化处理。
文档频率(Document Frequency,DF)定义为包含某词组的文档篇数与整个文档集合总篇数的比值,表示词组出现在文档中的频率。由信息论可知,某些词组虽然出现频率较低,但却含有较丰富的信息,或相对集中于某些类别中,滤除这类词组会使分类信息受到损失。与文档频率相对应的是逆向文档频率(Inverse Document Frequency, IDF),它的计算如式(3.2)所示,可以看出IDF与DF是一个相反的关系。如果一个词组越常见,那么分母越大,IDF值越接近0,说明该词组不那么重要。IDF表征了一个词组区分文档的能力,一个词组出现的文本频数越小,它区分类别文本的能力就越大。
式中分母加1是为了避免有部分新词没有在语料库中出现过,而使分母为0的情况出现。
TF-IDF权重定义为TF值与IDF值的乘积,它反映了某一词组的重要程度与其在文档内的词频成正比,与其在所有文档中的文档频率成反比。TF-IDF值越大,说明该词组在文档中就很有代表性,特征权重高。然而,TF-IDF也存在几个显著缺点:①没有考虑特征在类间的分布情况,忽视了不常见特征的长尾分布;②与DF类似,也会忽略某些重要的低频词;③没有给出单词的位置信息。
(2)卡方校验
卡方()校验也是一种检验特征和类别之间统计独立关系的方法,统计量是一个归一化的值,其基本思想是通过检验实际值与理论值的偏差来衡量特征和类别之间的独立性,比如计算特征词组与文本重要性类别之间的相关性,相关性越大越可能是有效特征,否则将其作为无效特征被抛弃掉。
卡方校验的具体做法如下:假设词组tk与类别ci服从具有一阶自由度(简单起见)的卡方分布,那么参考如下步骤。
①原假设:假设tk与ci相互独立;
②计算实际测量值(观察值)与“两者独立”情况下理论值之间的偏差程度;
③若偏差足够小,就认为误差属于自然样本误差,是测量不精确导致或属于偶然现象,此时接受原假设,认定二者相互独立;
④若偏差大到某一阈值,误差不太可能是由于测量不精确或是偶然现象导致的,此时否定原假设,接受候选假设,认定二者不是相互独立的,即二者相关。
⑤结论就是,tk对于ci的统计量越高,表明tk与ci的关联度愈大,反之则较少。
如表3-1所示,a表示属于类别ci且包含词组tk的文档数,b表示不属于类别ci但包含词组tk的文档数,c表示属于类别ci但不包含词组tk的文档数,d表示不属于类别ci也不包含词组tk的文档数,训练集中文档总数用N表示。那么词组tk和类别ci的统计量为
卡方校验对存在类别交叉的文本进行分类时,性能优于其他分类方法。然而,卡方校验仅统计了出现词组tk的文档数,而没有统计具体一篇文档中词组出现的次数,会偏袒低频词,即“低频词缺陷”问题。因此,使用卡方校验通常需要综合词频等方法来取长补短。
表3-1 卡方校验分类示例
(3)信息量计算
除了上述评估角度,还可以从信息论的角度来评估特征。一种方式是使用信息增益(Information Gain,IG)来衡量一个特征带来信息量的多少,信息量越多说明该特征越重要。在文本特征的选择中,假设信息增益是针对词组而言的,那么词组在文本中出现或不出现时信息量的差值被定义为该词组的信息量(增益)。其中,信息量由信息熵来表示(参考附录A中信息熵详细说明)。
假设{c1, c2, cm},为包含m个类别的集合,词组tk的信息增益定义为:
其中,P(ci)为类别ci在训练集中的概率;P(tk)和分别为词组tk在训练集中出现和不出现的概率;P(ci|tk)为tk出现时,类别ci出现的概率;P(ci|)为tk不出现时,类别ci出现的概率。通过设定一定的阈值,将低于阈值的特征滤除。
此外,互信息(Mutual Information,MI)也是基于信息论的一种特征权重计算方法,基于统计值度量特征与类别之间的独立关系。它的基本思想是,在某个特定类别的出现频率高而在其他类别的出现频率低的特征,与该特定类别的互信息较大。在信息增益基础上,词组tk和类别ci的互信息越大,那么tk和ci越可能同时出现。假设a, b, c, d的含义与表3-1一致,那么词组tk和类别ci的互信息计算如下:
从公式可以看出,互信息取范围大,对边缘概率密度很敏感,在相同条件概率的情况下,样本集中出现概率低的特征往往具有很高的互信息,这种现象被称为“低频词强依赖”。这类词组很可能是错误的单词或分词系统切分错误的词语,需要关注。由于互信息的方法不需要对词组和类别之间的性质作任何假设,因此普遍认为该方法适用于文本特征选择。
与信息增益类似,交叉熵(Cross Entropy,CE)也被用来度量一个特征词组对分类性能的影响,计算如下:
对比公式(3.5)和(3.6)可知,交叉熵越大,表明特征对文本类别分布的影响也越大。
上述信息增益、互信息和交叉熵三种方法各有优劣,比如,信息增益的定义过于复杂,从特征词组是否发生来考虑,交叉熵不考虑词组未发生的情况,它的效果要优于信息增益。但是交叉嫡从全部类别中抽取特征词,与全部类别分布有关。而互信息从不同类别中分别抽取特征词,因此互信息的效果又要优于交叉嫡,但是互信息容易倾向稀有词组,也就是低频词强依赖现象。此外,一些其他评估函数,比如二次信息熵(QEMI)、文本证据权(Weight of Evidence Text,WET)、概率比(Odds Ratio,OR)、遗传算法(Genetic Algorithm)、模拟退火算法(Simulating Anneal)等,也在尝试寻找更合理的评估函数。但是目前并没有一个公认的“银弹级”方法,本书不再赘述。
特征选择方法通常采用以上特征评估函数进行特征权重计算。但是由于这些评估函数都需要进行统计计算,因此这些方法的一个缺点是需要一个庞大的样本数据集。另外,基于评估函数的特征提取方法是建立在假设特征独立的基础上,然而在实际应用中这个假设很难成立。
2.映射变换筛选
考虑到自然语言文本特征的高维性(前面3.1.3节提到的高维向量空间中的文本表示),很多时候需要通过映射或变换的方式,将原高维空间的数据映射到低维的空间中,实现特征选择。映射变换过程需要学习一个映射函数f:x→y,其中x是原始数据的向量表达,y是数据点映射后的低维向量表达,通常y的维度小于x的维度。映射变换方法直观、便于可视化,利于有效信息的提取。这个过程一般通过流形学习(Manifold Learning)完成,利用流形曲面拟合分布较均匀且较稠密的特征。也就是说,从高维空间中实现数据采样,并获得数据分布中的低维流形结构,从而选择有效特征。目前,映射变换主要包括基于流形学习的线性映射和非线性映射两大类方法。
(1)线性映射
线性映射的代表方法包括主成分分析(Principal Component Analysis,PCA)、线性判别分析。主成分分析是最常用的线性降维方法,其基本思路是通过某种线性投影,将高维数据在低维空间各个方向上投影,不同方向投影的特征值(Eigenvalue)和特征向量(Eigenvector)衡量了该方向的重要性。通过对数据集中原始特征进行线性组合提取彼此不相关的新特征,从而最大化保持数据的内在信息。由于主成分分析方法要求数据分布相同,具体计算过程如下:
①对数据去平均值,进行中心化和标准化;
②计算协方差矩阵,表征变量之间的相关程度(维度间的关系);
③获得协方差矩阵的特征值和特征向量,即获得特征值排序topN个值对应特征向量;
④数据变换到上述topN特征向量组成的特征空间中,从而实现降维。
主成分分析方法将所有的特征向量集合作为一个整体对待,寻找一个均方误差最小意义下的最优线性映射投影,但是忽略了数据中本来具有的类别属性信息。
线性判别分析是一种有监督的线性降维算法,该方法的目标不是保持数据的信息最多,而是希望数据在降维后能够很容易地被分类,从而获得了不相关的特征组合。基本思路如下:
①将数据向线性判别超平面的法向量上进行投影。
②使类别间样本点数据分布间隔尽可能大,而类别内样本点数据分布的方差尽可能小。
③原始特征的线性组合权重大小可以理解为每一个预测变量对样本分类贡献程度的大小,故具有一定的解释性。
上述分析过程中,涉及协方差矩阵的求逆运算,因此样本量要大于分类个数,且预测变量之间必须是相互独立的。此外,这类方法不适合对非高斯分布的样本进行降维。在某些情况下,对于一些文本的高维特征,线性映射方法往往无法有效地抽取,因此非线性映射方法受到更普遍的关注。
(2)非线性映射
非线性映射方法的代表方法主要包括基于核的非线性降维方法和流形学习等。基于核的非线性降维方法主要包括基于核的主成分分析(Kernel PCA,KPCA)和基于核的Fisher判别分析(Kernel Fisher Discrminate Analysis,KFDA)等。其中,KPCA的基本思想是将非线性可分的数据转换到一个适合线性分类的新的低维子空间,其基本流程如下:
①把样本矩阵非线性映射到一个高维空间。
②通过核技巧(Kernel Trick)进行主成分分析降维,映射到另一个低维空间。
③通过线性分类器进行特征划分。
基于核的非线性降维依赖核的选择,不同的核函数对降维效果影响较大。目前常用的非线性映射方法包括多维尺度分析(Multidimensional Scaling, MDS)、等距特征映射(Isometric Mapping, ISOMap)、t分布随机近邻嵌入(t-distributed stochastic neighbor embedding,t-SNE)、拉普拉斯特征映射(Laplacian Eigenmaps, LE)和局部线性嵌入(Locally Linear Embedding, LLE)。
多维尺度分析构建高维向量的欧氏距离矩阵,通过欧式距离计算评估两两特征间的相似度,然后再评估降维映射后的向量相似度,进而划分特征。但是欧式距离计算在很多高维问题中并不适用。
等距特征映射是一种非迭代的全局优化算法,它用曲线距离作为空间中两点的距离,代替多维尺度分析中的欧式距离,从而将位于某维流形上的数据映射到一个欧氏空间。具体过程是将数据点连接起来构成一个邻接图(Graph),以离散近似原来的流形,通过图上的最短路径来近似曲线距离。等距特征映射适合于内部平坦的低维流形,不适合有较大内在曲率的流形结构。
局部线性嵌入是用局部线性来反映全局的非线性,关注降维的同时,保持样本局部的线性特征,其过程主要分为三步:
①求K近邻。
②对每个样本求它在邻域里的K个近邻的线性关系,得到线性关系权重系数W。
③使用权重系数在低维空间重构样本数据。
局部线性嵌入方法实现简单,通过有限局部样本的互线性表示构造权重矩阵,在低维空间找到满足高维时样本间流形结构权重需要的样本集,但是该方法对数据本身的流形分布也有严格要求。综上,各类流形学习方法都存在优缺点,需要根据文本特征选择的实际情况选择映射变换的方法。
3.深层特征选择
传统特征表示学习需要设计并选择有效特征及特征组合,然后再完成面向任务的模型训练和预测。如果依靠前述评估函数和映射变换来进行特征选择,那么特征表示层次性、多层特征学习、特征选择都成为难题。随着神经网络结构的研究,人们发现用一定“深度”的模型可以有效学习从基本特征到高层特征的多层次特征,而不需要复杂的人工特征工程。引入深度学习,利用网络结构级联,摸索最佳模型组件拼接方式,也能够自动增加对文本的多层次结构表示学习能力,因此成为目前自然语言理解领域的研究热点。此外,在一些复杂任务中,传统机器学习不仅需要对不同任务进行人为设计特征表示,还要分阶段学习,每个阶段的错误对最终模型效果都有影响。而深度学习可以端到端的训练,直接对最终模型的目标函数进行优化,不需要对中间各阶段人为干预,最后表示学习的效果较传统机器学习方法有明显提升。因此,通过深层模型选择语言特征,也成为当下的研究热点。