本篇是系列博客的第四部分,如果没有看过前面两部分内容的读者建议阅读一下。
在第I部分内容中,主要是讲解人工智能的历史以及它现在高速发展的原因;
在第II部分内容中,将讨论一下人工智能、机器学习和深度学习之间的区别;
在第III部分内容中,将深入研究深度学习以及在为新项目选择数据库时需要评估的关键事项;
在今天的第IV部分内容中,将讨论深度学习为何使用MongoDB,并提供相关使用实例;
由于本文内容是第IV部分内容,讨论深度学习为何使用MongoDB,并提供相关使用实例。如果读者想快速将四部分的内容全部看完,可以下载本文的附件。
为什么MongoDB适合深度学习?
如果你没有阅读第III部分的内容,强力推荐阅读一下,以更多地了解在做深度学习项目时选择数据库应该考虑的关键因素有哪些。在以下的讲解部分中,开发者和数据科学家可以利用MongoDB作为一个灵活、可扩展、高性能的分布式数据库来满足人工智能应用开发的严峻考验。
灵活的数据模型
MongoDB的文档数据模型,便于开发者和数据科学家存储和结合其他任何数据库的数据,且没有放弃利用复杂的验证规则来管理数据的质量。该模式可以在不停用应用程序或数据库的情况下动态地修改数据,这是由关系数据库系统的模式修改或重新设计的代价高所引起的。
这种数据模型的灵活性对于深度学习是特别有价值的,这需要不断的实验来发现新的见解和预测:
输入数据集可以包括快速变化的结构化数据和非结构化数据,这些数据集可以从点击流、日志文件、社交网络和物联网传感器流、CSV文件、txt文本、图像、视频等,这些数据集很多都不能映射成关系数据库固定的行和列格式。
深度学习的训练过程中往往会增加新的隐藏层、特征标签、参数以及输入数据,这需要频繁地修改底层数据模型。
因此,一个支持各种输入数据集的数据库能够无缝地修改模型训练的参数,这对于深度学习而言是不可多得的。
丰富的编程和查询模型
MongoDB为开发者和数据科学家提供本地驱动程序和认证连接来建立深度学习模型,PyMongo驱动器是一个用于MongoDB的Python工具,也是一个被推荐的Python操作MongoDB数据库的方式。社区也开发了R语言的MongoDB客户端,这也可用于R语言程序员。
MongoDB的查询语句和丰富的二级索引使得开发人员能够开发应用程序,可以以多种方式查询和数据分析。数据可以在毫秒级的响应时间内通过单键、范围、文本搜索、图表和地理空间查询到复杂的聚合和MapReduce任务。
为了在分布式数据库集群上并行处理数据,MongoDB提供了聚合管道(aggregation pipeline)和MapReduce。MongoDB聚合管道是仿照数据处理管道的基本原理设计,数据经过一个一个的阶段,每阶段将数据处理后的结果传递给下一个阶段,最终得到多重处理后的结果。其中,最基本的管道阶段提供像查询等操作的过滤器及输出文档格式的转换等功能,其它管道操作提供按特定字段对文档进行分组、排序以及聚合数组中的内容等功能。此外,管道阶段可以使用操作符进行相关计算,比如计算跨文档集合的平均值或标准差等。MongoDB同样也提供了原生MapReduce操作,使用JavaScript函数来执行相关的map和reduce阶段。
除了原生的查询框架外,MongoDB同样也提供了针对Apache Spark的一种高性能连接器,该连接器连接了Spark所有的库,包括Python、R、Scala和Java。对于机器学习、图表以及SQL API等分析而言,MongoDB数据可以作为其数据帧和数据集。
针对于Apache Spark的MongoDB连接器可以利用好MongoDB的聚合管道以及提取、筛选和处理其所需数据范围的二级索引。比如,分析特定地理位置的所有客户这一任务,简单的非关系数据存储不支持二级或在数据库中聚合。而在这种情况下,Spark需要基于简单的主键提取所有数据,这意味着数据科学家和工程师们在进行该过程时需要更多的时间上和硬件上的开销。为了最大限度地提高性能,对于分布式数据集而言,MongoDB连接器可以将弹性分布数据集(RDDs)和源MongoDB节点同地协作,进而最小化跨集群之间的数据移动并减少延迟。
可升缩性和冗余性
模型的训练时间可以通过建立一个深度学习平台以及可扩展数据库层来减少,MongoDB提供了以下一些措施来尽可能地增大吞吐量以及尽可能地减少深度学习工作负载的延迟。
WiredTiger是MongoDB的默认存储引擎,也是世界上部署最广泛的嵌入式数据管理软件,它是基于现代多核架构,并使用了多种编程技术,如风险指针、无锁算法、快速锁定和消息传递等。WiredTiger尽可能地增大每个CPU核和时钟周期内的计算工作量,此外,WiredTiger使用紧凑的文件格式和压缩存储尽可能地减少磁盘开销。
对于大多数对延迟敏感的深度学习应用而言,MongoDB可以配置存储引擎。基于WiredTiger这个存储引擎,可以在不牺牲传统数据库提供的丰富灵活查询、实时分析和可升缩能力的情况下,为用户提供内存计算的好处。
为了并行地进行模型训练以及缩放输入数据集,MongoDB使用分片(sharding)技术。MongoDB分片是完全弹性地、自动地调整集群中的数据作为输入数据集的增长,或者是添加和删除节点。
在MongoDB集群中,每个分片数据自动分发到多个驻留在不同节点上的多个副本,其副本集提供冗余性以在训练数据发生故障时恢复数据,并减少检查点的开销。
可调一致性
在一般情况下,MongoDB具有强一致性。启动深度学习应用程序可用立体读取已写入的数据库中的内容,从而避免了最终一致性系统导致的开发人员复杂。强一致性会为机器学习算法提供最准确的结果,然而,在某些情况下,如随机梯度下降算法(SGD),其结果不是很好但尚可接受。
MongoDB人工智能部署情况
基于MongoDB具备上述讨论的性质,MongoDB已经作为许多人工智能和深度学习平台的数据库,不同应用程序和行业用户的选择如下:
IBM Watson:分析与可视化
沃森分析是IBM的云托管服务,提供智能数据发现来指导数据探索、自动预测分析和可视化输出。沃森分析应用场景十分广泛,比如银行、保险、零售、电信、石油和政府应用等。MongoDB被用来管理数据存储,提供所有源数据集的元数据和分析可视化,并存储在丰富的JSON文档结构中,可以支持数以万计的用户并发访问服务。
x.ai:个人助理
x.ai是智能驱动的个人助理,它能够为用户安排会议。用户将他们的日历连接到x.ai上,然后只要邮件抄送给amy@x.ai,该公司的虚拟私人助理Amy就能接手你的会议日常安排。MongoDB作为x.ai的整个平台记录系统,支持所有的服务,包括自然语言处理、有监督学习、分析和电子邮件通信等。MongoDB灵活的数据模型成为使得x.ai迅速适应于训练集和输入数据集的关键,同时也支持复杂的数据结构。更多内容可以看此案例了解。
汽车贸易商:预测价值
英国最大的汽车市场广泛应用机器学习,使用的关于车的规格及细节数据都存储在MongoDB中。比如,先前车主的个数、颜色、里程数、保险历史等。这些数据由汽车贸易商的数据科学团队编写的机器学习算法提取得到,并建立模型以预测准确的价值,然后再写入数据库中,选择MongoDB由于其灵活的数据模型和分布式设计。更多内容可以看此案例了解。
Mintigo:销售和市场预测
Mintigo是一家以企业为重点的预测市场和销售的平台。在B2B营销领域,Mintigo利用数据进行营销分析和预测,识别最有可能购买其产品的潜在客户,帮助公司客户提升销量。Mintigo运行在AWS上,是用Python编写的机器学习算法。MongoDB被用来存储TB量级的数据集,这是看中了其数据流采集和存储的可扩展性和灵活性、高效的查询框架和二级索引,而无需扫描数据库中的所有记录。更多内容可以看此案例了解。
零售定位分析
一个美国的移动APP开发者在MongoDB上建立的智能引擎,实时处理和存储数以百万计顾客的丰富地理空间数据点。该智能引擎使用可伸缩的机器学习和多维分析技术来展示行为模式,允许零售商通过移动设备预测和定位目标客户。MongoDB支持具有复杂索引和查询的空间数据结构,为机器学习算法提供基础。MongoDB的分片扩展设计使得公司可以容纳10-100百万的客户数据点。
自然语言处理(NLP)
一个北美的人工智能开发者已经构建了由主要消费电子产品嵌入到智能家居和移动设备中的自然语言处理软件。设备和用户之间的所有交互都存储在MongoDB中,然后反馈给学习算法。选择MongoDB的原因是其架构的灵活性,且支持快速变化的数据结构。
将数据科学引入人才招聘
该公司与财富500强的人力资源部门合作,利用数据科学和员工情况处理成堆的简历和候选者。该公司通过将人工智能应用于简历以外的数据数千个信息源,包括公共的和企业数据,为申请者提供实时分析和优先次序。通过人工智能算法产生的预测分析,招聘人员可以立即确定主动申请以及潜在的应聘者中最佳的候选人,加快整个招聘过程、降低雇佣成本。选择MongoDB作为底层数据库是由于其数据模型的灵活性和可伸缩性,此外,大范围的安全管理权保护了个人可识别信息(PII)。
作者信息
Mat Keep,产品营销总监,目前就职于MongoDB团队。
个人主页:https://www.linkedin.com/in/matkeep/
本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。
文章原标题《Deep Learning and the Artificial Intelligence Revolution: Part 4》,作者:Mat Keep,译者:海棠,审阅:袁虎。