Brain.js : 前端与Ai携手开辟端模型新纪元

275 阅读4分钟

什么是 Brain.js

Brain.js 是一个非常友好的选择,可以帮助开发者快速入门并了解基础的神经网络概念。本文将初步介绍如何使用 Brain.js 实现不同类型的神经网络,并对比各类神经网络的特点和适用场景,包括

  • 前馈神经网络(FFNN) ==> 数据的单向传递之旅
  • 深度神经网络(DNN) ==> 探索数据的深层奥秘
  • 循环神经网络(RNN) ==> 记忆的魔法

认识神经网络

前馈神经网络(FFNN)

了解前馈神经网络

神经网络家族里的基础款和常见类型。

想象一下,数据就像水流一样,从输入层经过若干隐藏层,一路顺畅地流向输出层,而且每层的神经元都和下一层的所有神经元紧密相连。

但要注意,这个过程是单向的,没有循环或反馈,就像一条单行道。

应用感知

FFNN 在分类回归任务中可是大显身手。

比如 :

  • 预测用户行为,判断用户可能会点击哪个按钮、购买哪个产品;
  • 分类简单的图像数据,识别图片中的动物是猫还是狗。

它就像一个智能小助手,帮助我们处理各种数据相关的任务 , 你想象一下 , 如果这些在前端实现 , 那该多有趣 !

深度神经网络(DNN)

了解深度神经网络

深度神经网络(DNN) 是 前馈神经网络 (FFNN) 的升级版,它通过增加更多的隐藏层,就像给神经网络装上了更强大的 “大脑”,能够处理更复杂的数据关系。

应用感知

DNN 在处理更复杂的预测分类任务时表现出色。

比如

  • 识别复杂的模式,像是从海量的股票数据中找到隐藏的趋势;
  • 处理有大量特征的数据,如分析用户的多维度行为数据来进行精准推荐

在 Brain.js 中实现 DNN 和 FFNN 很相似,只是多了隐藏层数量和神经元的调整。

循环神经网络(RNN)

了解循环神经网络

循环神经网络(RNN)中的 LSTM(长短期记忆)就像一个拥有记忆功能的魔法盒子。与 FFNN 不同,它的输出不仅取决于当前输入,还与之前的隐藏状态息息相关。这使得它特别适合处理序列数据 。

如时间序列数据和文本生成。

Brain.js 提供的 LSTM 实现,就像给我们提供了开启记忆魔法的咒语 。

应用感知

在自然语言处理领域,RNN - LSTM 可是聊天机器人和文本生成的好帮手。

它能理解文本的上下文,生成连贯的回复。在时间序列预测方面,比如预测股市走势或者分析传感器数据随时间的变化,它也能发挥重要作用。

使用 Brain.js 初步了解神经网络

准备

配置环境

  • const brain = require("brain.js");:Node.js 来引入Brain.js
  • <script src="./brain.js"></script>:直接在 HTML 文件中使用 CDN。

下面代码 , 采用第二种方式展示

编码

  1. 准备一个 index.html 文档 , 写好基本的格式
  2. 使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI 端模型- 前端开发的时代</title>
</head>

<body>
    <script src="./brain.js"></script>
    <script>
        // 1.训练数据: 给模型训练数据,让模型去学习, 
        
        // 2.初始化一个神经网络
       
        // 3.训练一个神经网络

        // 4.执行训练好的模型进行预测!
        alert(`预测的output是: ${output}`)
    </script>
</body>

</html>

下面通过给定场景来完善上面的代码

  1. "喂给"模型一定量的样例 , 实现 1 和 0 的 逻辑与 运算
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI 端模型- 前端开发的时代</title>
</head>

<body>
    <script src="./brain.js"></script>
    <script>
        // 1.训练数据: 给模型训练数据,让模型去学习, 
         const data=[
                {
                    input: [1, 1],
                    output: [1]
                },
                {
                    input: [0, 1],
                    output: [0]
                },
                {
                    input: [1, 0],
                    output: [0]
                },
            ];
        // 2.初始化一个神经网络
        const network =new brain.NeuralNetwork();
        // 3.训练一个神经网络
        network.train(data);
        // 4.执行训练好的模型进行预测!
        const output=network.run([0,0])
        alert(`预测的output是: ${output}`)
    </script>
</body>

</html>

2 ."喂给"模型一些文本 , 让模型根据其中的一些词语预测下一个词语

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI 端模型- 前端开发的时代</title>
</head>

<body>
    <script src="./brain.js"></script>
    <script>
        // 1.训练数据: 给模型训练数据,让模型去学习, 
         const data=[
            'Hello there',
            'How are you?',
            'Hello world',
            'Good morning'
        ];
        // 2.初始化一个神经网络
        const network =new brain.recurrent.LSTM();
        // 3.训练一个神经网络
        network.train(data);
        // 4.执行训练好的模型进行预测!
        const output=network.run('Good')
        alert(`预测的output是: ${output}`)
    </script>
</body>

</html>

3.使用一些数据训练模型, 让模型认识到语句表达的情感 !

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI 端模型- 前端开发的时代</title>
</head>

<body>
    <script src="./brain.js"></script>
    <script>
        // 1.训练数据: 给模型训练数据,让模型去学习, 
         const data=[
            {
                "input": "This is a great movie with amazing acting.",
                "output": "positive"
            },
            {
                "input": "I love this book. It's a great amazing.",
                "output": "positive"
            },
            {
                "input": "The service at this restaurant was really bad.",
                "output": "negative"
            },
        ];
        // 2.初始化一个神经网络
        const network =new brain.recurrent.LSTM();
        // 3.训练一个神经网络
        network.train(data);
        // 4.执行训练好的模型进行预测!
        const output=network.run('The service at this restaurant was really bad.')
        alert(`预测的output是: ${output}`)
    </script>
</body>

</html>

我的电脑运行不出结果 , 这个比较吃性能 😭


总结

Brain.js 在多个领域有着广泛应用。在自然语言处理(NLP)方面,可训练模型进行文本分析、情感分析、机器翻译等。此外,在设备智能化领域,它能部署在智能家居、智能手表等设备上增强其功能性。可以说,Brain.js 是 JavaScript 开发者构建和训练神经网络的有力工具,它让开发者像操作大脑一样进行学习和开发,推动着人工智能在生活各领域的应用发展。未来,随着技术的不断进步,我们有望看到更多基于 Brain.js 的创新应用。

欢迎大家点赞、收藏、关注和评论,共同交流学习。❤️