Javascript 侵入机器学习?

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

machine learning in javascript

基于 Javascript 的机器学习类库

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

convnetjs

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

      mxnetjs

      做过自然语言处理的同学,应该都知道 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 的机器学习项目,才重新想起来写。我认真梳理了下,没有找到性能问题的解决方案,囧。那只能寄希望于遥远的未来了:)。

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

      欢迎关注我的公众号,每周日的更新就会有提醒哦~

weixin_saomiao

      

此条目发表在算法荟萃, 编程开发分类目录,贴了标签。将固定链接加入收藏夹。

Javascript 侵入机器学习?》有 1 条评论

  1. Pingback引用通告: Javascript 侵入机器学习? - ootech-ootech

发表评论

电子邮件地址不会被公开。