山西省2022一级注册消防工程师何时发证?
山西省2022年高指度一级消防工程师考试合格人瞎圆员正在资格复核中(2023年5月31日-6月12日),资格复核结束后一般一个磨念塌月内公布证书领取通知,
基于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=yb_count+1) ybbh=1;
ybbh=rand.Next(1,yb_count+1);
comm2.CommandText = select * from gyhVIEW
where 样本编号=+ ’ + ybbh + ’ ;
dr1 = comm2.ExecuteReader();
if (dr1.Read())
{for (i = 0;i = 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浏览器用户请先下载安装 原版全文