0
雷锋网 AI 研习社按,日前,kdnuggets 上的一篇文章对比了三大公司(谷歌、微软和亚马逊)提供的机器学习服务平台,对于想要启动机器学习项目的公司或是数据科学新手来说,提供了非常多的指导和建议。雷锋网 AI 研习社将原文编译整理如下:
对于大多数企业来说,机器学习就像航空航天一样遥远,听起来既昂贵,还需要高科技人才。从某种角度来说,如果你想建立一个像 Netflix 一样好的推荐系统,那确实是昂贵且困难。但是,目前这个复杂的领域有一个趋势:一切皆服务(everything-as-a-service)——无需太多投资,即可快速启动机器学习计划。如果你是数据科学的新手,想要抓住当下的机会,这将是一种正确的选择。
机器学习里最令人鼓舞的故事之一就是,一个日本农民,为了减轻他父母的工作负担,决定设计一个自动分拣黄瓜的系统。不像其他的大型公司,这个人并没有机器学习的专业知识,也没有很多预算,但是他努力学会了 TensorFlow,并使用深度学习来识别不同种类的黄瓜。
通过使用机器学习云服务,你可以开始构建第一个工作的模型,只要一小个团队,就可以从机器学习的预测中获得有价值的信息。许多人已经讨论过不同的机器学习的策略。现在让我们来看看市场上最好的机器学习平台都有哪些服务。
什么是机器学习服务
机器学习服务(Machine learning as a service, MLaaS)包含机器学习大多数基础问题(比如数据预处理,模型训练,模型评估,以及预测)的全自动或者半自动云平台的总体定义。预测结果可以通过 REST API 与内部的 IT 基础架构桥接。
Amazon 机器学习服务,Azure 机器学习和 Google Cloud AI 是最领先的三个云 MLaaS 服务,允许在很少甚至没有数据科学专业知识的情况下进行快速模型训练和部署。如果你还没有数据科学团队,可以参看我们的另一篇文章,看看团队都需要拥有哪些技能的人才。
在本文中,我们将首先概述 Amazon,Google 和 Microsoft 的主要机器学习服务平台,并比较这些供应商所支持的机器学习 API。这并不是如何使用这些平台的说明,而是在开始阅读平台的文档之前所需要做的功能调研。
针对定制化的预测分析任务的机器学习服务
使用 Amazon ML 进行预测分析
亚马逊的机器学习服务有两个层面:用于预测分析的 Amazon ML 和针对数据科学家设计的 SageMaker。
Amazon Machine Learning 是市场上最自动化的解决方案之一,最适合对处理效率敏感的操作。该服务可以加载来自多个来源的数据,包括 Amazon RDS,Amazon Redshift,CSV 文件等。所有数据的预处理操作都是自动执行的:包括确认哪些字段是分类标签,哪些是数字,而且不需要用户选择进一步的数据预处理方法(降维还是白化)。
Amazon ML 的预测能力限于三种:二分类,多分类,以及回归任务。也就是说,Amazon ML 服务不支持无监督的学习方法,用户必须在训练集中选择标记好的目标变量。而且,用户不需要知道任何机器学习方法,Amazon 会在分析提供的数据之后自动选择机器学习方法。
这种高自动化的水平既是 Amazon ML 的优势,也是劣势。如果您需要一个完全自动化,但是功能有限的解决方案,那么这个服务非常适合你。但是如果不是这样的话,你可以选择 SageMaker。
Amazon SageMaker 以及基于框架的服务
SageMaker 是一个机器学习环境,通过提供快速建模和部署工具来简化数据科学家的工作。例如,它提供 Jupyter 来简化数据浏览和分析。Amazon 也提供了内置的算法,针对分布式系统中的大型数据集和计算进行了优化。这些算法包括:
线性学习器,一种用于分类和回归的监督方法。
用于稀疏数据集的分类和回归的分解机(Factorization Machine)。
XGBoost 是一个有监督的提升树算法,通过结合简单算法的预测来提高分类,回归以及排序的预测精度。
基于 ResNet 的图像分类,也可以应用于迁移学习。
Seq2seq 是用于预测序列的监督算法,可用于翻译句子,将句子总结为更短的词汇等。
K-means 是一种用于聚类任务的无监督学习方法。
主成分分析(PCA),可以用于数据降维。
隐含狄利克雷分布(Latent Dirichlet allocation)是用于文档归类的无监督方法。
神经主题模型(Neural topic model, NTM)是一种无监督方法,它可以遍历文档,找出高频词汇,并根据内容定义文档的主题(用户不能预先定义主题的名称,但是可以设置话题的数量)。
SageMaker 中内置的方法与 Amazon 推荐的 ML API 在很大程度上有交集,但在这里它允许数据科学家定制使用,并使用自己的数据集。
如果你不想使用这些功能,你也可以添加自己的方法,并通过 SageMaker 利用它的部署功能运行模型。或者也可以将 SageMaker 与 TensorFlow 或 MXNet 等深度学习库集成在一起。
一般来说,亚马逊的机器学习服务为经验丰富的数据科学家和只需要完成工作而不需深入准备数据集和建模的人都提供了足够的自由。对于那些已经使用亚马逊环境并且不打算转移到其他云供应商的公司来说,这是一个可靠的选择。
Microsoft Azure 机器学习工作室(Machine Learning Studio)
Azure Machine Learning 意在为新手和经验丰富的数据科学家建立一个强大的工作空间。微软的机器学习产品功能与亚马逊的类似,但就目前而言,Azure 的现成算法更加灵活。
Azure 提供的服务可以分为两大类:Azure Machine Learning Studio 和 Bot 服务。让我们首先了解一下 Azure ML Studio,在之后介绍特定 API 和工具的部分时,回到 Bot 服务。
ML Studio 是微软 MLaaS 的主要部分,几乎所有的 Azure ML Studio 中的操作都必须手动完成:包括浏览数据,预处理,选择方法,以及验证模型结果。
使用 Azure 进行机器学习的学习曲线可能比较陡,但是这也能使得用户对该领域的主要技术有更深入的了解。另一方面,Azure ML 支持图形界面,可以可视化工作流程中的每一个步骤。使用 Azure 的主要好处是可以使用各种算法。ML Studio 支持大约 100 种解决分类(包括二分类和多分类),异常检测,回归,推荐和文本分析方法。值得一提的是,该平台也支持一种聚类算法(K-means)。
Azure ML 的另一大部分是 Cortana Intelligence Gallery。它是由社区提供的机器学习解决方案的集合,供数据科学家开发和利用。Azure 对于从事机器学习的人来说是一个强大的工具。
Google 预测 API
Google 在两个层面上提供 AI 服务:针对高级数据科学家的机器学习引擎,和高度自动化的 Google 预测 API。不过,谷歌将在2018 年 4 月 30 日停用预测 API 服务。
即将停用的预测 API 类似于 Amazon ML,只有两个很精简的方法,主要用于解决两个问题:分类(二类和多类)和回归。训练好的模型可以通过 REST API 接口进行部署。
Google 并没有公开预测中使用了哪些算法,也不能让工程师自定义模型。Google 的环境最适合在紧迫的期限内进行机器学习,并推出初始版本的 ML 模型。然而这个产品并没有像谷歌所期望的那么受欢迎。
那么接替 Google 预测 API 的是什么呢?
Google 云端机器学习引擎
预测 API 的高度自动化是以牺牲灵活性为代价的。Google ML Engine 正好相反。它适用于经验丰富的数据科学家,非常的灵活,建议大家使用 TensorFlow 的云基础设施作为机器学习的驱动。Google ML Engine 大体上与 SageMaker 相似。
TensorFlow 是 Google 的另一个产品,它是一个开源机器学习库,包含各种数据科学工具,它并不是 ML-as-a-service。它没有可视化界面,TensorFlow 的学习曲线非常陡峭。但是,这个库也面向想要转向数据科学的软件工程师。TensorFlow 非常强大,主要针对深度神经网络的任务。
基本上,TensorFlow 和 Google 云服务结合,构成了三层服务模型,包括了基础架构服务和平台服务解决方案。
用一句话来总结机器学习服务平台:Azure 是目前 MLaaS 市场上拥有功能最多的工具集,它涵盖了大多数与 ML 相关的任务,为构建自定义模型提供了一个可视化的界面,并且为那些不想深入了解数据科学的人提供了一套可靠的 API。但是相较于亚马逊,它仍然缺乏自动化的能力。
Amazon,Microsoft,Google 机器学习 API 的比较
除了成熟的平台之外,还可以使用高级的 API。这些都是使用训练好的模型的服务,只需要将数据输入,就可以得到结果。API 不需要机器学习的专业知识。目前,这三家厂商的 API 大致可以分为三类:
文本识别,翻译和文本分析
图像+视频识别和相关分析
其他,包括某些未分类服务
语音和文本处理 API:Amazon
Amazon 提供了多个针对文本分析中常见任务的 API。这些 API 是高度自动化的,只需适当的整合就可以工作。
Lex API 是为了能将聊天机器人嵌入到应用中而设计的,它包含了自动语音识别(ASR)和自然语言处理(NLP)的能力。这些都基于深度学习模型。API 可以识别书面文本和语音,Lex 接口允许将识别出的结果连接到各种后端解决方案。很显然,亚马逊鼓励使用自家的 Lambda 云环境。所以在订阅 Lex 服务之前,最好熟悉一下 Lambda 云环境。除了独立的应用程序之外,Lex 目前也支持在 Facebook Messenger,slack 和 Twilio 部署聊天机器人。
Lex 是一个复杂的以聊天机器人为导向的工具,而 Transcribe 仅应用于语音识别。该工具可以识别多个说话人,同时也能很好的识别低质量的音频,比如电话音频。这些功能使得这个 API 成为音频归档分类的一个很好的解决方案, 也可以进一步为电话呼叫中心的数据文本分析提供支持。
Polly 服务与 Lex 相反,它是将文本转换为语音, 这能够使聊天机器人通过语音的方式回复,这个 API 并不会生成文本,只是让文本的发音更接近与人类。如果你曾经使用过 Alexa,你就会知道这种声音是什么样的。目前,它支持 25 种语言的男性和女性的声音,主要是英语和西欧语言。一些语言有多种男性和女性的声音,所以甚至可以有多种选择。与 Lex 一样,建议将 Polly 与 Lambda 一起使用。
Comprehend 是另一个 NLP API 集。与 Lex 和 Transcribe 不同,它针对不同的文本分析任务而设计。目前,Comprehend 支持:
实体提取(识别名字,日期,组织等等)
关键短语检测
语音识别
情感分析(文本是积极,中立,还是消极)
主题建模(通过分析关键字定义文本主题)
该服务可以帮助分析社交媒体的回复,评论,以及不适合手动分析的其他大型文本数据,比如 Comprehend 和 Transcribe 的组合将有助于分析客服的电话服务。
就像名称所表达的一样,Translate 服务是用来翻译文本的。Amazon 声称,该服务使用的神经网络,与基于规则的翻译方法相比,能够提供更高的翻译质量。然而,目前版本只支持阿拉伯文、中文、法文、德文、葡萄牙文和西班牙文这六种语言与英文的互译。
语音和文本处理 API:Microsoft Azure Congnitive Services
与亚马逊一样,微软也提供高级API:Congnitive Services,可以与你的基础平台集成到一起来完成任务,并不需要任何数据科学的专业知识。
Speech
Speech 集包含四个 API,针对自然语言识别和一些其他任务使用了不同类型的自然语言处理(NLP)技术:
语音翻译 API
Bing Speech API:文本和语音之间的互相转换
说话人识别:可用于语音验证任务
定制化的语音服务,可使用 Azure 的自然语言处理方法处理自己的数据和模型
Language
微软的 Language API 与 Amazon Comprehend 类似,侧重于文本分析:
Language Understanding Intelligent Service 是一个分析文本意图,并将之转换为命令的 API(例如「运行 YouTube」,或者「打开客厅灯」等)
用于情感分析和定义主题的文本分析 API
Bing 拼写检查
文本翻译 API
Web 语言模型 API,用于估计单词组合的概率,并实现单词的自动智能补全
语言分析 API,用于分句,标注词类,并将文本分成标记的短语
语音和本文处理 API:Google 云服务
虽然这套 API 与亚马逊、微软 Azure 的 API 相似,但也拥有一些独特和有趣的东西。
现今各种聊天机器人已经成为趋势,Google 也提供了一些服务。Dialogflow 采用了 NLP 技术,旨在发现文本中表达的意图,并解释人想要什么。可以使用 java,Node.js 和 Python 为 API 调整和定制功能。
这其中的核心功能几乎与 Amazon comprehend 和微软的 Languate 完全相同。
在文本中识别实体
识别情绪
分析语法结构
分类主题(比如食物, 新闻,电子等等)
这项服务用于识别自然语音,与其他公司类似的 API 相比,其主要优势在于 Google 支持更丰富的语言。目前,它支持全球 110 多种语言。额外功能如下:
Word hints,允许定制识别到特定的上下文或者默写单词(例如,可以更好的理解当地的或者行业内的术语)
过滤不当内容
处理嘈杂的音频
基本上,你可以使用该 API 将 Google 翻译集成到产品中,包含 100 多种语言的自动检测和翻译。
除了文本和语音,Aamzon,Microsoft 和 Google 还提供了用于图像和视频分析的常用 API。
尽管图像分析和视频 API 密切相关,但是许多视频分析工具仍处于开发或测试阶段。例如,Google 对许多图像处理任务提供了丰富的支持,但是缺乏一些微软和亚马逊已经支持的视频分析功能。
图像和视频处理API:Amazon Rekognition
Rekognition 并不没有拼错。Rekognition API 用于图像以及最近的视频识别任务。包括:
目标检测和分类(查找和检测图象中的不同目标,并定义他们的类别)
在视频中,可以检测「跳舞」等活动或者「扑灭火」这种复杂的动作
人脸识别(用于检测人脸,并找到匹配的人脸)和脸部分析(这个分析非常有趣,可以检测到笑脸,分析眼睛,甚至在视频中识别出情感情绪)
检测不当视频
识别图片和视频中的名人
图像和视频处理 API:Microsoft Azure Congnitive Service
软件包结合了六个 API,分别专注于不同类型的图像,视频和文本分析。
Computer Vision:用于识别目标、动作、图像中主体颜色
Content Moderator:在图像、文字和视频中检测不适当的内容
Face API:用来检测人脸并分组,识别年龄、情绪、性别、姿势、笑容和面部毛发
Emotion API:用来识别面部表情的工具
Custom Vision Service:支持使用自己的数据构建自定义的图像识别模型
Video indexer:是一种在视频中查找任务的工具,可以定义语音情感并标记关键字
图像和视频处理 API:Google Cloud Services
该工具为图像识别任务而建立,对于查找特定的图像属性非常有用:
标记对象
检测人脸并分析表情
寻找标志性事件并描述现场(例如假期、婚礼等)
在图像中查找文本并识别语言
图像中的主色调
Google 的视频识别 API 在开发初期就缺乏 Amazon Rekognition 和 Microsoft Congnitive Services 提供的许多功能。目前,该 API 提供以下工具集:
标记对象并识别动作
识别明确的内容
转录语音
虽然在功能级别上,Google AI 服务可能缺乏一些功能,但是 Google API 可以使用 Google 提供的大量数据集。
特定的 API 和工具
这一部分,我们将讨论微软和谷歌的特定 API 产品和工具。这里没有亚马逊,因为其 API 跟上面提到的文本分析和图像视频分析是一样的。但是,一些其他公司提供的特定 API 的一些功能也集成于 Amazon 的产品中。
Azure Service Bot 框架
微软为了给用户提供更灵活的开发工具集付出了很多努力。该服务包含通过不同编程语言构建、测试和部署 bot 的完整环境。
有趣的是,bot 服务并不一定需要机器学习方法。微软为 bot 工具提供了五种模板(基础模板、形式模板、语言理解模板、主动模板和问答模板),只有语言理解模板需要高级的人工智能技术。
目前,你可以使用 .NET 和 Node.js 技术,利用 Azure 构建机器人,并将其部署到平台和服务上:
Bing
Cortana
Skype
Web Chat
Office 365 email
GroupMe
Facebook Messenger
Slack
Kik
Telegram
Twilio
微软提供了连接 Bing 核心引擎的七个 API,包括自动推荐、新闻、图像和视频搜索。
该 API 将文本分析与各种任务相结合:
Knowledge Exploration Service 允许您输入自然语言的查询以从数据库中检索数据,可视化数据和自动完成查询。
Entity Linking Intelligence API旨在突出表示适当实体的名称,和短语(例如年龄),并确保消除歧义。
Academic Knowledge API可以完成单词的自动补全,从单词或者概念的角度,发现文档之间的相似性, 并在文档中搜索图模式。
QnA Maker API可用于各种问题与答案的匹配,以构建客户所关心的聊天机器人和应用程序。
Custom Decision Service是一种强化学习工具,可根据用户的喜好对不同类型的内容(如链接, 广告等) 进行个性化和排名。
该 API 仍处于开发早期,但可能在不久的将来重新定义我们当前的职位搜索能力。与传统的依赖精确的关键词匹配的传统求职引擎不同,Google 采用机器学习来找出高度不同的职位描述之间的相关联系,并避免模棱两可。例如,尽量减少不相关或者太广泛的搜索结果,例如在你搜索「sales assistant」时,并不会返回所有含有「assistant」单词的职位结果。这个 API 的主要特点:
修正工作搜索查询中的拼写错误
匹配所需的资历水平
查找和区分可能具有不同表现形式和行业术语的相关工作(例如,查询「server」(服务员)会返回「barista」(咖啡师)」,而不是「network specialist(网络专家)」; 或者在查询「biz dev「时,返回「engagement specialist」
处理首字母缩略词,例如查询「HR」返回人力资源助理
匹配不同的位置描述
IBM Watson 及其他
之前描述的所有三种平台都提供了相当详尽的文档,可以从头开始启动机器学习项目的实验,并在企业基础架构中部署了训练好的模型。还有一些其他的 ML-as-a-service 解决方案来自初创公司,并受到 PredicSis 和 BigML 等数据科学家的推崇。
那么 IBM Watson Analytics 怎么样?
IBM Watson Analytics 还不是一个用于商业预测的完整机器学习平台。目前,Watson 的优势是可视化数据,以及描述不同数据之间的相互作用。它还有类似于 Google 提供的视觉识别服务和一些其他的认知服务(API)。Watson 目前的问题是,该系统只能执行很少的一些相对简单的非专业的任务,涉及到定制机器学习方法或者预测任务时,IBM Watson 就无能为力了。
数据存储
如果团队中的数据科学家有足够的知识来操作流行的存储解决方案,那么寻找合适的存储方式来收集数据,并通过机器学习进一步处理数据现在已经不再是一个很大的挑战。
在大多数情况下,机器学习需要将 SQL 和 NoSQL 两种数据库方案相结合,Hadoop 分布式文件系统, Cassandra, Amazon S3 和 Redshift 等许多可靠的解决方案已经支持这种存储方案。因此,当开始机器学习项目时,数据存储并不是一个难以解决的障碍。如果你打算使用 ML-as-a-service 系统,最直接的方法就是,选择一个能同时提供机器学习算法和存储任务的供应商,这样能够减少很多花在配置数据库上的时间。
但是,有些平台也可以轻松与其他存储供应商集成。例如,虽然 Azure ML 主要与微软产品 Azure SQL, Azure Table,Azure Blob 集成,但是它也支持 Hadoop 和一些其他的数据源选项。这包括从桌面或者内部服务器直接上传数据。如果你的机器学习工作流程很多样化,并且数据来自多个来源,如何集成多个数据源可能是一个挑战。
建模和计算
我们已经讨论了主要提供计算能力的 ML-as-a-service 解决方案。但是如果模型学习的过程需要在公司内部执行,计算能力的挑战迟早会出现。机器学习在大多数情况下需要很多计算能力。即使大数据时代已经来临,数据采样(收集数据集)仍然是一个重要的问题。
虽然使用一个笔记本电脑就可以完成模型的构建,但是要用大型数据集来训练模型,复杂模型需要更强大的硬件。数据预处理也是如此,在常规的办公机器上可能需要几天的时间。在截止日期紧张的情况下,(有些模型需要每周或者每天更换,或者需要重新训练),这根本是不可能的。有三种可行的方法来解决这个问题:
加速硬件。如果执行相对简单的任务,并且不使用大数据训练模型,请使用固态硬盘(SSD)执行数据准备或分析等任务。可以使用一个或多个图形处理单元(GPU)解决计算密集型操作。许多编程库支持使用高级语言(例如 Python)控制 GPU 处理模型。
考虑分布式计算。分布式计算意味着有多台机器分别处理任务。但是这种方法并不适用于所有的机器学习技术。
使用云计算实现可扩展化。如果你的模型需要处理高峰值客户相关数据,使用云计算可以快速实现可扩展化。对于需要内部处理数据的公司,私有云的基础架构是值得考虑的。
下一步
在如此多的选择下,很容易迷失在各种可用的解决方案中。它们在算法上有所不同,所需的技能也不同,所以最终处理任务的结果也会不同。
对于这个年轻的市场,这种情况是非常常见的。即使是我们前面谈到的三个领先解决方案,也不是完全处于相互竞争状态。更重要的是,服务变化的速度常常出人意料。很可能当你坚持使用一个供应商的解决方案时,另一个供应商突然推出一些符合你业务需求的服务。
正确的做法是尽可能早的想清楚你打算用机器学习实现什么。这其实并不容易。如果你缺乏数据科学或者专业领域指示,那么在数据科学和商业价值之间的桥接就非常棘手。这通常是将一般化问题简化为单一属性的问题。无论是价格预测还是其他的数值,确定对象的类别还是将对象分组,一旦找到需要解决的属性,决定供应商并选择其所提供的服务就变得简单起来了。
DCVC 创始合伙人 Bradford Cross 认为,ML-as-a-Services 不是一个可行的商业模型。根据他的说法,这个模式定位在了使用开源产品的数据科学家和想要购买全套服务的商业高管之间的空白处。然而,目前业界似乎正在克服该模式长期存在的问题,最终我们会看到更多公司转向使用 ML-as-a-service 这种商业模式,以避免招聘工资高昂的数据科学家,并仍然能够使用足够多功能的数据工具。
Via kdnuggets
雷锋网 AI 研习社编译整理
雷峰网版权文章,未经授权禁止转载。详情见转载须知。