作为一名大数据工程师你需要掌握Spark深度学习

本文介绍了大数据工程师如何利用Spark深度学习框架Deeplearning4j实现卷积神经网络(CNN)和循环神经网络(RNN)的应用。深度学习框架如TensorFlow、Keras、Caffe和Deeplearning4j各有特点,其中Deeplearning4j因其Java接口和Spark集成受到关注。CNN在图像识别中广泛应用,而RNN则擅长处理时间序列数据,LSTM解决了传统RNN的梯度消失问题。示例代码展示了使用Deeplearning4j训练CNN和RNN的过程。
摘要由CSDN通过智能技术生成

Tom M. Mitchell教授对于机器学习的定义对深度学习同样适用,深度学习是一种特殊的机器学习,它将现实世界表示为嵌套的层次概念体系(用较简单概念间的联系定义复杂概念,从一般抽象概括到高级抽象表示),从而获得强大的性能与灵活性。常见的深度学习算法有卷积神经网络、循环神经网络、受限波兹曼机等,本章将介绍如何用Spark深度学习框架Deeplearning4j来实现一些深度学习应用。

一般来说,深度学习与通常意义的机器学习还是有所不同,如下。

  • 数据量大小,深度学习通常需要更多的样本才能达到更好的效果。因此通常深度学习的训练时间更长。
  • 硬件区别,深度学习算法通常涉及大量浮点运算,加之样本量巨大,而GPU天然的海量流处理器架构非常适合并行计算,因此一般复杂的深度学习应用通常需要GPU的硬件架构。
  • 特征选择,一般机器学习解决问题时,都需要专家指定或者先验知识来确定特征,如信用模型,这些特征在很大程度上影响了模型的准确性。
  • 解决问题的方法,当使用传统机器学习方法解决问题时,经常采取化整为零、分别解决、再合并结果的求解策略。而深度学习主张端到端的模型,输入训练数据,直接输出最终结果,让深度神经网络自己学习如何提取关键特征。比如对一张有着多个目标的照片进行目标检测,需要识别出目标的类别并指出在图中的位置。典型机器学习方法将这个问题分为两步:目标检测与目标识别。首先,使用边框检测技术,扫描全图找到所有可能的对象,对这些对象使用目标识别算法,如支持向量机,识别出相关物体。深度学习方法按照端到端的方式处理这个问题,比如通过卷积神经网络,就能够实现目标的定位与识别,也就是原始图像输入到卷积神经网络模型中,直接输出图像中目标的位置和类别。
  • 可解释性,同神经网络算法一样,深度学习模型很难进行解释,这也使深度学习算法无法应用于很多要求模型可解释的场景,如信用风险等。

本章包含以下内容:

  • 常见的深度学习框架;
  • Deeplearning4j;
  • 卷积神经网络;
  • 循环神经网络;
  • 自动编码器。

1 常见的深度学习框架

作为AI技术的代表,深度学习框架发展势头迅猛,与Spark类似,仍然是以社区支持(开源)+ 公司支持的模式运营。常见的深度学习框架有以下几个。

  • TensorFlow:TensorFlow是谷歌公司开源的深度学习框架,支持的接口为Python、C++,可以使用CPU与GPU的计算能力,GPU版本基于NVIDIA的CUDA计算库。TensorFlow 最先没有开源分布式版本,在开源了分布式版本后,很快成为世界上流行的深度学习框架,它抽象优美、接口简洁,但不足的是它还是需要用户编写大量的代码。
  • Theano:Theano是历史悠久的深度学习库,由蒙特利尔大学LISA实验室开发。我第一次编写RNN的代码就是使用的Theano,与TensorFlow类似,它也是一个比较底层的框架,它也可以基于CUDA进行运算。
  • Keras:Keras是一个比较高层的库,它是基于TensorFlow与Theano进行的封装,让用户能够轻易地构建神经网络。
  • Caffe:Caffe 曾经是 CNN 算法最流行的实现框架之一,Caffe 的作者贾扬清也是TensorFlow的作者之一。Caffe的特点是容易上手,使用配置文件定义网络,不需要编写代码,训练速度快,组件模块化,可以方便地拓展到新的模型和学习任务上,支持单机多GPU。
  • Torch:Facebook公司的AI研究院使用的就是Torch进行深度学习训练,在被谷歌公司收购之前,AlphaGo的作者DeepMind也使用的Torch。它的编程语言是Lua,这提高了Torch的学习成本。
  • MXNet:MXNet是一个支持大多数编程语言的深度学习框架之一,包括 Python、R、C++、Julia 等。MXNet是Amazon AWS的官方深度学习平台。
  • Deeplearning4j:简称DL4J,Deeplearning4j由Skymind开发并开源。它的编程接口语言为Java,是广大Java程序员接触深度学习的绝佳工具,它的分布式版本基于Spark,同时也可以基于GPU,并且能很好地与Hadoop生态圈融合。

选择一个合适的深度学习框架通常没有一个固定的答案,更合适的做法是根据当时用户所面临的场景、需要达到的性能、学习成本、硬件成本综合考虑。

2 Deeplearning4j

Deeplearning4j是一个为JVM编写的开源深度学习框架,主要用于商业需求。整体完全用Java编写。由于使用Java的原因,Deeplearning4j在很多Java程序员中比较流行。该框架基本上由与Hadoop和Spark集成的分布式深度学习库组成。在Spark框架的帮助下,我们可以轻松分发模型和海量数据集,并运行多个GPU和CPU来进行并行操作。Deeplearning4j主要在图像、语音、文本、时间序列的模式识别方面取得了巨大成功。除此之外,还可以应用于机器视觉、欺诈检测、业务分析、推荐引擎等各种情况。Deeplearning4j架构如图1所示。

作为一名大数据工程师你需要掌握Spark深度学习

 

图1 Deeplearning4j架构

Deeplearning4j是基于ND4J进行数值计算的,ND4J也是Skymind开发的Java接口的N维数组计算工具,与Python的Numpy类似,不过底层由C++编写。

Deeplearning4j可以看成是运行在YARN或者Mesos中的Spark作业。Deeplearning4j工作的原理是基于HDFS的数据块进行分布式训练,随着每个节点计算任务的完成,得到的参数会汇总到一个节点求其均值,再分发到各个工作节点更新参数,继续下一轮的训练。

3 卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN)受启发与视觉皮层生物学原理,改良了传统神经网络模型。Yann LeCun在1998年发表了一篇论文将其运用到了手写字符识别上,并取得了成功。目前卷积神经网络在图像识别领域应用得非常广泛。

3.1 理解卷积神经网络

随着神经科学与生物学的进步,人们发现大脑中的一些个体神经细胞只有在特定方向的边缘存在时才会产生电流,例如,一些神经元只对垂直边缘兴奋,它另一些对水平或对角边缘兴奋。人们发现所有这些神经元都以柱状结构的形式进行排列,而且一起工作才能产生视觉感知。这代表了某些神经元细胞只对特定刺激做出回应,这就是卷积神经网络的理论基础。

图 2 来源于经典的卷积神经网络 LeNet,可以看到整个卷积神经网络有输入层、卷积层(C1、C3、C6)、下采样层(S2、S4)、全连接层(F6)以及输出层。

作为一名大数据工程师你需要掌握Spark深度学习

 

图2 卷积神经网络

输入层是一个32 × 32的手写图像,图中的黑色的5 × 5的小框被称作感受野,这个小框被映射为下一层的一个像素,这个过程被称作卷积,那么这个过程实际发生了什么呢?这其实是图像处理中常见的一种滤波操作,通过不同的卷积核对输入图像(5 × 5)进行过滤,提取出对应图像中的某种特征,如直线、曲线等,不同卷积核过滤的信息都是不同的。简单来说,卷积的过程可以表示为:

a•w

其中a代表感受野中的输入,w被称为一个卷积核或者滤波器,a•w的操作被称为卷积,实际上就是进行了一个向量内积的操作,也就是对应值相乘并求和。下面用一个例子来表示特征过滤的过程,我们假设滤波器是一个如下5 × 5的矩阵ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值