文章选自blog.bitsrc.io,做者:Jonathan Saring,机器之心编译。
本文做者在构建 Bit 的过程当中探索和尝试了把 Javascript 和机器学习结合起来使用的可能性,并由此发现了一些简洁优雅的库,能够把 Javascript、机器学习、DNN 甚至 NLP 整合起来。
「等等,什么??这是一个可怕的想法!」
当我第一次和咱们的 NLP 主要研究人员谈起这个概念时,她的原话是这样的。可能她是对的,但它也是一个很是有趣的概念,最近在 Javascript 领域获得了愈来愈多的关注。javascript
在过去的一年中,咱们的团队正在构建 Bit(https://bitsrc.io/),它使得用组件构建软件变得更加简单。做为工做的一部分,咱们开发了 ML 和 NLP 算法,来更好地理解代码是如何编写、组织和使用的。java
虽然大多数工做都是用 Python 这样的语言完成的,但 Bit 位于 Javascript 生态系统中,它的前、后端社区都是如此。node
这个有趣的交集让咱们探索和尝试了一块儿使用 Javascript 和机器学习的奇怪可能性。经过咱们的研究发现,这里有一些简洁的库,能够将 Javascript、机器学习、DNN 甚至 NLP 结合在一块儿。git
1. Brain.js
Brain.js 是一个用于神经网络的 Javascript 库,用于代替 (如今已经弃用的)「brain」库,它能够和 Node.js 一块儿使用,或在 browser(注意计算)中使用,并为不一样任务提供不一样类型的网络。如下是训练网络来识别色彩对比的例子。
连接:github.com/BrainJS/bra…github
2. Synaptic
Synaptic 是一个用于 node.js 和浏览器的 Javascript 神经网络库,它使你可以训练一阶甚至是二阶神经网络结构。该项目包括一些内置的体系结构,如多层感知机、多层长短时间记忆网络、液体状态机和可以训练真实网络的训练器。
连接:github.com/cazala/syna…web
Synaptic 图像过滤感知器
3. Neataptic
这个库为浏览器和 Node.js 提供快速的神经元进化和反向传播,而且有一些内置的网络,包括感知器、LSTM、GRU、Nark 等等。这里是一个简单训练的新手教程:https://wagenaartje.github.io/neataptic/docs/tutorials/training/。
连接:github.com/wagenaartje…算法
4. Conventjs
这个由斯坦福大学博士开发的流行库,在过去的 4 年里一直没有维护,但它是列表上最有趣的项目之一。它是神经网络的 Javascript 实现,支持通用模块、分类、回归、一个试验性的强化学习模块,甚至可以训练处理图像的卷积网络。
连接:github.com/karpathy/co…chrome
用 2 层神经网络进行玩具 2D 分类的 Conventjs 演示
5. Webdnn
这个日本制造的库用于在浏览器上运行深度神经网络预训练模型,而且运行速度很快。因为在浏览器上运行 DNN 会消耗大量计算资源,所以该框架优化了 DNN 模型来压缩模型数据,并经过 JavaScript APIs(如 WebAssembly 和 WebGPU)加速执行。
连接:github.com/mil-tokyo/w…apache
6. Deeplearnjs
这个流行的库容许你在浏览器中训练神经网络,或者在推理模式下运行预训练模型,甚至声称它能够用做网页版 NumPy。经过易于读取的 API,该库可用于有用应用程序的真实性,并被积极地维护。
连接:github.com/tensorflow/…编程
7. Tensorflow Deep Playground
Deep playground 是神经网络的交互式可视化,使用 d3.js 在 TypeScript 中编写。虽然这个项目包含了一个很是基本的 tensorflow playground,但它能够被用于不一样的目的,或用做使人印象深入的不一样用途的教育功能。
连接:github.com/tensorflow/…
8. Compromise
这个很是流行的库提供了「在 JavaScript 中适度的天然语言处理」。它很是基本和直接,甚至能够编译成一个小文件。出于某种缘由,它的适度的「足够好」的方法使其成为几乎全部须要基本 NLP 的应用程序的首选。
连接:github.com/spencermoun…
9. Neuro.js
这个项目很棒,它为浏览器提供一个深度学习和强化学习的 Javascript 库框架。它在扩展强化学习支持下,实现一个基于全栈神经网络的机器学习框架,有些人认为这个项目是 convnet.js 的继承者。
连接:github.com/janhuenerma…
10. mljs
11. Mind
其余重要的库:
Natural
Node.js 的一个积极维护的库,它提供标记法、词干提取(减小没必要要的词根)、分类、语音学、tf-idf、WordNet、字符串类似度等。
Incubator-mxnet
Apache MXNet 是一个深度学习框架,它容许你将符号和命令式编程与图形优化层在线结合起来以提升性能。MXnet.js 为浏览器带来了一个深度学习推理 API。
Keras JS
该库在浏览器中运行 Keras 模型,使用 WebGL 并支持 GPU。因为 Keras 使用了许多框架做为后端,因此模型也能够在 TensorFlow、CNTK 和其余框架中进行训练。
Deepforge
一个深度学习的开发环境,它使你可以快速设计神经网络结构和机器学习管道,并使用内置版本控制再现实验。值得一试。
Land Lines
与其说它是一个库,不如说是一个基于谷歌 Chrome 实验的很是酷的演示/网页游戏。尽管我不肯定该如何处理,但它确定会为你带来一天中最愉快的 15 分钟。
显然,Javascript 远没有成为机器学习选择的语言。然而,诸如性能、矩阵操做和丰富有用的库等常见问题正在慢慢消失,缩小了常见应用和有用的机器学习之间的差距。