AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

  • 2021-05-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-05-18 09:302724
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 570.7 次阅读, 收获喜欢 1979 次。

关注

评论

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

长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进

JackJiang

即时通讯;IM;网络编程

【论文速读】| TroubleLLM:与红队专家对齐

云起无垠

LED显示屏品质受LED灯珠的影响

Dylan

性能 信息 LED显示屏 全彩LED显示屏 led显示屏厂家

聊聊Swift中的宏

珲少

Databend Cloud 正式上线腾讯云市场,加速挖掘数据创新价值

Databend

天谋科技专家解析自动化领域正在经历的 IT 行业的老路

Apache IoTDB

开放签电子签章第一季度总结和第二季度目标

开放签开源电子签章

开源 电子合同 电子签章

多元 CPU 性能调优的技术挑战、产品设计和业务实践

百度Geek说

cpu 百度智能云 企业号 4 月 PK 榜 btune

智能调度|AIRIOT智能车队管理解决方案

AIRIOT

物联网平台 智慧系统 智能车队管理

接口自动化测试工程实践分享

智在碧得

数据 测试流程 接口自动化测试 自动化测 测试自动化工具

深入理解Transformer技术原理 | 得物技术

得物技术

架构 Transformer AIGC 企业号 4 月 PK 榜 注意力机制

华为云CodeArts IDE For Python 快速使用指南

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云CodeArts 企业号2024年4月PK榜

电商新宠:淘宝拍立淘API接口助力精准搜索商品信息

技术冰糖葫芦

API 接口 API 测试 pinduoduo API

[图数据库]gStore1.2在Ubuntu和Java环境下的安装与试用

alexgaoyh

Java ubuntu 国产化 图数据库 gstore

科幻成真,未来已来!“2024上海智能机器人展会”大赏前瞻

AIOTE智博会

机器人展 智能机器人展 机器人展览会

国际标准图查询语言 GQL 正式发布,悦数图数据库业界首家原生支持

悦数图数据库

芜湖等保测评机构有哪些?在哪里?

行云管家

等保 等保测评 芜湖

Open WebUI大模型对话平台:适配Ollama的实践与探索

百度开发者中心

人工智能 大模型

多高的学历才能轻松找到工作?这个热点有点扯吧~

王中阳Go

Go 面试题 大厂面经 求职面试 面试行情

国密加密卡定义以及作用简单说明

行云管家

数据安全 国密 国密加密卡

K8s集群nginx-ingress监控告警最佳实践

华为云开发者联盟

k8s 华为云 华为云开发者联盟 华为云CCE 企业号2024年4月PK榜

GaussDB(DWS)基于Flink的实时数仓构建

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云GaussDB(DWS) 企业号2024年4月PK榜

容器化Java程序秒级弹性伸缩实践

HelloGeek

Java 容器 弹性伸缩

充电桩项目敏捷开发实践分享

智在碧得

敏捷开发管理 敏捷实践 敏捷开发流程 敏捷实践工具 #敏捷开发

文心大模型ERNIE-Tiny:轻量化技术的全面解读

百度开发者中心

人工智能 大模型

通过阿里云向量检索 Milvus 版和通义千问快速构建基于专属知识库的问答系统

阿里云大数据AI技术

人工智能 大数据 阿里云 Milvus

聚贤帮斩获“公益明星组织奖”,赵远峰表示将坚守公益初心

科技汇

用JavaScript学习机器学习的4个理由_AI&大模型_Ben Dickson_InfoQ精选文章