PCon全球产品创新大会最新日程上线,查看更多 了解详情
写点什么

用 JavaScript 学习机器学习的 4 个理由

  • 2021 年 5 月 18 日
  • 本文字数:2763 字

    阅读完需:约 9 分钟

用JavaScript学习机器学习的4个理由

过去的几年中,Python 已成为机器学习和深度学习的首选编程语言。与机器学习和深度学习相关的大多数书籍和在线课程要么只用 Python,要么再带上 R 语言。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、Synaptic 和 Brain.js。


上图:TensorFlow.js 应用程序的示例。

快速和定制的 ML 模型


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


JavaScript 机器学习的另一个重要用途是模型定制。例如,假设你要开发一个文本生成机器学习模型,可以适应每个用户的语言偏好。一种解决方案是在服务器上为每个用户存储一种模型,并根据用户的数据对其进行训练。随着用户的增长,这将给服务器增加额外的负载,并且还需要你将潜在的敏感数据存储在云端。


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


一方面,这会将数据保留在用户的设备上,而无需将其发送到服务器。另一方面,这样就无需向云端发送额外的推理和训练负载,从而解放服务器的资源。而且,即便用户与服务器断开连接,他们仍然可以使用机器学习功能。



上图:客户端机器学习允许开发人员在用户设备上运行自定义模型。

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


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


这些工具非常受欢迎,因为你可以用它们只编写一次代码就部署到 iOS 和 Android 设备上。为了让代码在不同的操作系统之间保持兼容,跨平台开发工具会启用一个“Webview”,这是一个可以运行 JavaScript 代码并能嵌入到目标操作系统的原生应用程序中的浏览器对象。这些浏览器对象支持 JavaScript 机器学习库。


一个例外是 React Native,一种流行的跨平台移动应用程序开发框架,它不依赖 Webview 来运行应用程序。但是,鉴于移动机器学习应用程序的普及,谷歌已经为 React Native 发布了 TensorFlow.js 的一个特别版本。


如果你是用原生代码编写移动应用,并且希望集成 JavaScript 机器学习代码,则可以将自己的嵌入式浏览器对象(例如 iOS 中的 WKWebView)添加到你的应用中。


还有其他一些针对移动应用程序的机器学习库可选,例如 TensorFlow Lite 和 CoreML。但是,它们需要在移动应用的目标平台中编写原生代码。相比之下,JavaScript 机器学习兼容性极佳。如果你已经实现了机器学习应用程序的浏览器版本,则只需很少或不做任何更改即可轻松将其移植到移动应用程序中。

服务器上的 JavaScript 机器学习


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


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


但值得注意的是,服务端 JavaScript 机器学习也在日趋成熟。你可以在 JavaScript 应用服务器引擎 Node.js 上运行 JavaScript 机器学习库。TensorFlow.js 有一个适用于运行 Node.js 的服务器的特别版本。与 TensorFlow.js 交互的 JavaScript 代码与在浏览器中运行的应用程序所使用的 JavaScript 代码相同。但在后台,这个库利用服务器上的特殊硬件来加快训练和推理速度。PyTorch 是另一种流行的 Python 机器学习库,目前还没有正式的 JavaScript 实现,但开源社区已经为这个库开发了 JavaScript 绑定。


使用 Node.js 进行机器学习是一个相当新的概念,但它正在快速发展,因为人们越来越有兴趣在 Web 和移动应用程序中添加机器学习功能。随着 JavaScript 机器学习社区的不断发展和相关工具的不断成熟,对于许多希望在自身技能组合中添加机器学习的 Web 开发人员来说,这种技术可能会成为他们的首选。

作者介绍


Ben Dickson 是一名软件工程师,也是 TechTalks 的创始人,这个博客探讨了技术是如何解决和制造问题的。


原文链接:


https://venturebeat.com/2021/04/23/4-reasons-to-learn-machine-learning-with-javascript/

2021 年 5 月 18 日 09:301332
用户头像
刘燕 InfoQ记者

发布了 765 篇内容, 共 249.7 次阅读, 收获喜欢 1461 次。

关注

评论

发布
暂无评论
发现更多内容

设计是表达的艺术,不是艺术的表达

Yisen玩设计

活动预告 | OpenMLDB Meetup No.1

第四范式开发者社区

人工智能 机器学习 开源

Office2021 和Microsoft 365分不清?这样选最划算

淋雨

Office 365

26个主流机器学习算法的实现,获4万好评,这本机器学习宝典终于来了!

图灵教育

机器学习 代码 公式

TDengine助力京东云IoT数据统计改造

TDengine

数据库 tdengine OpenTSDB

知乎基于Palo的用户画像和实时数仓构建实践

百度开发者中心

大数据

通用数据保护条例的监管下,你的数据湖“断舍离”了吗?

亚马逊云科技 (Amazon Web Services)

存储

【网络安全】红蓝攻防:shellcode的分析

H

网络安全 WEB安全

如何利用Spot,成本与稳定同时兼得

jinjin

spot 热池 spotmax

iOS开发-数据结构与算法学习之排序篇

iOSer

ios 算法 数据结构与算法 ios开发 iOS 知识体系

python特效之字符成像

autofelix

1 月月更 python特效

美容院CRM系统解决方案

低代码小观

CRM 客户关系管理 CRM系统 客户关系管理系统 企业管理工具

不听话的 Container

百瓶技术

flutter 布局与组件

C++太难学,怎么破?这本书给你指点迷津!

图灵教育

c++ 编程 入门

Tableau Day2: 可视化入门图形制作

贾献华

1 月月更

SphereEx 创始人张亮荣获『2021 年度海纳奖——分布式数据库十佳实践人物』

SphereEx

数据库 开源 ShardingSphere SphereEx 海纳奖

青藤:业务迁移到容器云上的6个注意事项

青藤云安全

敏捷开发在互联网时代里的价值

力软.net/java开发平台

浅谈云上攻防——云服务器攻防矩阵

腾讯安全云鼎实验室

云原生 云上安全攻防

低代码音视频开发训练营正在火热报名中!

阿里云视频云

阿里云 低代码 低代码平台 媒体处理 视频云

在Amazon SageMaker中灵活使用多种存储服务

亚马逊云科技 (Amazon Web Services)

存储

以搭建Vuepress文档为例,展示用VSCode来远程开发

为自己带盐

vscode 1 月月更 远程开发

优化服务器存储架构——Amazon EBS io2 Block Express正式推出!

亚马逊云科技 (Amazon Web Services)

存储

常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源

云智慧AIOps社区

安全 监控宝 监控工具 开源软件 运维管理

敏捷真的是开发者的绊脚石吗?

LigaAI

敏捷开发

【量化】量化交易入门系列4:经典的量化交易策略(下)

恒生LIGHT云社区

量化策略 量化投资 量化交易 量化

红米做自动化测试的坑可真多啊

IT蜗壳-Tango

IT蜗壳教学 1月月更

应用营销策略知多少?

坚果

产品设计 1 月月更

用JavaScript学习机器学习的4个理由-InfoQ