在过去的一年中, 机器学习 发展得热火朝天,已成为主流。机器学习的“空降”并非仅仅由廉价的云环境以及 日益强大的GPU硬件驱动 ,同时也受到了开源框架的蓬勃发展的影响。这些开源框架用于提取机器学习中最困难部分,使机器学习可供广泛开发者使用。
用机器学习解决网络安全问题 开源机器学习框架能助力
《 你的机器学习到底解决了什么? 》一文中指出
没有什么机器学习厂商,只有应用机器学习解决特定问题的厂商,因为它本身无法独立解决任何问题,只是解决特定问题的手段,至少应该用于事件响应、高级威胁检测、溯源和调查。
《 解读Gartner提出的网络流量分析解决方案 》一文中介绍了绿盟科技全流量威胁分析方案
全流量威胁分析方案,是针对目前APT分析发现困难的问题。运用大数据处理的相关技术,提供对较长时间跨度的海量网络流量数据进行挖掘分析的能力;结合机器学习、规则检测、沙箱检测、情报分析等多种威胁检测手段,依据攻击链模型对威胁行为进行关联,构建出一套较为完善的APT检测体系,使得较大时间跨度的APT攻击检测成为可能。
如果您也需要利用机器学习框架解决 网络安全 问题,该如何解决其中最困难的问题呢?本文介绍在过去的一年中新创建的或调整的十多个机器学习框架。这些工具之所以吸引我们的眼球是因为他们非常流行,有的可大大简化问题域,有的可应对机器学习相关的特定挑战,还有的可解决以上全部问题。
13个最流行机器学习框架
Apache Spark MLlib
Apache Spark在这些框架中最为知名,因为它是Hadoop家族的一员,但该内存数据处理框架最初并不是Hadoop家族的一部分,现在也因与Hadoop生态系统无关渐渐有名起来。Apache Spark成为一个优秀的机器学习工具得益于它的日益扩展的算法库,这些算法可用于高速的内存数据。
之前版本的Spark加大了对MLlib的支持。MLlib是面向数学和统计相关用户的平台,可通过持久化流水线特性中断和恢复Spark ML的数据相关操作。2016年发布的Spark 2.0改进了Tungsten高速内存管理系统和新的DataFrames流API,该系统和API可大幅提升机器学习app的性能。
H20
H20现在正处于第三次大型修复阶段,可通过通用开发环境(Python、Java、Scala或R)、大数据系统(Hadoop或Spark)以及数据源(HDFS、S3、SQL或NoSQL)提供对机器学习算法的访问。H20旨在作为端对端方案用于收集数据、构建模型,进行预测。例如,模型可被导出为Java代码,在多个平台和环境中提供预测。
H20还可用作本地Python库、Oupyter Notebook或RStudio中的R语言。该平台也一个专有的开源Web环境,称为Flow,该环境不仅在训练前后,而且在整个训练过程中,可使H20与数据集进行交互。
Apache Singa
“深度学习”框架提供重负荷机器学习功能,如自然语言处理和图片识别。作为一个Apache 孵化器项目,Singa是一个用于简化基于大量数据训练深入学习模型的开源框架。
Singa为在大量机器上训练深度学习网络提供了一个简单的编程模型。它支持很多通用的训练任务:卷积神经网络、受限的Boltzmann机器和循环神经网络。模型训练可同步(串行)或异步(并行)进行,或在CPU或GPU集群上开展,稍后会支持FPGA。此外,Singa还通过Apache Zookeeper简化集群搭建。
Caffe2
Caffe是一款专注于表达、速度和模块化的深度学习框架。该框架最初在2013年初开发用于机器视觉项目,目前已扩展至包含语音和多媒体之类的其他应用。
速度是一项优先考虑因素,因此Caffe整个框架采用C++编写,且支持CUDA加速,当然也能根据实际情况在CPU和GPU处理之间切换。该Caffe发行版包含一系列执行常见分类任务的免费开源参考模型以及Caffe用户社区创建和贡献的其他模型。
Facebook支持的Caffe新迭代,称为Caffe2,目前其1.0版本正处于开发阶段。该版本的目标是简化分布式训练,部署在移动设备上,为FPGA等新型硬件提供支持,并利用前沿特性如16位浮点训练。
Google TensorFlow
Google TensorFlow是一种非常像Microsoft/DMTK的机器学习框架,用于在多个节点上部署。与Google的Kubernetes一样,该框架用于解决Google的内部问题,Google最终决定将其发布为开源项目。
TensorFlow采用数据流图,图中描述的一系列算法可处理批量数据(tensor)。数据在系统中的这种移动叫做“流”。这些数据流图可通过C++或Python合成,可在CPU和GPU上处理。
TensorFlow近期进行了更新,提升了对Python的兼容性,且改进了GPU处理,可使TensorFlow在更广泛硬件上运行,对包含内置的分类和回归工具的库进行了扩展。
亚马逊机器学习
亚马逊的云服务方案基于以下模式构建:提供基本技术,请感兴趣的核心受众利用这些技术构建方案,然后弄清他们的真实需求,最后据此提供方案。
亚马逊提供的机器学习即服务,亚马逊机器学习,同样也是采用这一模式构建。该服务与Amazon S3、Redshift或RDS上存储的数据关联,可运行二进制分类、多类分类或数据回归,从而创建模型。不过需注意的是,创建的模型无法导入或导出,且训练模型数据集不能超过100 GB。
尽管如此,亚马逊机器学习证实了机器学习是一种实用性功能,并非一种花哨无用的存在。亚马逊的深度学习服务的机器页面展示了很多主流深度学习框架,如Caffe2, CNTK、MXNet和TensorFlow。
微软Azure机器学习工作室
鉴于执行机器学习所需的数据量和计算能力,云是机器学习应用执行的理想环境。微软为Azure配备了即付即用的机器学习服务—Azure机器学习工作室—这个服务有月付、时付以及免费试用版本。(微软的HowOldRobot项目就是用这个服务实现的。)试用这个服务您甚至不需要有账号,您可以匿名登录进去使用Azure机器学习工作室服务8个小时。
Azure机器学习工作室允许用户创建和训练模型,然后把这些模型转化成其他项目可以使用的API。每个账号有10G的存储空间来存储模型数据,您也可以使用Azure Storage来存储更大的模型数据。同时有大量的算法可以用,有的是微软提供的,有的是第三方提供的。
近期的改进包括通过Azure批量服务对培训工作进行批量管理、更好的部署管理控制和详细的Web服务使用统计。
微软分布式机器学习工具包
在一个特定的机器学习问题上,您投入的机器越多,效果越好。但是把这些机器聚合在一起,编写在上面正确运行的机器学习应用却不是那么简单。微软的DMTK(分布式机器学习工具集)着眼于解决把机器学习任务部署到集群系统中的问题。
DMTK被设计为一个框架,而不是一个开箱即用的解决方案,所以内置的算法数量并不是很多。然而,您会发现关键的机器学习库(如LightGBM)和支持深度学习框架(如Torch和Theano)。
DMTK可让用户充分利用有限的资源集群。例如,集群中的每一个节点都有一个本地缓存,大幅减少了中心节点的流量,避免影响中心节点的服务。
微软计算网络工具包
刚刚发布完DMTK,微软马不停蹄,又发布了另外一个机器学习工具集,计算网络工具包,简称CNTK。
CNTK和Google TensorFlow很像,它允许用户以有向图的形式创建神经网络。微软也希望它能够比拟像Caffe、Theano和Torch这样的项目。相比之下,它的主要优势是速度,尤其是能够同时使用多CPU和多GPU的能力。微软声称使用CNTK,结合Azure云上面的GPU集群大幅加速了Cortana语言识别的训练过程。
CNTK 2.0是最新版框架,相比竞争对手TensorFlow而言,它提高了准确性、增加Java API支持Spark,并支持Keras框架代码(通常用于TensorFlow)。
Apache Mahout
Mahout的初衷是在Hadoop上实现可扩展的机器学习,之后被Spark取代。但在沉寂了一段时间之后,Mahout增加了一些新功能,如数学新环境(Samsara),它能够让算法运行在分布式的Spark集群上,并同时支持CPU和GPU操作。
Mahout框架早已与Hadoop绑定,但很多算法还是只能运行于Hadoop之外。这些对独立应用或Hadoop项目很有帮助,因为前者最终可能会迁移到Hadoop上,后者可被分离到各自独立的应用中。
Veles
Veles是深度学习应用的分布式平台,和TensorFlow以及DMTK一样,它是用C++写的,同时它用Python来处理自动化任务和节点之间的同步。数据集在输入集群之前能够被分析并自动地归一化,并且训练好的模型能够直接通过一个REST API在生产环境中使用(假设你的硬件足够好)。
Veles不仅仅是把Python当作一个胶水语言来使用,Jupyter能够可视化并发布Veles集群的结果。三星希望开源这个项目能够刺激项目未来的开发,比如移植到Windows或者Mac OS。
mlpack2
Mlpack2是2011年推出的用C++编写的机器学习库,设计目标是“可扩展、快速、易于使用”。行mlpack要通过一堆命令行来完成,用法不太简洁,有时还要调用C++API来完成复杂的操作。
2.0版本做了大幅的重构,并增加了一些新特性,包含了很多新的算法,并且对已有算法做了提速和瘦身。例如,它用C++11标准的random方法替代了Boost库中的random实现。
一直存在的问题是它只能用C++调用,这样使用其他编程语言(如Python)的用户就会需要第三方库。它已经支持了MATLAB,不过这样的项目如果在主要的机器学习工作中得到应用的话,关注度会大大上升。
Neon
Nervana公司构建了自用的深度学习软硬件平台,它提供了一个开源的深度学习框架Neon。它使用可插拔的模块来让大计算量的任务能够运行在CPU、GPU或者自家硬件上。
它由纯Python编写,带着一些C++模块来做加速。这样数据科学家很容易使用它,其他Python框架也很容易引用它。
很多标准的深度学习模型如LSTM、AlexNet和googlenet,都可作为Neon预先训练模型。作为最新版本,Neon 2.0中增加了英特尔数学核心函数库来提升CPU性能。
Marvin
另外一个最近的产品,Marvin神经网络框架,是普林斯顿视觉小组出品的。创建者在项目文档中表示,“Marvin生来就是要被黑的”,它只依赖几个C++文件和CUDA GPU框架。
尽管代码很少,这个项目却带了不少训练好的模型,这些模型很容易被复用,项目也比较容易参与。
原文发布时间:2017年8月29日
本文由:infoWorld发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/13popular-ml-frameworks