本篇是系列博客的第四部分,如果没有看过前面两部分内容的读者建议阅读一下。
在第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数据可以作为其数据帧和数据集。
网友评论