APP下载

一种新的分类受限玻尔兹曼机改进模型

2018-07-27李唯唯杨德红

小型微型计算机系统 2018年7期
关键词:错误率集上类别

尹 静,李唯唯,杨德红,闫 河

(重庆理工大学 计算机科学与工程学院,重庆 400054)

1 引 言

分类受限玻尔兹曼机(classification restricted boltzmann machine,ClassRBM)[1]是基于能量函数的无向图模型,它是一个自带标签的随机神经网络模型,用于解决分类问题.ClassRBM提出以后,受到了研究者的广泛关注[2-9],并将模型应用于各类应用中.[2]在分类受限玻尔兹曼机的网络模型中增加线性变换,用于机器学习中自动识别不变模式;[3]提出一种判别学习方法训练ClassRBM,其基本思想不再使用对数似然函数作为训练目标,而使用均方误差作为目标函数,采用随机梯度下降法进行优化;[4]在ClassRBM的标签层增加先验知识,提高不同类别之间的信息共享,减少分类冗余,从而提高了模型的分类性能;[5]提出一种使用ClassRBM构建可理解的信用评分模型用于风险评估;[6]使用ClassRBM预测乳腺癌复发及在疾病再现中发现相关症状;[7]指出如何正确设置ClassRBM的参数是研究者面临的主要问题之一,他们介绍了几种启发式技术来解决该问题;[8]利用ClassRBM对肝癌进行诊断;[9]直接利用ClassRBM对乳腺X光图像进行分类,其分类准确度比其他基于统计特征提权的医学图像分类方法要高.

ClassRBM的标签层采用一个神经元代表一个类别.因此,标签层的神经元个数与数据的类别数一致.标签层神经元总是稀疏的,而且每个神经元仅能为模型参数提供很少的信息,这可能会导致过拟合[1].为了解决该问题,本文提出了一种基于分类受限玻尔兹曼机的改进模型,用K个神经元表示一个类别,目的是为模型参数提供更多的信息,从而提高模型的分类性能.提出的模型在标准数字手写体数据集MNIST、字母手写体数据集OCR letters和文档数据集20Newsgroups上进行了实验,实验结果表明我们的改进模型比ClassRBM有更好的分类性能;且改进模型在MNIST数据集上优于Random Forest,在OCR letters数据集上优于模型K-NN,在20Newsgroups数据集上优于模型SVM、Random Forest、RBM+NNet.

2 分类受限玻尔兹曼机

分类受限玻尔兹曼机可以看作是一个具有三层结构的随机神经网络模型.第一层是可见层,由|V|个神经元组成用以表示输入数据v;第二层是隐层,由|H|个神经元组成用以表示数据的表达h;第三层是标签层,代表输入数据的标签y,其中y∈{1,2,…,C}.其网络结构如图1所示.可见层与隐层之间的全连接权重用W表示,标签层和隐层之间的全连接权重用U表示,每层各神经元之间没有连接.

图1 基本的ClassRBM模型Fig.1 Classification restricted boltzmann machine

为了表述简洁,本文仅考虑模型采用二值单元的情况,当然也可以采用高斯单元、多项式单元、可矫正线性单元等[12].带有标签的二值ClassRBM的联合概率分布有如下形式:

(1)

其中,Ζ(θ)=∑y,v,he-E(y,v,h|θ),也称配分函数,以确保联合概率分布是有效的.E(y,v,h|θ)是能量函数,表示为:

(2)

其中,θ是实数型参数bi、cj、Wij、Utj和dt的集合.vi、hj∈{0,1},当且仅当标签为t时,yt=1,其他时候均为0.i∈{1,2,…,|V|},j∈{1,2,…,|H|}和t∈{1,2,…,C}.Wij是神经元vi和hj之间的连接权重,Utj是神经元yt和hj之间的连接权重,bi是第i个可见神经元的偏置,cj是第j个隐层神经元的偏置,而dt是第t个标签层神经元的偏置.

对于分类任务,需要计算后验概率p(yt|v),该条件概率有如下形式:

(3)

其中,softplus(x)=log(1+ex),t*代表输入数据的标签,t*∈{1,2,…,C}.

(4)

梯度的第一项比较容易计算,但第二项由于配分函数Ζ(θ)的存在,其计算复杂度很高.为了避免计算的复杂性,目前有多种算法对梯度进行近似计算,如:CD算法[13]、PCD算法[14]、PT算法[15]等.其中,CD算法是完成ClassRBM训练的常用算法.

ClassRBM模型中,W学到有标签信息的数据特征.执行分类任务时,ClassRBM通过U进行类别区分,从而确定数据的标签.因此,U是控制不同类别信息非常重要的参数.ClassRBM模型的标签层仅使用一个神经元表示某个具体类别,神经元总是稀疏的,而且单个神经元携带数据的类别信息是有限的,会影响分类效果.

3 基于ClassRBM的改进模型

3.1 改进模型描述

使用K个神经元表示某个具体类别,增加神经元携带的类别信息,从而提高分类精度.我们建立了一个除标签部分以外,其他与ClassRBM结构一样的分类模型(K-Classification Restricted Boltzmann Machine,K-ClassRBM).标签部分使用CK个神经元,每类使用连续的K个神经元.其网络结构如图2所示.如果数据的类别是t类,则神经元y1t,y2t,…,yKt取值1,剩余其他神经元取值0,t∈{1,2,…,C}.同样,W是可见层和隐层之间神经元的连接权重,U是标签层和隐层之间神经元的连接权重.

图2 含CK个标签神经元的ClassRBM模型(K-ClassRBM)Fig.2 Classification restricted boltzmann machine which has CK neurons in the label layer

带有标签的二值K-ClassRBM模型的能量函数有如下形式:

(5)

(6)

由于hj∈{0,1},故可得到hj=1的条件概率为:

(7)

(8)

给定隐层数据表达,类别t神经元对应的条件概率为:

(9)

当执行分类任务时,计算后验概率p(yt|v)推断数据的类标:

(10)

3.2 改进模型训练

θ=θ+εΔθ

(11)

其中,ε是学习率.模型参数梯度具体更新公式:

(12)

(13)

(14)

(15)

(16)

下面是K-ClassRBM的具体训练步骤:

参数更新:W=W+εΔW,U=U+εΔU,c=c+εΔc,

b=b+εΔb,d=d+εΔd,

不断执行positive、negative阶段,以及参数更新直到满足训练结束条件.

3.3 改进模型分析

改进模型在分类模型的基础上,增加了标签层的神经元数量,使神经元携带更多的类别信息.从3.2节的各个公式来看,改进模型的计算公式与分类模型的计算公式有一些区别,这些区别在于每类用K个标签神经元来标识.为了能更好地分析增加的神经元对模型参数的影响和对最终分类性能的改善,我们以参数U为例介绍改进模型参数的变化.ClassRBM的梯度有如下形式:

(17)

K-ClassRBM的梯度为:

(18)

4 实验及分析

为了验证K-ClassRBM通过在ClassRBM的标签层中增加一定数量的神经元后,分类性能有一定提升,我们在手写体字符识别和文档分类两个应用中进行实验,结果表明K-ClassRBM能提升ClassRBM的分类性能.

论文中实验的参数设置:K-ClassRBM的学习率ε、隐层数采用[10,11]相同的设置,即W、U初始值的取值范围为[-m-0.5,m-0.5],其中m是W或U中行数和列数中的最大值,且取值满足均匀分布的随机数,所有偏置初值均为0,隐层的个数同样在[500~6000]之间.在手写体字符识别和文档分类实验中,数据集分成训练数据集、验证数据集和测试数据集,训练阶段通过验证数据集观察模型在训练数据集上的学习情况,最终在数据测试集上进行测试.

4.1 手写体字符识别

我们在两个手写体字符数据集上验证K-ClassRBM的分类性能.标准的数字手写体数据集MNIST和字母手写体数据集OCR.这两个数据集均包含四个部分:训练数据集及它们的标签,测试数据集及它们的标签.标准MNIST数据集是手写的0到9的数字图片组成黑底白字的标准数据集.为了比较字符识别性能,实验不但采用了与[10,11]一样的参数设置,同样也将原始训练数据分成两部分:50000条数据组成训练集、10000条数据组成验证集;同时使用标准的测试数据10000条进行测试.字母手写体数据集OCR是手写的a到z的字母图片组成黑底白字的字符集.其中,原始训练数据中的32152条数据作为训练数据集,10000条数据组成验证集,测试数据集由10000条数据组成.

4.1.1 MNIST数据集上的识别性能比较

我们比较多个模型在MNIST数据集上的识别性能.分类结果见表1.由于模型参数的初值是随机的,和训练过程中的随机采样,为了保证实验结果的有效性,表格中K-ClassRBM模型的实验数据是经过10次实验的平均结果;ClassRBM和Random Forest的实验结果来自其他论文的实验数据[10,11].

表1 各模型在MNIST的分类错误率

Table 1 Classification error rates for the MNIST data set

ModelParametersErrorK⁃ClassRBM =0.005H=6000K=21.97%K=32.28%K=42.79%K=53.06%K=63.45%ClassRBM =0.005 H=60003.39%RandomForest2.94%

从表1的结果来看,ClassRBM仅用1位神经元标识数据类标,错误率为3.39%.K-ClassRBM用数量不同的神经元来标识数据类标,得到的分类错误率是不同的.其中,用两位神经元来标识数据类标得到了最小的错误率1.97%,随着K的不断增加,错误率逐渐增加,当K=6时,K-ClassRBM的错误率高于ClassRBM.因此,用于标识类标的神经元过多并不利于分类.当K超过4时,K-ClassRBM的分类效果会低于Random Forest的分类效果.

4.1.2 OCR数据集上的识别性能比较

我们在字母手写体数据集OCR上进行了识别性能比较实验.结果见表2.同样因为参数初始值的随机性及训练过程中的随机采样,我们重复10次实验,表格中的结果是10次实验的均值.K-ClassRBM模型的K值不同,得到的分类错误率也不同.其中,用三位神经元来标识数据类标得到了最小的错误率12.5%,随着K的不断增加,错误率逐渐增加,当K=8时,K-ClassRBM的错误率高于ClassRBM,但错误率低于K-NN.

表2 各模型在OCR的分类错误率

Table 2 Classification error rates for the OCR data set

ModelParametersErrorK⁃ClassRBM =0.005H=2000K=213.20%K=312.50%K=413.50%K=514.00%K=614.40%K=715.01%K=815.60%ClassRBM =0.005 H=200015.05%K⁃NN18.92%

4.2 文档分类

我们也评估K-ClassRBM模型在文档分类方面的性能.为了对比文档分类的效果,采用了与ClassRBM模型一样的数据集20Newsgroups,这个数据集包含了不同时期收集的新闻文档,因此数据集更能反映实际的应用.20Newsgroups数据集由11269条训练数据及标签,7505条测试数据及标签组成,共20类新闻.训练时,将原始训练数据分成两部分:9578条数据组成训练集和1691条数据组成验证集,同时使用标准的测试数据7505条进行测试.由于数据集包含的词比较多,我们仅选择了出现频率最大的5000个词作为输入数据的维度.分类效果见表3.同样,由于模型的参数初值是随机的,而且训练过程的随机采样,为了保证实验结果的有效性,表格中K-ClassRBM模型的实验数据是经过10次实验的平均结果.ClassRBM、SVM、RBM+NNet和Random Forest的实验结果直接应用其他论文的实验结果[10,11].

表3 各模型在20Newsgroups的分类错误率

Table 3 Classification error rates for the 20Newgroups data set

ModelParametersErrorK⁃ClassRBM =0.0005H=1000K=222.3%K=321.3%K=422.8%K=524.2%K=626.7%ClassRBM =0.0005 H=100024.9%SVM32.8%RBM+NNet26.8%RandomForest29.0%

表3的结果来看,当使用1位神经元标识数据类标时,ClassRBM在20 Newsgroups数据集上的错误率为24.9%.K-ClassRBM使用不同数量的神经元来标识数据类标,得到了不同的分类错误率.其中,用三位神经元来标识数据类标得到了最小的错误率21.3%,当K=6时,K-ClassRBM的错误率高于ClassRBM,但低于SVM、RBM+NNet和Random Forest.

5 讨 论

前面的实验证实了K-ClassRBM在不同数据集上的分类性能要优于ClassRBM.这部分从收敛速率和学到的数据特征来讨论K-ClassRBM和ClassRBM的差异.实验均在MNIST数据集上完成,参数设置与前面的实验相同.

图3 收敛速率比较图Fig.3 Comparisons of convergence rate

在相同硬件配置下运行整个MNIST数据集,模型收敛速率的比较结果见图3.其中横坐标表示迭代次数,纵坐标表示分类错误率.曲线分别显示了ClassRBM(K=1)和K-ClassRBM(K=2,3,4)在不同迭代次数下,分类错误率的降低情况.显然K-ClassRBM的收敛速率快于ClassRBM.

图4显示了K-ClassRBM和ClassRBM学到的数据特征.由于隐层神经元个数为6000,为了更直观的显示数据特征,我们以隐层中的三个神经元为准,显示模型学到的数据特征.

图4 模型学到的数据特征Fig.4 Filters learned by models

图4左边是ClassRBM学到的数据特征;右边是K-ClassRBM学到的数据特征(从上到下对应K=2,3,4).从图4显示的数据特征来看,K-ClassRBM 为区分数据类别学到了比ClassRBM更具体的特征.

6 结 论

对于分类问题,ClassRBM可以获得较好的分类效果.但模型标签层每个类别仅有一个神经元,它提供的模型参数信息太少,可能导致过拟合.K-ClassRBM在ClassRBM的标签层中用K位神经元来标识某一个类别,通过利用K位神经元为模型提供更多参数信息,以便更好的分类.为了验证改进模型的性能,分别在数据集MNIST、OCR和20Newsgroups上做了实验.实验结果表明K-ClassRBM能对ClassRBM的分类性能有一定的提升.将来需要在更多数据集或应用中进行运用K-ClassRBM,特别是在连续数据集中的应用.

猜你喜欢

错误率集上类别
关于短文本匹配的泛化性和迁移性的研究分析
论陶瓷刻划花艺术类别与特征
基于互信息的多级特征选择算法
一起去图书馆吧
小学生分数计算高错误率成因及对策
正视错误,寻求策略
解析小学高段学生英语单词抄写作业错误原因
师如明灯,清凉温润
降低学生计算错误率的有效策略
几道导数题引发的解题思考