Javascript 侵入机器学习?

大家可能都听说过 “亚特伍德定律” 这个笑话,大意是说任何能够由 JavaScript 所编写的内容最终都会由 JavaScript 进行编写。现在 Javascript 要侵入机器学习了嘛?一些工程师已经开始用 Javascript 编写机器学习的代码了。

基于 Javascript 的机器学习类库

目前最火的基于 Javascript 的机器学习类库莫过于 ConvNetJs。ConvNetJs 用 Javascript 实现了常用的深度学习算法,可以用于分类、回归和强化学习等。ConvNetJs 在 GitHub 上有超过 4000 颗星,800 多次 Fork。想想著名的深度学习框架 Theano 不到 3500 颗星,你就可以想象这个项目的红火程度了。如果你想在 Node.js 项目中使用 ConvNetJs,可以直接使用命令 npm install convnetjs 安装 ConvNetJs 模块。ConvNetJs 有很多很酷的可视化演示。

用 Javascript 的程序训练模型实在是太慢了。更实际的做法是用其他学习程序训练模型,然后 Javascript 程序使用训练好的模型做一些应用。MXNetJS便是这个思路。MXNetJS 是 dmlc/MXNet 的 Javascript 包。dmlc/MXNet 是陈天奇等大神开发的深度学习框架。MXNetJS 能够使用任何由 MXNet 训练好的模型 (需要先用 tools/model2json.py 将模型转化为 JSON 格式)。

做过自然语言处理的同学,应该都知道 Python NLTK 包。nlp_compromise相当于 Javascript 版的 NLTK。和 NLTK 一样,nlp_compromise 直接使用开发者训练好的模型,用户就可以不用自己训练模型了。

除了上述类库,有名的机器学习类库还包括,神经网络类库 (Brain.js)、支持向量机类库 (svmjs)、随机树类库 (Forest.js)、 数值计算类库 (Numeric.js) 和线性代数类库 (sylvester) 等。

基于 Javascript 的机器学习的讨论

基于 Javascript 的机器学习最大的问题是性能。我们知道大规模机器学习训练需要的计算资源是非常恐怖的。虽然 Javascript 的新一代 V8 引擎大幅度提高了速度,但距离满足机器学习训练还有一定的距离。现在人们为了提高机器学习性能干的事:GPU、多线程和分布式计算,Javascript 没搞定任何一个。即使对于预测,Javascript 的性能也还是太低。由于性能的限制,目前基于 Javascript 的机器学习只是一个非常有趣玩具。我没有听到,谁家在实际应用中使用了基于 Javascript 的机器学习。

随着技术进步,性能问题是有可能被解决的。我们用来发射愤怒的小鸟去砸猪的手机计算能力,已经超越了 NASA 1969 年拥有的计算能力的总和。NASA 用那些计算能力完成了世界奇观阿波罗计划。如果性能问题得到解决,Javascript 能够实现一个在任何地方和任何设备都可运行的应用。这是十分有吸引力。熟悉 Javascript 的前端工程师也使用机器学习了,这将大大地扩展机器学习的应用范围。

在36Kr实习的时候,我就想写 Javascript 和机器学习的稿子。但一直没有去梳理 Javascript 实现机器学习是怎么解决性能问题,就搁置了。最近看到微博上的 @爱可可-爱生活 介绍了几个国外基于 Javascript 的机器学习项目,才重新想起来写。我认真梳理了下,没有找到性能问题的解决方案,囧。那只能寄希望于遥远的未来了:)。

最近写文章越来越标题党了。这样很好:)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

译文 | 与TensorFlow的第一次接触(一)

本人对一直对高性能网络服务器,分布式存储比较感兴趣,在BAT时也一直从事架构开发,并没有做过机器学习相关工作,平时喜欢阅读分析开源代码,到目前为止已分析完约8套...

3356
来自专栏华章科技

数据挖掘:手把手教你做文本挖掘

文本挖掘指的是从文本数据中获取有价值的信息和知识,它是数据挖掘中的一种方法。文本挖掘中最重要最基本的应用是实现文本的分类和聚类,前者是有监督的挖掘算法,后者是无...

492
来自专栏技术翻译

关于TensorFlow你应该知道的9件事

TensorFlow是一个机器学习框架。如果你有大量的数据或你在人工智能中追求的最先进的东西,那么这个框架可能是你最好的选择:深度学习。

660
来自专栏新智元

Andrej Karpathy:神经网络是“软件2.0”,而非机器学习的一种工具

【新智元导读】深度学习和计算机视觉专家、特斯拉人工智能部门主管Andrej Karpathy最近提出将神经网络视为Software 2.0,而非“机器学习中的一...

3988
来自专栏人工智能头条

在机器学习模型运行时保持高效的方法

1232
来自专栏月色的自留地

从锅炉工到AI专家(11)(END)

1897
来自专栏腾讯移动品质中心TMQ的专栏

机器学习实现录像分帧速度测试

浏览器测试组一直将录像分帧作为速度测试的重要手段之一。录像分帧具有结果简单直观,证据保存完好等优点。所以,虽然录像分帧在效率上比不上代码埋点,Hook等方法,但...

2401
来自专栏机器之心

想轻松复现深度强化学习论文?看这篇经验之谈

选自Amid Fish 作者:Matthew Rahtz 机器之心编译 近期深度强化学习领域日新月异,其中最酷的一件事情莫过于 OpenAI 和 DeepMin...

3246
来自专栏BestSDK

50种机器学习和人脸识别API,收藏好!以后开发不用找啦

API 是一套用于构建软件程序的协议和工具。对于应用开发者而言,有了开放的 API,就可以直接调用其他公司做好的功能为我所用,这在很大程度上提升了工作效率。本文...

1143
来自专栏思影科技

结构脑网络的模块性分离,支持青年时期大脑功能执行的提升

宾夕法尼亚大学精神病学系的Satterthwaite等人在Current Biology期刊上发表了一项研究,用来解释青年时期的执行功能活动和大脑结构网络的成熟...

3687

扫码关注云+社区