论文部分内容阅读
支持向量机(support vector machine,简称SVM)由于其完整的理论框架和在实际应用中取得的良好效果,特别是在多分类问题上显示其突出的能力以及作为运用核函数的成功范例,在人脸检测、时间序列预测、自适应信号处理、模式识别和图像识别等方面都得到广泛的应用。SVM训练阶段实质是求解二次规划(QP,Quadratic Programming)问题得到支持向量,求解QP问题过程中须计算出N阶矩阵(N为样本数量)。随着大数据时代的到来,在样本类别多,样本数量大、样本特征多情况下,存在计算量大,支持向量机内存使用过多,训练速度慢等问题。针对这些问题,本文就并行化SVM展开了相关工作,研究并行技术分散SVM内存依赖,加速训练过程,Lib SVM训练过程默认设置核函数Gamma参数和容错惩罚C参数,不利于提升训练精度和训练模型的泛化能力。国内外学者多基于二分类SVM采用混合编程(例如MPI+CUDA)并行加速SVM训练过程,而实际大概率需要处理多类样本,并且混合编程提升了开发者开发难度。论文主要工作如下:1.为提升分类精确度和支持向量机的模型泛化能力,基于Lib SVM增添参数优选功能。2.在有关并行化SVM的文献基础上,分析比较现有大数据编程模型优缺点,本文提出了基于分布式的异构加速并行方案。该异构集群框架扩展性好,能够实现不同计算资源(例如CPU,GPU,DSP)的增减并且不用改动程序流程;容易二次开发,不需要程序员掌握并行编程相关技术;适应多种应用场景;计算性能随计算资源近线性增长。3.为加速支持向量机的训练速度,本论文通过对支持向量机模型的研究,结合SVM串行实现,比较4种SVM并行实现方法并选中svm_train_one并行加速方案;理清代码结构,寻找训练过程中的计算热点以便于并行化;编写了CPU版本和GPU版本的svm_train_one并行加速程序并注册到集群框架。4.基于阿里云搭建实验环境,用两组样本进行性能测试。实验结果分析表明,基于异构集群的svm_train_one并行方案在支持向量机训练速度上有显著提升,具有重要的实用价值。