使用JavaScript学习机器学习的4个原因

6

本文是我们的系列文章的一部分“AI教育”(与Paperspace

在过去的几年里,Python已成为机器学习和深度学习的首选编程语言。最多书籍和网络课程Python已经变得非常流行,因为它拥有丰富的机器学习和深度学习库、优化的实现、可伸缩性和通用特性。

但是Python并不是编程机器学习应用程序的唯一选择。使用JavaScript运行机器学习模型的开发人员群体正在不断壮大。

虽然JavaScript不是替代丰富的Python机器学习景观(但是),但有几个有原因有JavaScript机器学习技能。这是四个。

私人机器学习

最多机器学习应用程序依赖于客户端 - 服务器体系结构。用户必须发送他们的数据运行机器学习模型的数据。客户端 - 服务器架构有明显的好处。开发人员可以在服务器上运行模型,并通过Web API使其可用于用户应用程序。这使得开发人员可以使用非常大神经网络不能在用户设备上运行。

然而,在许多情况下,最好是在用户的设备上执行机器学习推理。例如,由于隐私问题,用户可能不希望将他们的照片、私人聊天消息和电子邮件发送到机器学习模型运行的服务器。

幸运的是,并非所有机器学习应用程序都需要昂贵的服务器。许多模型可以压缩以在用户设备上运行。移动设备制造商也在他们的设备上安装了支持本地的芯片深度学习推理。

但问题是,Python机器学习在许多用户设备上不被默认支持。MacOS和大多数Linux版本都预装了Python,但你仍然需要单独安装机器学习库。Windows用户必须手动安装Python。移动操作系统对Python解释器的支持非常差。

另一方面,JavaScript由所有现代移动和桌面浏览器本地支持。这意味着JavaScript计算机学习应用程序保证在大多数桌面和移动设备上运行。因此,如果您的机器学习模型在浏览器中的JavaScript代码上运行,则可以放心,几乎所有用户都可以访问它。

已经有几个JavaScript机器学习库。一个例子是TensorFlow.js,谷歌著名的TensorFlow机器学习和深度学习库的JavaScript版本。如果你去tensorflow.js演示页面在智能手机、平板电脑或台式电脑上,您将发现大量使用JavaScript机器学习的现成示例。他们会在你的设备上运行机器学习模型,而不会向云端发送任何数据。而且你不需要安装任何额外的软件。其他强大的JavaScript机器学习库包括ML5.JS.突触, 和脑子.js.

tensorflow.js示例
tensorflow.js应用程序的示例

快速和定制的ML型号

隐私并不是设备上机器学习的唯一好处。在某些应用程序中,从设备向服务器发送数据的往返过程可能会造成延迟,从而影响用户体验。在其他情况下,用户可能希望能够运行他们的机器学习模型,即使他们没有互联网连接。在这些情况下,拥有运行在用户设备上的JavaScript机器学习模型会非常方便。

JavaScript机器学习的另一个重要用途是模型自定义。例如,假设您要开发一个文本生成机器学习模型,适应每个用户的语言偏好。一个解决方案是在服务器上每名用户存储一个模型并在用户的数据上培训它。这将在您的用户增长时为您的服务器提供额外的负载,并且还要求您在云中存储可能的敏感数据。

另一种方法是在服务器上创建基本模型,在用户设备上创建副本,并使用JavaScript机器学习库使用用户数据微调模型。

一方面,这将把数据保存在用户的设备上,无需将数据发送到服务器。另一方面,它将通过避免向云发送额外的推断和训练负载来释放服务器的资源。用户仍然可以使用他们的机器学习能力,即使他们断开了你的服务器。

客户端机器学习模型
客户端机器学习允许开发人员在用户设备上运行定制模型

在Web和移动应用程序中轻松集成机器学习

JavaScript机器学习的另一个好处是很容易与移动应用程序集成。移动操作系统中的Python支持仍处于初级阶段。但是已经有一套丰富的跨平台JavaScript移动应用开发工具,如Cordova和Ionic。

这些工具已经很受欢迎,因为它们使您能够编写一次代码并为iOS和Android设备部署它。为了使跨不同操作系统兼容的代码,跨平台开发工具启动“WebView”,可以运行JavaScript代码的浏览器对象,可以嵌入目标操作系统的本机应用程序。这些浏览器对象支持JavaScript计算机学习库。

一个例外是React Native,它是一个流行的跨平台移动应用开发框架,不依赖于webview来运行应用程序。然而,鉴于移动机器学习应用的普及,谷歌发布了一个特殊版本的tensorflow.js用于反应本地

如果你已经用本地代码编写了你的移动应用程序,并想要集成你的JavaScript机器学习代码,你可以添加自己的嵌入式浏览器对象(如iOS中的WKWebView)到你的应用程序。

有其他机器学习库对于移动应用,例如TensorFlow Lite核心ML..但是,它们需要在您正在开发应用程序的移动平台中使用本机编码。另一方面,JavaScript Machine学习非常多样化。如果您已经为浏览器实施了机器学习申请的版本,则可以轻松地将其移植到移动应用程序,几乎没有任何更改。

服务器上的JavaScript机器学习

机器学习的主要挑战之一是训练模型。这对于深度学习来说尤其如此,在深度学习中,学习需要在几个时期进行昂贵的反向传播计算。虽然你可以在用户设备上训练深度学习模型,但如果神经网络很大,可能需要几周或几个月的时间。

Python更适合机器学习模型的服务器端训练。它可以在服务器集群上扩展和分配负载,以加速训练过程。一旦模型经过训练,您就可以压缩它并将其交付到用户设备上进行推断。幸运的是,用不同语言编写的机器学习库是高度兼容的。例如,如果您使用TensorFlow或Keras For Python训练您的深度学习模型,您可以将其保存为几种独立于语言的格式之一,如JSON或HDF5。然后,你可以将保存的模型发送到用户的设备,并使用TensorFlow.js或其他JavaScript深度学习库加载它。

但值得注意的是,服务器端JavaScript机器学习也在成熟。您可以在Node.js上运行JavaScript计算机学习库,JavaScript应用程序服务器引擎。TensorFlow.js具有适用于运行Node.js的服务器的特殊版本。您用来与TensorFlow.js交互的JavaScript代码是相同的,您将在浏览器中运行的应用程序使用。但在后台,库利用服务器的特殊硬件加速培训和推理。Pytorch是另一个受欢迎的Python Machine库,尚未拥有官方的JavaScript实现,但openSource社区已为库开发了JavaScript绑定。

使用Node.js进行机器学习是一项相当新的技术,但它正在快速发展,因为人们对将机器学习能力添加到web和移动应用程序越来越感兴趣。随着JavaScript机器学习社区的不断发展和工具的不断成熟,它可能会成为许多想要将机器学习添加到自己技能集的web开发人员的首选。

留下一个回复

本网站使用AkisMet减少垃圾邮件。了解如何处理您的评论数据