搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 卧龙草堂 > 安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

卧龙草堂 2018-06-30


人工智能的英文全名为Artificial Intelligence,我们通常简称为AI。广义上讲,AI可以指任何能够从事某种智能活动的计算机程序。近年来深度学习在AI领域表现尤为突出,在这里我们可以简单的把AI理解为深度学习。


深度学习由深层神经网络算法构成,大量的神经元输入通过不断的迭代更新参数完成模型定型。深度学习的计算强度较高,对于规模非常大的数据集而言,速度很重要。主流的深度学习框架有TensorFlow、Caffe、Keras、Theano等,它们大多在单节点服务器通过GPU加速完成模型训练。随着大数据时代的来临,采用分布式计算极大提高了计算性能。因此将分布式计算与深度学习结合成为必然趋势。 DL4J就是基于这样的思想诞生的,是应用最广泛的JVM开源深度学习框架,它可以利用Spark在多台服务器多个GPU上开展分布式的深度学习模型训练,让模型跑得再快一点。


运用Deeplearning4J高效的训练一个完整神经网络模型包括:神经网络输入数据ETL、配置神经网络结构、设置参数监测可视化界面、模型训练、模型评估、模型保存与加载。本期“安仔课堂”,ISEC实验室的纪老师为大家详解如何运用DL4J构建AI模型。

安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!
一、数据ETL

神经网络所能识别的输入数据是向量,训练中涉及大量的矩阵运算。ND4J是神经网络训练进行必要的线性代数和微积分运算的科学计算库,让Java能够访问所需的原生库,能够使用多个CPU或GPU快速处理矩阵数据。DataVec是基于ND4J之上的一个工具包,通过它可以方便的对数据摄取、清理、联接、缩放、标准化和转换等处理,快速的将图像、视频、声音、文本和时间序列等原始数据转变为特征向量,输入神经网络。示例如下:



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图1



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!
二、配置网络结构

MultiLayerConfiguration是用来设定网络的层及其超参数。超参数是决定神经网络学习方式的变量,包括模型的权重更新次数、如何初始化权重、为节点添加哪些激活函数、使用哪些优化算法以及模型的学习速度,通过调用layer添加网络层,指定其在所有层中的先后位置、输入及输出节点数nIn和nOut。网络配置的示例如下:



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图2



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!
三、模型训练

DL4J能够依靠Spark来实现数据并行,以并行方式训练模型,对这些模型产生的参数进行迭代式平均化,得到一个中央模型。首先创建一个TrainingMaster实例,指定分布式训练的实际开展方式,然后用网络配置和TrainingMaster对象创建SparkDl4jMultiLayer实例,最后SparkDl4jMultiLayer实例调用fit方法传入数据进行模型训练。



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图3



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!
四、设置可视化界面

用户界面可以在浏览器中对网络状态以及定型参数进行可视化。该用户界面通常用于调试神经网络,亦即通过选择合适的超参数来提高网络性能。在配合Spark使用时可以分两个步骤,首先收集并保存相关统计数据,随后再进行可视化:



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图4


之后可以用如下代码加载并显示已保存的信息:


安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图5



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!
五、模型评估

模型训练完成后通常需要用一定数量的测试集来测试模型效果,这里可以直接调用doEvaluation方法对测试数据集进行模型测试,调用evaluation.stats()可以输出测试信息。



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图6

输出结果:


安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图7


输出结果信息说明:

Accuracy(准确率):模型准确识别出的数量占总数的百份比;

Precision(精确率):真正例的数量除以真正例与假正例的数之和;

Recall(召回率):真正例的数量除以真正例与假负例数之和;

F1 Score(F1值):精确率和召回率的加权平均值。



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!
六、模型保存与加载

模型训练完成后需要将模型保存以供模型加载部署。ModelSerializer是用于加载和保存模型的类。



安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

图8



以上步骤完整的完成了一个基于DL4J深度学习的建模方式,我们可将代码打包提交到Spark集群运行。该模型可以在分布式环境中利用GPU实现高效运算,提升模型训练效率。





安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!

互了个动


小伙伴们,

本期内容到这里就结束啦,

你get到了吗? 


欢迎大家于文末留言

分享你的宝贵见解、

疑问、补充~


与ISEC实验室大神互动的机会来啦!

速速行动起来撒!



ISEC实验室作为厦门安胜网络科技有限公司新技术和新产品的预研基地,秉承“我的安全,我做主”的理念,专注于网络安全领域前沿技术研究,提供网络安全培训、应急响应、安全检测等服务。


不忘初心、砥砺前行;未来,我们将继续坚守、不懈追求,为国家网络安全事业保驾护航!




版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《安仔课堂│人工智能模型是这样构建的!探秘DL4J分布式训练法!》的版权归原作者「卧龙草堂」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注卧龙草堂微信公众号

卧龙草堂微信公众号:wolongcaotang

卧龙草堂

手机扫描上方二维码即可关注卧龙草堂微信公众号

卧龙草堂最新文章

精品公众号随机推荐