Brain.js 的力量:构建多样化的人工智能应用程序

机器学习(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(循环神经网络),允许机器学习序列具有更长的时间步长,从而避免与长期依赖相关的问题。

训练模型

这里训练数据将是一个对象数组,其中每个对象包括键值 textcategory。根据文本中的单词,可以将给定的短语分类为基于后端 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.jsML5.js 等其他库一样,但它无疑提供了最轻松的学习曲线之一。

虽然 Brain.js 可能不涵盖大规模机器学习项目,但它确实提供了一个绝佳的起点。

相关推荐
QQ同步助手3 分钟前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
AIGC大时代6 分钟前
如何使用ChatGPT辅助文献综述,以及如何进行优化?一篇说清楚
人工智能·深度学习·chatgpt·prompt·aigc
流浪的小新11 分钟前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
半盏茶香1 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
martian6651 小时前
【人工智能数学基础篇】——深入详解多变量微积分:在机器学习模型中优化损失函数时应用
人工智能·机器学习·微积分·数学基础
人机与认知实验室2 小时前
人、机、环境中各有其神经网络系统
人工智能·深度学习·神经网络·机器学习
Evand J2 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB2 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
一个处女座的程序猿O(∩_∩)O2 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js
Ronin3052 小时前
11.vector的介绍及模拟实现
开发语言·c++