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 条评论
登录 后参与评论

相关文章

来自专栏新智元

zi2zi:用条件生成对抗网络玩转中文书法,绝妙汉字字体自动生成

【新智元导读】Github 用户 kaonashi-tyc 将字体设计的过程转化为一个“风格迁移”(style transfer)的问题,使用条件 GAN,训练...

60215
来自专栏企鹅号快讯

输验证码输到崩溃?教你15分钟黑掉全球最流行的验证码插件

大数据文摘作品 编译:Katrine Ren、朝夕、钱天培 验证码这种东西真的是反人类。虽然它在保证账号安全、反作弊以及反广告有着至关重要的作用,但对于普通用户...

2208
来自专栏机器之心

资源 | 十五分钟完成Regex五天任务:FastText,语料库数据快速清理利器

40811
来自专栏AI科技大本营的专栏

资源 | 我们从8800个机器学习开源项目中精选出Top30,推荐给你

最近,Mybridge发布了一篇文章,对比了过去一年中机器学习领域大约8800个开源项目后,选出30个2017年度优秀的开源项目,包含机器学习开源库、数据库以及...

3367
来自专栏数据小魔方

图表案例——关于欧盟公投的年龄分布比较

今天跟大家分享一个图表案例——关于欧盟公投的年龄分布比较。 原图表如下: ? 乍看有点儿摸不着头脑,这个图表反应的信息其实很简单,就是不同年龄段中选择留在欧盟...

3456
来自专栏新智元

【深度学习Github 10万+源代码分析】Python是第三受欢迎语言

【新智元导读】编程语言是软件开发的主要工具。自20世纪40年代以来,已经有数百种语言被发明出来,每天大量的各种语言编写的代码活跃着代码库。本文作者从 GitHu...

3478
来自专栏PPV课数据科学社区

用 Python 做文本挖掘的流程

作者:肖智博 来源:https://zhuanlan.zhihu.com/p/19630762 点击阅读原文可进入超链接。 收集数据 数据集。如果是已经被人做...

4068
来自专栏CVer

TensorFlow.js人脸识别—玩转吃豆豆小游戏

谷歌TenosrFlow开发者峰会2018上,发布了面向JavaScript开发者的全新机器学习框架 TensorFlow.js。这里介绍一个TensorFlo...

43412
来自专栏数据小魔方

R语言可视化——多边形与数据地图填充

ggplot函数中有一类特殊的图表类型叫做多边形,很难用传统的视角来定义它属于哪一类图表,因为它能够呈现信息多种多样。 特别是在做某些比较高阶的图表——地图时,...

2704
来自专栏阮一峰的网络日志

相似图片搜索的原理

上个月,Google把"相似图片搜索"正式放上了首页。 你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。 ? 一个对话框会出现。 ?...

4487

扫码关注云+社区