基于BP算法确定题库试题分值的研究

时间:2022-10-06 11:57:25

【前言】基于BP算法确定题库试题分值的研究由文秘帮小编整理而成,但愿对你的学习工作带来帮助。1 基本原理和方法 利用已知样本对BP网络进行训练,使其获得专家经验和对确定试题分值的认识,当对新的样本进行处理时,该网络模拟人的思维并再现专家知识经验,达到客观地确定试题分值的目的,具体步骤是: ① 提取确定试题分值的参数,量化处理为(0,1)内的精确值...

基于BP算法确定题库试题分值的研究

摘 要:本文将BP(Back Propagation)神经网络应用到题库试题分值的确定中,以解决目前智能组卷研究中题库试题分值确定的不合理性。在训练网络时,对标准BP算法作了相应改进,以适应该智能模型的建立。通过案例试验,验证了确定试题分值的智能模型的精度是符合实际要求的,在一定程度上为智能化组卷奠定了基础。

关键词:BP算法 题库 试题分值

引言

题库是保证考试题目具有较高质量、更好地达到教育测量目标的重要手段。随着计算机及网络技术,特别是人工智能技术在现代教育中的推广及应用,教育领域对电子测评有了很大的重视,更多地关注题库建设及智能组卷的研发。

目前,市面上已出现了各种各样的题库系统。实际上题库建设仍缺乏科学理论指导,尤其是在试题参数确定上,主观因素影响很大,使题库系统不能很好地实现预期的目标。例如,试题分值的确定一直没有一个很好的解决方案。传统的做法是采用难度赋分法和时间赋分法[1],而没有考虑其它因素的影响,如知识点数、知识点的重要程度等。考虑到试题分值与影响试题分值的参数之间的高度非线性关系,本文利用BP神经网络所具备的模拟人的思维、非线性变换和自学等功能来构建试题分值智能确定模型,以克服传统做法中各种随机性和主观性对分值的影响。

1 基本原理和方法

利用已知样本对BP网络进行训练,使其获得专家经验和对确定试题分值的认识,当对新的样本进行处理时,该网络模拟人的思维并再现专家知识经验,达到客观地确定试题分值的目的,具体步骤是:

① 提取确定试题分值的参数,量化处理为(0,1)内的精确值作为网络输入。

② 利用已有的专家知识库(样本库),通过BP算法对网络进行训练,通过对网络参数及算法参数的调整得到稳定的网络参数――分数确定模型。为了能在实际应用中保证可接受的计算精度,我们在训练网络时,使它在更高的精度下收敛。

③ 输入需要确定分值的相关试题参数,网络根据自学获得的专家知识经验对输入值进行处理,然后输出(0,1)的值作为最终结果(该试题的分值)。

2 分值确定的BP神经网络结构

本文分析总结出影响题库试题分值得7个参数(BP网络的输入向量),作为对该领域问题的首次研究,为了获得足够多的有代表性的训练样本,本文限制参数“题型”的取值为:1、2、3和4,分别代表单选题、多选题、判断改错题和填空题。根据考试理论、命题设计理论,属于这几类题型的每道试题所考察的知识点一般不超过3个,而且最适合考查识记、理解和应用三个认知水平。所以本文亦限制参数“知识点数”取[1,3]之间的整数,同时限制参数“认知层次”的取值为:1、2和3,分别代表识记、理解和应用。从而缩小了样本空间。7个参数的取值见表1。

在神经网络的应用中,网络结构的选择很重要,好的网络结构可以减少网络训练次数,提高网络学习精度。[2]隐含层数越多,神经网络学习速度就越慢,根据Kosmogorov定理,在合理的结构和恰当的权值条件下,3层BP神经网络可以逼近任意的连续函数,因此,我们选取了3层BP网络结构,如图1所示。

图1

其中,输入层节点数目n由影响试题分值参数个数确定,这里n=7,由于输出结果为一个试题分值,故输出节点数为m=1;在总结大量网络结构的基础上,得出隐含层神经元数目的经验公式为

由此本文初步确定隐含层的神经元数目为s=5。在实验仿真时,我们将动态调整隐含层的神经元数目,以获得网络

3 调整BP算法

3.1 动态调整隐含层单元数目和学习步长

如上所述,初步确定隐含层神经元数目为5,然后,通过人机交互,增加或减少隐含层神经元数目,分析比较全局误差的震荡程度、误差递减程度、误差稳定后的网络精确程度及网络的收敛性能,从而确定隐含层神经元数目。本文训练网络时既没有采用固定步长,也没有采用自适应调整步长的方法,而是采用人机交互动态调整的方法,笔者认为这样虽然麻烦,但对步长的调整是更智能的。

3.2 选择模式对的方法及全局误差的计算

本文将所有的样本都存储在数据库中,并把2/3的样本作为训练样本,在选择模式对时,从训练样本的第一条记录开始一直到最后一条,如此循环。经过反复实验,验证了这种方法比随机选择的方法更加有效,表现为网络误差递减明显,基本不存在震荡。通过分析,笔者认为,在随机选择方法中,由于随机性,不能保证所有的代表性样本都被选中,使得样本不再代表整体,失去了样本的意义,致使误差递减缓慢,震荡明显,训练不得收敛。采用下式计算全局误差:

其中,fp是输出层的实际输出,y是期望输出,M为训练样本总数,E是全局误差,N为正整数,该值的选择要合理,否则会使网络进入局部极小值,或者误差递减缓慢,震荡明显,训练难于收敛。

4 题库试题分值确定实例及分析

4.1 样本的选取

样本应很好地代表整体,这就要求必须有足够训练样本,否则样本只能代表整体中的某一部分,这样即使网络训练到了很高的精度,当实际应用时会发现网络误差有时变得很大,根本无法使用。根据这一原则及确定试题分值得参数个数和每一参数的取值,我们至少需要22500个训练样本。考虑到获取样本的难度及分值确定所需要的实际精度,本文从我们正在研发的《计算机文化基础》课程的智能题库中提取了具有高度代表性800个训练样本和400个试验样本,由于题库中的试题的难度、区分度等参数是经过测试得到的,所以是比较可信的,答题时间及分值根据经验人为估算而得。为了提高网络精度,我们又组织了一个专门小组(三位相关专业的教授和7位信息技术教学论专业的硕士研究生)对1200个样本的估计答题时间及分值进行了比较严密的估算,估算值精确到0.1。估算方法是十位小组成员分别对每个样本的答题时间及分值估算,然后去掉一个最高分和一个最低分,把剩下的八个估算值计算加权平均值,所得的值即为最后的答题时间或分值。

4.2 样本归一化处理

为了使归一化处理的结果尽可能均匀分布在[0,1]之间,本文采用了如下式所示的归一化方法:

4.3 确定训练网络的精度

在实际中,我们通常以0.5的整数倍作为某一试题的分值,所以如果得到的BP网络模型能精确到0.1就可以了,然后根据类四舍五入的方法把它处理为0.5的整数倍的一个值。当结果的小数部分小于0.25时,则舍掉,当介于[0.25,0.75],则处理为0.5,大于等于0.75,则向整数进1。这是符合实际要求的。然而,经训练达到某一精度的网络在实际应用时,其误差总是围绕某固定值上下波动。特别是当样本的代表性较差时,更是如此。为此,我们在训练样本时,将网络的全局误差设置得比实际要求的更小。本研究将其设为10-5。

4.4 网络训练过程

本研究在网络训练时,隐含层单元数动态调整,以得到更合适的隐含层单元数目。没有采用动量项(经试验,没有动量项效果更好),步长动态调整,将其初值设为1,然后根据误差递减情况以0.05的幅度在[0,1]之间调整。循环选择800个训练样本对网络进行训练,每循环m次计算一次全局误差,每循环n(n为m的整数倍)次观察记录一次误差变化情况,通过分析比较决定步长调整方向。训练网络的主要程序代码(c#)如下:

button3_Click(object sender,EventArgs e)

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

{h_num= int.Parse(textBox1.Text.ToString());

//动态指定隐含层单元数

wj=new double[h_num];//输出-隐含权值

wij=new double[7,h_num];//隐含-输入权值

hvj=new double[h_num];//隐含层阈值

int i,j;

netj=new double[h_num];//隐含层输入向量

xi=new double[7];//输入层输入向量

comm2=conn1.CreateCommand();

hoj=new double[h_num];//隐含层输出向量

ej=new double[h_num];//隐含层的一般误差

//初始化权值、阈值、步长及动量系数

a=double.Parse(textBox2.Text.ToString());

//初始化输出节点阈值

double e1=0.00001,E1=e1+1,E2=0;

int count=0,count1=0;

for(i=0;i

{for(j=0;j

{hvj[j]=rand.Next(-100,100)*0.01;

wj[j]=rand.Next(-100,100)*0.01;

wij[i,j]=rand.Next(-100,100)*0.01;

}

}

//计算隐含层输

mandText = " select count(*) from gyhVIEW" ;

yb_count = (int)comm1.ExecuteScalar();

yb_count = yb_count * 2 / 3;ybbh = 0;

while(e1

{if(count

ybbh+=1;

if(ybbh>=yb_count+1) ybbh=1;

ybbh=rand.Next(1,yb_count+1);

mandText = "select * from gyhVIEW

where 样本编号="+ " ’" + ybbh + " ’" ;

dr1 = comm2.ExecuteReader();

if (dr1.Read())

{for (i = 0;i < 7;i++)

xi[i] = double.Parse(dr1[i + 1].ToString());

yt= double.Parse(dr1[" y" ].ToString());}

dr1.Close();

//计算隐含层输入和输出

for(j= 0;j < h_num;j++)

{netj[j] = 0;

for(i = 0;i < 7;i++)

netj[j]+= wij[i,j] * xi[i];

netj[j] -= hvj[j];}

for (j = 0;j < h_num;j++)

hoj[j]=1/(1+ Math.Exp(-netj[j]));

//计算输出层的输入和输出

net=0;

for(j=0;j

net+=wj[j]*hoj[j];net-=ov;

yp=1/(1+Math.Exp(-net));

//计算输出层和隐含层的一般误差

d=(yt - yp) * yp * (1 - yp);

for (j = 0;j < h_num;j++)

ej[j] = wj[j] * d * hoj[j]*(1 - hoj[j]);

//修正wj和ov

for (j = 0;j < h_num;j++)

wj[j]= wj[j]+p * d * hoj[j];

ov = ov+n * d;

//修正wji和hovj

for (j = 0;j < h_num;j++)

{ for (i = 0;i < 7;i++)

wij[i,j]=wij[i,j] + a * ej[j] * xi[i];

hoj[j]=hoj[j] +ej[j] * u;}

E2 += Math.Pow((yt - yp),2);count += 1;

if (count >= 3*yb_count)

{ E1 = E2 /3*yb_count;count = 0;count1 += 1;

if (count1 >= 1000)

{if (MessageBox.Show(E1.ToString() + " a="+ a.ToString() + "减小步长?","提示信息",

MessageBoxButtons.OKCancel,

MessageBoxIcon.Question) == DialogResult.OK)

{ a -= 0.05;}

if (MessageBox.Show(E1.ToString() + "增加步长?","提示信息",

MessageBoxButtons.OKCancel,

MessageBoxIcon.Question) == DialogResult.OK)

{ a += 0.05;} count1 = 0;}}}

通过反复训练和比较分析,最后将网络隐含层单元数目确定为6,每循环3次计算一次全局误差,次每循环3000次观察记录一次误差变化情况,学习步长从1调整到0.65,最后在0.65时收敛。共训练了1128万次。模型稳定后,输入层与隐含层的连接权值如图3所示(其中i表示输入层单元序号,wij表示输入层单元i与隐含层单元j的连接权值),隐含层与输出层的连接权值及隐含层阈值如图4所示(其中j表示隐含层单元序号),输出层阈值为-33.05475。

观察分析网络模型的测试误差,基本都小于0.005,最小值为0.0001399517,最大值为0.01044011,完全满足题库试题分值确定所要求的精度(0.1),符合实际用需求。

结束语

本文将BP神经网络应用到题库试题分值的确定中,为题库试题分值得确定提供了一种可行的方法。在应用BP算法时,动态调整隐含层单元数目,动态调整学习步长,采用循环选择训练样本的模式对选择方法,经过特定次数的循环训练后计算一次全局误差。所有这些均源于本模型的准确建构。另外,如果训练样本能够很好地代表整体,用这种方法将能建立精度更高的确定试题分值的智能模型。

参考文献:

[1]胡中锋,李方.教育测量与评价[M].广东高等教育出版社,2003.7.

[2]Hadi,MuhammadN.S.Neuralnetworks applications in concrete structures. Computers and Structures Volume:81,Issue:6,March,2003,pp.373-381.

[3]姜华,赵洁.基于bp神经网络的学习行为评价模型及实现[J].计算机应用与软件,2005.22,(8):89-91.

[4]戴永伟,雷志勇.BP网络学习算法研究及其图像识别应用[J].计算机与现代化,2006.11:68-70.

[5]宋乃华,邢清华.一种新的基于粒群优化的BP网络学习算法[J].计算机工程,2006.14:181-183.

基金项目:全国教育科学“十一五”规划教育考试学研究重点课题项目(2006JKS3017);山西省教育科学“十一五”规划课题(GH-06106)。

注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

上一篇:古文今译的标准与原则例谈 下一篇:如何进行低年级说话训练