ELM-Chinese-Brief(极限学习机)
- 格式:pdf
- 大小:699.55 KB
- 文档页数:20
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import no.uib.cipr.matrix.DenseMatrix;import no.uib.cipr.matrix.DenseVector;import no.uib.cipr.matrix.Matrices;import no.uib.cipr.matrix.NotConvergedException;public class elm {private DenseMatrix train_set;private DenseMatrix test_set;private int numTrainData;private int numTestData;private DenseMatrix InputWeight;private float TrainingTime;private float TestingTime;private double TrainingAccuracy, TestingAccuracy;private int Elm_Type;private int NumberofHiddenNeurons;private int NumberofOutputNeurons;private int NumberofInputNeurons;private String func;private int []label;private DenseMatrix BiasofHiddenNeurons;private DenseMatrix OutputWeight;private DenseMatrix testP;private DenseMatrix testT;private DenseMatrix Y;private DenseMatrix T;public elm(int elm_type, int numberofHiddenNeurons, String ActivationFunction){Elm_Type = elm_type;NumberofHiddenNeurons = numberofHiddenNeurons;func = ActivationFunction;TrainingTime = 0;TestingTime = 0;TrainingAccuracy= 0;TestingAccuracy = 0;NumberofOutputNeurons = 1;}public elm(){}public DenseMatrix loadmatrix(String filename) throws IOException{BufferedReader reader = new BufferedReader(new FileReader(new File(filename)));String firstlineString = reader.readLine();String []strings = firstlineString.split(" ");int m = Integer.parseInt(strings[0]);int n = Integer.parseInt(strings[1]);if(strings.length > 2)NumberofOutputNeurons = Integer.parseInt(strings[2]);DenseMatrix matrix = new DenseMatrix(m, n);firstlineString = reader.readLine();int i = 0;while (i<m) {String []datatrings = firstlineString.split(" ");for (int j = 0; j < n; j++) {matrix.set(i, j,Double.parseDouble(datatrings[j]));}i++;firstlineString = reader.readLine();}return matrix;}public void train(String TrainingData_File) throws NotConvergedException{try {train_set = loadmatrix(TrainingData_File);} catch (IOException e) {e.printStackTrace();}train();}public void train(double [][]traindata) throws NotConvergedException{//classification require a the number of classtrain_set = new DenseMatrix(traindata);int m = train_set.numRows();if(Elm_Type == 1){double maxtag = traindata[0][0];for (int i = 0; i < m; i++) {if(traindata[i][0] > maxtag)maxtag = traindata[i][0];}NumberofOutputNeurons = (int)maxtag+1;}train();}private void train() throws NotConvergedException{numTrainData = train_set.numRows();NumberofInputNeurons = train_set.numColumns() - 1;InputWeight = (DenseMatrix)Matrices.random(NumberofHiddenNeurons, NumberofInputNeurons);DenseMatrix transT = new DenseMatrix(numTrainData, 1);DenseMatrix transP = new DenseMatrix(numTrainData, NumberofInputNeurons);for (int i = 0; i < numTrainData; i++) {transT.set(i, 0, train_set.get(i, 0));for (int j = 1; j <= NumberofInputNeurons; j++)transP.set(i, j-1, train_set.get(i, j));}T = new DenseMatrix(1,numTrainData);DenseMatrix P = newDenseMatrix(NumberofInputNeurons,numTrainData);transT.transpose(T);transP.transpose(P);if(Elm_Type != 0) //CLASSIFIER{label = new int[NumberofOutputNeurons];for (int i = 0; i < NumberofOutputNeurons; i++) {label[i] = i; }DenseMatrix tempT = newDenseMatrix(NumberofOutputNeurons,numTrainData);tempT.zero();for (int i = 0; i < numTrainData; i++){int j = 0;for (j = 0; j < NumberofOutputNeurons; j++){if (label[j] == T.get(0, i))break;}tempT.set(j, i, 1);}T = newDenseMatrix(NumberofOutputNeurons,numTrainData); //T=temp_T*2-1;for (int i = 0; i < NumberofOutputNeurons; i++){for (int j = 0; j < numTrainData; j++)T.set(i, j, tempT.get(i, j)*2-1);}transT = newDenseMatrix(numTrainData,NumberofOutputNeurons);T.transpose(transT);}long start_time_train = System.currentTimeMillis();BiasofHiddenNeurons = (DenseMatrix)Matrices.random(NumberofHiddenNeurons, 1);DenseMatrix tempH = newDenseMatrix(NumberofHiddenNeurons, numTrainData);InputWeight.mult(P, tempH);//DenseMatrix ind = new DenseMatrix(1, numTrainData);DenseMatrix BiasMatrix = newDenseMatrix(NumberofHiddenNeurons, numTrainData);for (int j = 0; j < numTrainData; j++) {for (int i = 0; i < NumberofHiddenNeurons; i++) {BiasMatrix.set(i, j, BiasofHiddenNeurons.get(i, 0));}}tempH.add(BiasMatrix);DenseMatrix H = new DenseMatrix(NumberofHiddenNeurons, numTrainData);if(func.startsWith("sig")){for (int j = 0; j < NumberofHiddenNeurons; j++) { for (int i = 0; i < numTrainData; i++) {double temp = tempH.get(j, i);temp = 1.0f/ (1 + Math.exp(-temp));H.set(j, i, temp);}}}else if(func.startsWith("sin")){for (int j = 0; j < NumberofHiddenNeurons; j++) { for (int i = 0; i < numTrainData; i++) {double temp = tempH.get(j, i);temp = Math.sin(temp);H.set(j, i, temp);}}}else if(func.startsWith("hardlim")){}else if(func.startsWith("tribas")){}else if(func.startsWith("radbas")){}DenseMatrix Ht = newDenseMatrix(numTrainData,NumberofHiddenNeurons);H.transpose(Ht);Inverse invers = new Inverse(Ht);DenseMatrix pinvHt = invers.getMPInverse();OutputWeight = new DenseMatrix(NumberofHiddenNeurons, NumberofOutputNeurons);pinvHt.mult(transT, OutputWeight);long end_time_train = System.currentTimeMillis();TrainingTime = (end_time_train -start_time_train)* 1.0f/1000;DenseMatrix Yt = newDenseMatrix(numTrainData,NumberofOutputNeurons);Ht.mult(OutputWeight,Yt);Y = new DenseMatrix(NumberofOutputNeurons,numTrainData);Yt.transpose(Y);if(Elm_Type == 0){double MSE = 0;for (int i = 0; i < numTrainData; i++) {MSE += (Yt.get(i, 0) - transT.get(i, 0))*(Yt.get(i, 0) - transT.get(i, 0));}TrainingAccuracy = Math.sqrt(MSE/numTrainData);}else if(Elm_Type == 1){float MissClassificationRate_Training=0;for (int i = 0; i < numTrainData; i++) {double maxtag1 = Y.get(0, i);int tag1 = 0;double maxtag2 = T.get(0, i);int tag2 = 0;for (int j = 1; j < NumberofOutputNeurons; j++) {if(Y.get(j, i) > maxtag1){maxtag1 = Y.get(j, i);tag1 = j;}if(T.get(j, i) > maxtag2){maxtag2 = T.get(j, i);tag2 = j;}}if(tag1 != tag2)MissClassificationRate_Training ++;}TrainingAccuracy = 1 -MissClassificationRate_Training* 1.0f/numTrainData;}}public void test(String TestingData_File){try {test_set = loadmatrix(TestingData_File);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}numTestData = test_set.numRows();DenseMatrix ttestT = new DenseMatrix(numTestData, 1);DenseMatrix ttestP = new DenseMatrix(numTestData, NumberofInputNeurons);for (int i = 0; i < numTestData; i++) {ttestT.set(i, 0, test_set.get(i, 0));for (int j = 1; j <= NumberofInputNeurons; j++)ttestP.set(i, j-1, test_set.get(i, j));}testT = new DenseMatrix(1,numTestData);testP = newDenseMatrix(NumberofInputNeurons,numTestData);ttestT.transpose(testT);ttestP.transpose(testP);long start_time_test = System.currentTimeMillis();DenseMatrix tempH_test = newDenseMatrix(NumberofHiddenNeurons, numTestData);InputWeight.mult(testP, tempH_test);DenseMatrix BiasMatrix2 = newDenseMatrix(NumberofHiddenNeurons, numTestData);for (int j = 0; j < numTestData; j++) {for (int i = 0; i < NumberofHiddenNeurons; i++) {BiasMatrix2.set(i, j, BiasofHiddenNeurons.get(i, 0));}tempH_test.add(BiasMatrix2);DenseMatrix H_test = newDenseMatrix(NumberofHiddenNeurons, numTestData);if(func.startsWith("sig")){for (int j = 0; j < NumberofHiddenNeurons; j++) { for (int i = 0; i < numTestData; i++) {double temp = tempH_test.get(j, i);temp = 1.0f/ (1 + Math.exp(-temp));H_test.set(j, i, temp);}}}else if(func.startsWith("sin")){for (int j = 0; j < NumberofHiddenNeurons; j++) { for (int i = 0; i < numTestData; i++) {double temp = tempH_test.get(j, i);temp = Math.sin(temp);H_test.set(j, i, temp);}}}else if(func.startsWith("hardlim")){}else if(func.startsWith("tribas")){}else if(func.startsWith("radbas")){}DenseMatrix transH_test = newDenseMatrix(numTestData,NumberofHiddenNeurons);H_test.transpose(transH_test);DenseMatrix Yout = newDenseMatrix(numTestData,NumberofOutputNeurons);transH_test.mult(OutputWeight,Yout);DenseMatrix testY = newDenseMatrix(NumberofOutputNeurons,numTestData);Yout.transpose(testY);long end_time_test = System.currentTimeMillis();TestingTime = (end_time_test -start_time_test)* 1.0f/1000;//REGRESSIONif(Elm_Type == 0){double MSE = 0;for (int i = 0; i < numTestData; i++) {MSE += (Yout.get(i, 0) -testT.get(0,i))*(Yout.get(i, 0) - testT.get(0,i));}TestingAccuracy = Math.sqrt(MSE/numTestData);}//CLASSIFIERelse if(Elm_Type == 1){DenseMatrix temptestT = newDenseMatrix(NumberofOutputNeurons,numTestData);for (int i = 0; i < numTestData; i++){int j = 0;for (j = 0; j < NumberofOutputNeurons; j++){if (label[j] == testT.get(0, i))break;}temptestT.set(j, i, 1);}testT = newDenseMatrix(NumberofOutputNeurons,numTestData);for (int i = 0; i < NumberofOutputNeurons; i++){for (int j = 0; j < numTestData; j++)testT.set(i, j, temptestT.get(i, j)*2-1);}float MissClassificationRate_Testing=0;for (int i = 0; i < numTestData; i++) {double maxtag1 = testY.get(0, i);int tag1 = 0;double maxtag2 = testT.get(0, i);int tag2 = 0;for (int j = 1; j < NumberofOutputNeurons; j++) { if(testY.get(j, i) > maxtag1){maxtag1 = testY.get(j, i);tag1 = j;}if(testT.get(j, i) > maxtag2){maxtag2 = testT.get(j, i);tag2 = j;}}if(tag1 != tag2)MissClassificationRate_Testing ++;}TestingAccuracy = 1 -MissClassificationRate_Testing* 1.0f/numTestData;}}public double[] testOut(double[][] inpt){test_set = new DenseMatrix(inpt);return testOut();}public double[] testOut(double[] inpt){test_set = new DenseMatrix(new DenseVector(inpt));return testOut();}//Output numTestData*NumberofOutputNeuronsprivate double[] testOut(){numTestData = test_set.numRows();NumberofInputNeurons = test_set.numColumns()-1;DenseMatrix ttestT = new DenseMatrix(numTestData, 1);DenseMatrix ttestP = new DenseMatrix(numTestData, NumberofInputNeurons);for (int i = 0; i < numTestData; i++) {ttestT.set(i, 0, test_set.get(i, 0));for (int j = 1; j <= NumberofInputNeurons; j++)ttestP.set(i, j-1, test_set.get(i, j));}testT = new DenseMatrix(1,numTestData);testP = newDenseMatrix(NumberofInputNeurons,numTestData);ttestT.transpose(testT);ttestP.transpose(testP);DenseMatrix tempH_test = newDenseMatrix(NumberofHiddenNeurons, numTestData);InputWeight.mult(testP, tempH_test);DenseMatrix BiasMatrix2 = newDenseMatrix(NumberofHiddenNeurons, numTestData);for (int j = 0; j < numTestData; j++) {for (int i = 0; i < NumberofHiddenNeurons; i++) {BiasMatrix2.set(i, j, BiasofHiddenNeurons.get(i, 0));}}tempH_test.add(BiasMatrix2);DenseMatrix H_test = newDenseMatrix(NumberofHiddenNeurons, numTestData);if(func.startsWith("sig")){for (int j = 0; j < NumberofHiddenNeurons; j++) { for (int i = 0; i < numTestData; i++) {double temp = tempH_test.get(j, i);temp = 1.0f/ (1 + Math.exp(-temp));H_test.set(j, i, temp);}}}else if(func.startsWith("sin")){for (int j = 0; j < NumberofHiddenNeurons; j++) { for (int i = 0; i < numTestData; i++) {double temp = tempH_test.get(j, i);temp = Math.sin(temp);H_test.set(j, i, temp);}}}else if(func.startsWith("hardlim")){}else if(func.startsWith("tribas")){}else if(func.startsWith("radbas")){}DenseMatrix transH_test = newDenseMatrix(numTestData,NumberofHiddenNeurons);H_test.transpose(transH_test);DenseMatrix Yout = newDenseMatrix(numTestData,NumberofOutputNeurons);transH_test.mult(OutputWeight,Yout);double[] result = new double[numTestData];if(Elm_Type == 0){for (int i = 0; i < numTestData; i++)result[i] = Yout.get(i, 0);}else if(Elm_Type == 1){for (int i = 0; i < numTestData; i++) {int tagmax = 0;double tagvalue = Yout.get(i, 0);for (int j = 1; j < NumberofOutputNeurons; j++) {if(Yout.get(i, j) > tagvalue){tagvalue = Yout.get(i, j);tagmax = j;}}result[i] = tagmax;}}return result;}public float getTrainingTime() {return TrainingTime;}public double getTrainingAccuracy() {return TrainingAccuracy;public float getTestingTime() {return TestingTime;}public double getTestingAccuracy() {return TestingAccuracy;}public int getNumberofInputNeurons() {return NumberofInputNeurons;}public int getNumberofHiddenNeurons() {return NumberofHiddenNeurons;}public int getNumberofOutputNeurons() {return NumberofOutputNeurons;}public DenseMatrix getInputWeight() {return InputWeight;}public DenseMatrix getBiasofHiddenNeurons() {return BiasofHiddenNeurons;}public DenseMatrix getOutputWeight() {return OutputWeight;}//for predicting a data file based on a trained model.public void testgetoutput(String filename) throws IOException {try {test_set = loadmatrix(filename);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}numTestData = test_set.numRows();NumberofInputNeurons = test_set.numColumns() - 1;double rsum = 0;double []actual = new double[numTestData];double [][]data = newdouble[numTestData][NumberofInputNeurons];for (int i = 0; i < numTestData; i++) {actual[i] = test_set.get(i, 0);for (int j = 0; j < NumberofInputNeurons; j++) data[i][j] = test_set.get(i, j+1);}double[] output = testOut(data);BufferedWriter writer = new BufferedWriter(new FileWriter(new File("Output")));for (int i = 0; i < numTestData; i++) {writer.write(String.valueOf(output[i]));writer.newLine();if(Elm_Type == 0){rsum += (output[i] - actual[i])*(output[i] - actual[i]);}if(Elm_Type == 1){if(output[i] == actual[i])rsum ++;}}writer.flush();writer.close();if(Elm_Type == 0)System.out.println("Regression GetOutPut RMSE: "+Math.sqrt(rsum* 1.0f/numTestData));else if(Elm_Type == 1)System.out.println("Classfy GetOutPut Right:"+rsum*1.0f/numTestData);}}。
Extremelearningmachine(ELM)到底怎么样,有没有做的前途?【WeicongLiu的回答(20票)】:利益相关:我本科时候做过这个,发过两篇ELM的会议,其中一篇被推荐到某不知名SCI期刊。
不过读了phd之后就不做了。
我觉得做ELM这些人最大的问题在于:1. 喜欢把以前SVM上曾经有过的一些idea直接套用。
比如加入一些正则项,或者考虑imbalanced dataset,或者ensemble几个ELM,就可以将原算法改头换面发个新paper。
因为以前SVM上这类paper太多了,照搬的话就可以写出很多很多类似的paper。
大家可以浏览一下ELM历届会议的list,相信会有体会。
这样的paper,贡献会比较局限;2. 很多做ELM的paper直接把ELM用在某回归/分类的应用上,跟SVM比,因为速度快,所以也算是有贡献,所以也就发出来了。
不过实际上,这样的贡献还是很有限的,在那些问题上,1秒和0.01秒其实都没啥差别;3 做实验太喜欢用比较基础的数据集了,比如UCI,Yale B这种。
包括之前黄老师他们做的ELM Auto Encoder,用的也只是MNIST数据集;4 主要贡献大部分都是黄老师他们自己做出来的,其他人的贡献有限。
所以我的感觉是,做ELM可以发paper,但是很难在理论和应用上有突破进展。
当然我也只是个普通学生,从我自己的角度回答下,算是抛砖引玉。
我本人对黄老师非常尊敬,本科时候数次发邮件向他请教问题,他都非常耐心地给出了详细的解答。
【张明仁的回答(10票)】:ELM神经网络与传统方法确实区别比较明显。
在优化论中,随机性的引入通常有助于增强算法的泛化能力;而ELM神经网络随机化隐含层的做法,虽然大幅提高了运算速度,但却不可避免地造成了过拟合的隐患。
同时,所谓在理论上证明的ELM神经网络的表达能力,也不过是线性方程组的简单结论,从训练上讲与SVM、核回归等方法无本质差异,因此至少在理论上我不认为ELM有什么大的贡献和创新所在。
极限学习机简介
在 Deep Learning 大行其道热度不减时,有机会接触到了极限学习机(Extreme Learning Machine,ELM)。
这个算法是新加坡南洋理工大学的黄广斌教授提出来的,idea 始于 2003 年,2004 年正式发表文章。
这种算法是针对SLFNs (即含单个隐藏层的前馈型神经网络)的监督型学习算法,其主要思想是:输入层与隐藏层之间的权值参数,以及隐藏层上的偏置向量参数是 once for all 的(不需要像其他基于梯度的学习算法一样通过迭代反复调整刷新),求解很直接,只需求解一个最小范数最小二乘问题(最终化归成求解一个矩阵的Moore-Penrose 广义逆问题)。
因此,该算法具有训练参数少、速度非常快等优点(总觉得 ELM 中的 Extreme 指的是 extreme fast,哈哈)。
接下来的若干年,黄教授带领的团队在此基础上又做了更多的发展,例如,将 ELM 推广到复数域,提出基于 ELM 的在线时序算法等等。
本文主要对最基本的 ELM 算法做一个简要介绍。
作者: peghoty
出处: /peghoty/article/details/9277721 欢迎转载/分享, 但请务必声明文章出处.。
极限学习机(ELM)网络结构调整方法综述
翟敏;张瑞;王宇
【期刊名称】《西安文理学院学报(自然科学版)》
【年(卷),期】2014(017)001
【摘要】从原始ELM算法和增长结构ELM算法(I-ELM)的基本思想与基本理论出发,分析其优点与不足,概括基于不同角度所改进的网络结构调整方法,包括结构增长型算法、结构递减型算法和自适应型算法三大方面.最终对极限学习机(ELM)中网络结构的各种调整方法进行综述,为相关研究者提供该研究方向的发展历史和最新结果.
【总页数】6页(P1-6)
【作者】翟敏;张瑞;王宇
【作者单位】西北大学数学系,西安710127;西北大学数学系,西安710127;西北大学数学系,西安710127
【正文语种】中文
【中图分类】O29
【相关文献】
1.基于深度极限学习机的危险源识别算法HIELM [J], 李诗瑶;周良;刘虎
2.极限学习机 ELM 在图像分割中的应用研究 [J], 田钧;赵雪章
3.基于极限学习机(ELM)的视线落点估计方法 [J], 朱博;张天侠
4.改进序列前向选择法(ISFS)和极限学习机(ELM)相结合的SPC控制图模式识别方
法 [J], 张宇波;蔺小楠
5.核极限学习机的在线状态预测方法综述 [J], 戴金玲;吴明辉;刘星;李睿峰
因版权原因,仅展示原文概要,查看原文内容请购买。
基于极限学习机的机器人类人运动轨迹控制方法研究机器人类人运动轨迹控制是机器人控制领域中的一个重要研究方向,极限学习机(Extreme Learning Machine,简称ELM)是一种新型的机器学习算法,具有训练速度快、泛化能力强等优点。
本文将基于极限学习机,研究机器人类人运动轨迹控制方法。
首先,我们需要了解机器人类人运动轨迹控制的背景。
机器人类人运动轨迹控制是指通过控制机器人的关节或身体部件运动,使机器人的动作尽可能逼近人类运动的特点。
这一技术应用于机器人仿真和实物机器人的控制中,可以使机器人的运动更加具有人类的特点,提高机器人的社交、协作和服务能力。
接下来,我们将介绍极限学习机的基本原理和特点。
极限学习机是一种单隐层前向神经网络模型,在训练过程中只有输出权重需要被调整,隐层神经元的权重不需要调整。
这一特点使得ELM具有训练速度快的优势,可以有效地处理大规模训练数据。
此外,ELM还具有良好的泛化能力,可以在面对未知数据时取得较好的性能。
在机器人类人运动轨迹控制中,我们可以将控制问题视为一个回归问题,即通过给定的输入数据,预测机器人的运动轨迹。
ELM可以用来训练这一回归模型,将机器人的输入特征与运动轨迹之间的映射关系进行学习。
接着,我们可以使用ELM进行机器人运动轨迹控制模型的训练。
在ELM的训练过程中,随机初始化输入层与隐层之间的权重和偏置,然后利用训练数据集进行训练。
具体来说,首先计算隐层神经元的输出,然后利用最小二乘法求解输出权重。
训练完成后,我们就可以得到一个机器人运动轨迹控制模型。
最后,我们可以使用训练好的ELM模型进行机器人运动轨迹控制。
给定机器人的输入特征,通过ELM模型预测机器人的运动轨迹。
可以通过控制机器人的关节或身体部件运动实现预测的轨迹。
总之,基于极限学习机的机器人类人运动轨迹控制方法可以通过训练一个回归模型,实现对机器人运动的控制。
这一方法具有训练速度快、泛化能力强的优点,可以应用于机器人仿真和实物机器人的控制中,提高机器人的运动表现和交互能力。
1 介绍我们在这提出一个基于在线极限学习机和案例推理的混合预测系统。
人工神经网络(ANN)被认为是最强大和普遍的预测器,广泛的应用于诸如模式识别、拟合、分类、决策和预测等领域。
它已经被证明在解决复杂的问题上是非常有效的。
然而,神经网络不像其他学习策略,如决策树技术,不太常用于实际数据挖掘的问题,特别是在工业生产中,如软测量技术。
这是部分由于神经网络的“黑盒”的缺点,神经网络没能力来解释自己的推理过程和推理依据,不能向用户提出必要的询问,而且当数据不充分的时候,神经网络就无法进行工作。
所以需要神经网络和其他智能算法结合,弥补这个缺点。
案例推理的基本思想是:相似的问题有相似的解(类似的问题也有类似的解决方案)。
经验存储在案例中,存储的案例通常包括了问题的描述部分和解决方案部分;在解决一个新问题时,把新问题的描述呈现给CBR系统,系统按照类似案件与类似的问题描述来检索。
系统提交最类似的经验(解决方案部分),然后重用来解决新的问题。
CBR经过二十多年的发展,已经成为人工智能与专家系统的一种强有力的推理技术。
作为一种在缺乏系统模型而具有丰富经验场合下的问题求解方法,CBR系统在故障诊断、医疗卫生、设计规划集工业过程等大量依赖经验知识的领域取得了很大的成功。
但是由于案例属性权值的设定和更新问题,CBR 在复杂工业过程的建模与控制工作仍处于探索阶段,尤其对于预测回归问题,研究的更少。
不同于传统学习理论,2006年南洋理工大学Huang GB教授提出了一种新的前馈神经网络训练方法-极限学习机(ELM),能够快速的训练样本(比BP神经网络训练速度提高了数千倍),为在线学习和权值跟新奠定了基础。
我们提出的基于在线极限学习机的案例推理混合系统,能够使用案例来解释神经网络,用在线学习的方法为案例检索提供案例权值和更新案例权值,为在线预测某些工业生产提供了较好的模型。
2使用在线极限学习机训练特征权值的算法2.1 训练和更新样本特征权值(不是训练样本权值的,要记好,从新选择小题目)在这一节中我们提出如何使用在线极限学习机确定和更新案例库属性权值。