10个机器学习的JavaScript示例
在过去的每一年,用于机器学习(Machine Learning)的库在变得越来越快和易用。一直以来Python都是机器学习的首选语言,但现在几乎可将所有语言用于神经网络(neural networks),这里当然也包括JavaScript!
近几年,Web生态系统取得了很大进步,虽然JavaScript和Node.js的性能比Python和Java略差,但它们已足够处理许多机器学习问题。Web语言具有被广泛且易于使用的优势——你只需一个Web浏览器就可以运行一个JavaScript语言编写的机器学习项目。
虽然许多JavaScript语言编写的机器学习库是刚刚诞生并且还在持续开发中,但还是值得去尝试使用它们。这篇文章会介绍几个JavaScript语言编写的机器学习库以及一些很酷的AI Web应用示例,它们可以很好的帮助你开始AI之旅。
1. Brain
使用Brain 可以轻松的创建神经网络,并且可通过输入/输出数据对它进行训练。因为训练神经网络会消耗比较多的资源,所以推荐在Node.js环境中而不是直接使用浏览器来训练神经网络。在官网上有个可以识别颜色(recognize color contrast)的小demo (PS:试了下,这个demo现在是404页面)。
2. Deep playground
这是一个寓教于乐的Web应用,可以让你以游戏的方式来探索神经网络的不同部分。它有一个友好的界面用于让你控制数据的输入,算法所用的神经元数量以及其它一些会影响输出结果的权值因素。这是一个开源项目,它是使用TypeScript编写的机器学习库并且有完善的文档,从中我们可以许多东西。
3. FlappyLearning
FlappyLearning 项目大约800行代码,这个项目包含一个机器学习库并且实现了一个很有趣的demo——学习玩 Flappy Bird 游戏。它使用了一种叫做 Neuroevolution 的AI技术,使用了受自然神经系统激发而产生的算法,可以从每次成功或失败的迭代中进行动态进行学习。
4. Synaptic
Synaptic是一个架构无关(architecture-agnostic)且得到积极维护的Node.js和浏览器库,它允许开发者构建任何类型的神经网络。它有几个内置的架构,使得可以快速测试和比较不同机器学习算法间的异同。它还提供了介绍神经网络的文档及几个实用demo和其它可以帮助我们学习机器学习的教程。
5. Land Lines
Land Lines 是一个有趣的用于搜寻地球卫星图片的Chrome网络实验(web experiment)。这个应用无需服务调用:它完全运行在浏览器环境中,得益于机器学习的使用,WebGL也可以在移动设备中有很好的表现。你可以在GitHub 上浏览源码或者在这里阅读完整的示例。
6. ConvNetJS
尽管已不再被积极的维护,但ConvNetJS依然是JavaScriptp中最为先进的深度学习库之一。这个库最初由斯坦福大学开发,然后ConvNetJS开始在GitHub上流行,社区为它添加了许多特性和教程。ConvNetJS直接运行在浏览器环境中,支持多种学习技术,并且它接近底层原理使得它更适有较多神经网络方面经验的人。
7. Thing Translator
Thing Translator是一个网络实验,它可以让你的手机识别真是的物体并用不同的语言标注物体的名称。这个应用完全建立在web技术之上并且利用了Google提供的两种机器学习APIs——用于图像识别的Cloud Vision 和用于自然语言翻译的Translate API。
8. Neurojs
Nerojs用于建立基于增强学习(reinforcement learning)的AI系统框架。不幸的是这个开源项目除了一个自动驾驶实验的demo外并没有完善的文档,这个demo对组成神经网络的不同部分有着很好的描述。这个库借助如现代化工具如:webpack 和babel,使用纯JavaScript进行开发。
9. Machine_learning
这也是一个允许我们仅使用JavaScript创建并训练神经网络的库。它很容易就可以安装到Node.js和客户端环境,并且拥有对开发人员十分友好的的API。这个库提供了许多示例,可以帮助你理解机器学习的核心原理。
10. DeepForge
DeepForge是一个用于深度学习且易于使用的开发环境。它允许你使用简单的图形接口创建神经网络,支持在远程机器上训练模型,并且内置版本控制系统。这个项目基于Node.js和MongoDB且运行在浏览器环境中。
彩蛋: Machine Learning in Javascript
Burak Kanber 发布的一些列优秀博文中讲述了机器学习的基本原理。这些教程写的很好且专门面向JavaScript开发者。如果你想深入理解机器学习,这些博文是很好的学习资源。