机器学习(ML)是人工智能 (AI) 的一种形式,旨在构建可以从处理的数据中学习或使用数据更好地执行的系统。人工智能是模仿人类智能的系统或机器的总称。
机器学习(ML)与复杂的数学纠缠在一起,让大多数初学者感到害怕。由于与密集的数学方程和看似神秘的术语的联系,这门学科通常看起来难以入门。
随着 Brain.js 的出现,可以更加轻松地驾驭机器学习,摆脱令人生畏的数学问题,并让初学者能够顺利进入这个有趣的世界。本文通过一个实际示例演示 Brain.js 如何轻松理解神经网络。
基础知识
神经网络是机器学习的支柱, Brain.js 可以用 JavaScript 创建神经网络,超越互联网上以 Python 为中心的文档。 Brain.js 让 Web 开发人员更容易理解这个概念。
将神经网络想象成人脑,一个由分层互连节点组成的网络。这些层包括输入层、隐藏层和输出层,以及从输入单向移动到输出的数据。
神经网络消耗大量标记数据,学习模式和关联,做出预测,然后反映所需的输出。令人惊讶的是,神经网络的准确性和速度超越了人类大脑!
Brain.js
Brain.js 是一个开源库,是一种针对神经网络的 JavaScript 库。它简化了教导机器如何识别给定输入和输出之间的模式和关系的任务。它简单明了,很适合初学者,为具有 Web 开发背景的开发人员提供了平滑的学习曲线。
借助 Brain.js 构建神经网络、使用数据集对其进行训练并逐渐让模型根据学习到的数据进行预测变得可行。
打开方式
首先,像其它前端项目一样,使用 npm
安装 Brain.js:
npm install brain.js
假设训练数据位于 JSON 文件 data.json
中,项目结构将如下所示:
brainjs
┣ node_modules
┣ data.json
┣ index.js
┣ package-lock.json
┗ package.json
接下来导入 Brain.js
库和包含训练数据的数据文件。然后构建神经网络布局,如下代码:
/**
* 引入 Brain.js
*/
const brain = require("brain.js");
/**
* 导入数据文件
*/
const data = require("./data.json");
/**
* 创建神经网络
*/
const network = new brain.recurrent.LSTM();
使用 Brain.js
内置的 LSTM(长短期记忆)。 LSTM 是一种 RNN(循环神经网络),允许机器学习序列具有更长的时间步长,从而避免与长期依赖相关的问题。
训练模型
这里训练数据将是一个对象数组,其中每个对象包括键值 text
和 category
。根据文本中的单词,可以将给定的短语分类为基于后端 backend
或基于前端 frontend
。
[
{
"text": "the user interface component is fixed",
"category": "frontend"
},
{
"text": "the css file look inituitive",
"category": "frontend"
},
{
"text": "i need a few ui designs",
"category": "frontend"
},
{
"text": "the database has issues",
"category": "backend"
},
{
"text": "the button is centered",
"category": "frontend"
},
{
"text": "make it clickable",
"category": "frontend"
},
{
"text": "i did the api integration",
"category": "backend"
},
{
"text": "a driver code should have less memory usgae",
"category": "backend"
},
{
"text": "it needs more memory",
"category": "backend"
},
{
"text": "code with responsive design in users interface",
"category": "frontend"
},
{
"text": "navigate the website easily",
"category": "frontend"
},
{
"text": "user login and authentication",
"category": "backend"
},
{
"text": "forms and dropdowns lists",
"category": "frontend"
},
{
"text": "username password email are stored",
"category": "backend"
},
{
"text": "programming loading animation",
"category": "frontend"
},
{
"text": "mysql, mongo, firebase databases",
"category": "backend"
},
{
"text": "restful api is useful with backend",
"category": "backend"
},
{
"text": "data access layer is not presentation layer",
"category": "backend"
},
{
"text": "the web browser loads dynamic webpages slowly",
"category": "frontend"
}
]
将这些数据提供给神经网络进行训练。为了训练模型,这里加载训练数据并对其进行迭代:
/**
* 训练模型和设置数字,在训练过程中进行迭代
*/
network.train(data, {
iterations: 2000,
});
由于神经网络通过多次迭代来学习模式,因此这个步骤可能非常耗时。
测试模型
训练模型后,将向其提供一个句子来确定该短语是前端术语还是后端术语:
/** 提供输入进行分类 */
const output = network.run("navigate the website easily");
console.log(`分类:${output}`);
对于句子 navigate the website easily
,模型预测的分类为 frontend
。
总结
Brain.js 是一个优秀的库,适合具有 Web 开发背景的且对机器学习有兴趣的初学者。本文阐述了通过使用 Brain.js 构建机器学习模型(ML 的训练、测试和预测)的简便性。
Brain.js 让 JavaScript 开发人员更容易使用机器学习,它可能不是唯一的机器学习库,就像 TensorFlow.js
和 ML5.js
等其他库一样,但它无疑提供了最轻松的学习曲线之一。
虽然 Brain.js 可能不涵盖大规模机器学习项目,但它确实提供了一个绝佳的起点。