多层学习的并行算法设计与实现(源码)

毕业设计说明书(论文)外文
目录
1 绪论 1
1.1 研究背景 1
1.2 国内外研究现状 1
1.3 本文的主要工作 3
1.4 论文的组织结构 3
2 预备知识 4
2.1 多核程序设计 4
2.1.1 多核程序设计概述 4
2.1.2 OpenMP介绍 6
2.2 神经网络 6
2.2.1 人工神经网络概述 6
2.2.2 单层隐含层的局限性 10
2.2.3 BP学习算法 11
2.2.4 BP算法推导 14
2.2.5 BP算法的并行性分析 15
2.3 本章小结 16
3 多层BP神经网络学习算法 17
3.1 多层BP学习算法及优势 17
3.2 多层BP神经网络识别手写集MNIST 17
3.2.1 MNIST手写集 17
3.2.2 输入层数据处理 18
3.2.3 隐含层结构及处理 18
3.2.4 输出层结构及判定 19
3.3 训练及预测评价方式 20
3.4 本章小结 22
4 多层BP神经网络的并行算法 22
4.1 神经网络并行策略综述 22
4.1.1 数据并行算法 22
4.1.2 结构并行算法 23
4.2 基于共享内存环境的BP神经网络的结构并行策略 24
4.2.1 整体描述 24
4.2.2 并行位置分析 24
4.2.3 并行策略描述 25
4.2.4 并行程序设计 26
4.3 本章小结 27
5 实验结果及分析 28
5.1 实验平台 28
5.2 性能评价 28
5.2.1 加速系数 28
5.2.2 识别率 28
5.3 实验结果分析 28
 *好棒文|www.hbsrm.com +Q: ¥351916072$ 
论 30
致谢 31
参考文献 32
绪论
研究背景
学习是人类智慧不断取得的重要途径,也是我们的优势。这与身俱来的能力背后究竟有怎样的奥秘,这不断刺激和吸引我们搞清大脑工作机理和思维的本质。实现人工智能是人类长期以来一直追求的梦想,而神经网络是人工智能[1]研究领域的核心之一[2]。这种学习的策略是一种将常规编程无法下手的复杂建模过程交给类似于人的大脑的神经元相互作用的神经网络模型[3],通过类似动物管理员训练动物执行任务一样,强化正确的反应而惩罚错误的反应,达到完成特定目标的目的。在训练的过程中逐渐形成一种常规编程不易取得的模式。一个成功训练的神经网络则可以应用于商业场合或者更深层科学研究中[4],可是神经网络训练的时间较长,尤其是深度学习,这对用于科研性质的神经网络研究带来的不小的效率问题,常规的串行程序无法满足神经网络模型的高计算量要求,这就需要采取相应的并行算法,利用多核多线程、超线程(HT)技术加速训练速度。由于并行计算设备的多样性,并行编程框架也日趋丰富,目前主要的编程框架有CUDA、OpenCL、OpenMP、MPI 等[5]。
误差反传算法BP(Back Proragation),具有良好的非线形逼近能力,是人工神经网络应用最广泛的训练算法[3]。本课题研究的关键就是将传统的bp算法优化成并行实现。神经网络编程模型虽然具有普通编程无法达到的模式识别等抽象问题处理的优势,但是依靠样本训练来寻找这些神经与神经之间的权重关系矩阵需进行循环迭代,随着训练样本的增加和神经网络越发复杂,训练要想达到收敛需要花费大量的时间。本文要采用并行处理技术正可以极大的缩短训练时间,提高效率。
国内外研究现状
神经网络学习的发展包括浅层和深层两个阶段。浅层模型只有一层隐含层或者没有隐含层节点,理论分析相对成熟,在许多应用中获得成功,如网页搜索排序和各类推荐系统等。张弦等人根据华中科技大学同济医学院提供的高血压调查数据作为训练样本,使用串行BP算法并尝试提出自己的并行BP算法和改进的并行 BP算法对其进行训练。使得原训练速度大大提升。与此同时,改进的并行算法也有效地提高了并行训练的加速比和并行效率[6]。
随着样本数量的增大以及特征维度的增加,浅层模型逐渐不能满足应用的需求(如人脸识别[7])。近年来,深神经网络以其优良的算法性能在图像分析、语音识别、目标检测、语义分割、人脸识别、自动驾驶等领域得到了广泛的应用。深度神经网络能取得如此大的进步,其本质是模拟人的大脑,通过增加网络层数,使得机器学习从数据中获得高级特征,当前网络深度甚至达到成百上千层,应用的时效性越来越复杂这成为很大的挑战[8]。为了减少深度神经网络的训练时间,基于各种高性能计算平台的并行深层神经网络算法的设计逐渐成为热门话题。计算的CPU硬件体系结构由单核向多核转变,并行计算也由指令级向线程级并行转变[9,10]。近年来,以GPU、MIC和FPGA为代表的异构计算平台具有能量效率高的优点,被广泛应用于各个研究领域以加速[11] 。2015年,在王洪鹏教授的指导下毕占甲设计出了一种以小批量数据集并行前馈传播和误差反向传播的方法在CUDA平台上使用单GPU实现神经网络的结构并行和数据并行。与DMLC深度学习框架进行比较,得出设计出的系统具有不错的加速效果[12]。之后又在多GPU上对比分析设置不同大小的批量数据后的加速效果,以及不同 GPU个数训练时的并行效率[12,13]。北京大学的宋国杰[14]也在PVM机群环境下实现了基于这种数据并行的BP算法。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/1030.html

好棒文