技术开发 频道

如何进行机器学习框架选择

  【IT168 评论】人工智能正值发展热头,为了开发和部署人工智能应用程序,涌现出了很多机器学习框架。这些框架直接跨越开发、测试、优化和生产等流程,为开发人员提供了一个很好的研发捷径。有的框架注重自身的可用性,有的框架侧重于生产部署和参数优化,它们都有各自的优缺点,这也增加了研发人员选择的难度。

  目前,处于非常好的框架列表榜首的有:MXNET、Keras、PyTorch、Tensorflow。这些机器学习框架都是数据科学家最常用的,一般用于图像识别、预测和推荐。数据科学家们一般会优先考虑那些能够为他们简化算法过程的框架。公司一般倾向于将大量的时间花费在辅助工序上,例如:数据准备、转移算法到生产中、确定机器学习标准等。想要选择正确的机器学习框架,你还需针对具体的问题而决定,例如:

  1.   是用于深度学习还是机器学习?

  2.   什么样的硬件、软件或者云服务适合扩展?

  3.   开发人工智能应用的APT编程语言是什么?

  对于机器学习的非常好的编程语言,最受欢迎的应该是Python和R。当然,仅次其后的Java、C++和Scala也是不错的选择。如果说非常好的,Python必须是莫属。原因很简单,因为R是统计学家设计的语言,数据结构简单。而 Python是计算机学家设计的,包含更丰富的数据结构,是一种更具实用性的编程语言。

  深度学习和机器学习

  深度学习和机器学习看似都属于人工智能领域,实则二者不在一个层次上。通俗来说,机器学习是一种实现人工智能的方法,而深度学习是实现机器学习的技术。

  深度学习本身并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。目前深度学习发展火热,但机器学习也不甘落后,虽然基于一种方法层面,但发展速度也不减深度学习。

  机器学习框架和深度学习框架之间有区别。本质上,机器学习框架涵盖用于分类,回归,聚类,异常检测和数据准备的各种学习方法。深度学习框架涵盖具有许多隐藏层的各种神经网络拓扑。这些层包括模式识别的多步骤过程。网络中的层越多,可以提取用于聚类和分类的特征越复杂。

  深度学习框架有:Caffe,CNTK,DeepLearning4j,Keras,MXNet、TensorFlow。深度学习框架专用于神经网络编码,非常好的的框架选择推荐是TensorFlow。TensorFlow是可移植的机器学习和神经网络库,有很强的执行性和伸缩性,但学习难度大。TensorFlow拥有各种各样的模型和算法,它们对深度学习非常重视,并且在具有GPU(用于训练)或Google TPU(用于生产规模预测)的硬件上具有出色的性能。

  机器学习框架有:Scikit-learning、Spark MLlib。机器学习的非常好的框架选择是Scikit-learn。SciKit-learn 是老牌的开源 Python 算法框架,它与 TensorFlow 的主要区别是:TensorFlow 更底层。而 SciKit-learn 提供了执行机器学习算法的模块化方案,很多算法模型直接就能用。Scikit-learn是一个强大的、成熟的机器学习Python库,包含各种各样成熟的算法和集成图。

  另外还有一种跨越这两大类别的“长老级”框架:Theano。当然具体的框架选择还是要基于所开发的数据类型和应用程序类型。

  小项目vs大项目

  在开发初期,AI应用程序开发人员会尝试着运行几个任务来确定哪一部分在小组数据上运行的最好。当研发者处理更大项目的大数据集时,框架的选择是不一样的。支持分布式体系结构的框架是一个很好的选择,例如H2O或Apache Sparks MLlib。大型项目的伸缩性是一个大问题,对于深度学习来说也是如此。比如,AI开发人员想要进行图标注册,他们可以下载TensorFlow,并在桌面上运行同样的算法尝试不同的工具。只要他们明确了哪种方法最可行,便可以尝试大数据集。

  开源有助于丰富社区

  人工智能技术正在进行当中,开源框架是一个显而易见的事实。客户端通常喜欢用开源的、可跨平台的API。开发人员社区对开源框架提供了很大的支持。

0
相关文章