Руководство для начинающих по нейронным сетям в JavaScript с Brain.js

Часть 1: Создание вашей первой нейронной сети

Это сообщение было впервые опубликовано на CodingTheSmartWay.com.

Подпишитесь на YouTube

Нейронные сети являются важными строительными блоками для приложений машинного обучения и искусственного интеллекта. Используя нейронные сети, мы можем решать проблемы, которые нелегко решить с помощью традиционных алгоритмов, таких как распознавание лиц, распознавание голоса или медицинская диагностика.

В этом уроке мы начнем с самого начала. Вы узнаете, как применять нейронные сети с помощью библиотеки JavaScript под названием Brain.js. Brain.js позволяет очень легко начать работу с нейронными сетями и глубоким обучением, поскольку он скрывает сложность нейронных сетей и вместо этого предоставляет вам простой в использовании API для очень простого создания и настройки нейронных сетей.

Первый пример с Brain.js

Прежде чем фактически приступить к работе с Neural Networks и Brain.js, давайте кратко рассмотрим проблему, которую необходимо решить в этой первой части этой серии. В качестве первого простого примера наша нейронная сеть должна быть обучена с данными, поступающими от логического элемента Исключающее ИЛИ (XOR), состоящего из двух входных параметров и одного выходного параметра:

Вход 1 Вход 2 Выход 000101011110

Здесь вы можете видеть, что выход будет 1, когда только один из двух входных параметров также равен 1.

Настройка проекта

Чтобы настроить новый проект Brain.js, нам просто нужно сначала создать новую пустую папку:

$ mkdir my-brainjs-test

Мы будем использовать диспетчер пакетов Node.js (NPM) для управления зависимостями этого проекта. Чтобы иметь возможность использовать NPM, нам нужно сначала установить Node.js. Если Node.js еще не установлен, просто перейдите на https://nodejs.org/en/ и следуйте инструкциям по установке для вашей платформы.

Теперь мы можем использовать команду npm для создания нового файла package.json в папке проекта, выполнив команду следующим образом:

$ npm init -y

Теперь мы готовы добавить пакет NPM brain.js в наш проект с помощью следующей команды:

$ npm install --save brain.js

Создание нейронной сети с помощью Brain.js

Давайте теперь воспользуемся Brain.js и создадим первую простую нейронную сеть, которая будет использоваться для решения задачи XOR с использованием глубокого обучения. Создайте новый пустой файл JavaScript в папке проекта:

$ touch index.js

Затем вставьте следующие две строки кода:

var brain = require("brain.js");
var net = new brain.NeuralNetwork();

Используя функцию require в первой строке, мы включаем пакет Brain.js в наш скрипт, чтобы получить доступ к функциям Brain.js. Затем мы создаем новый экземпляр класса Brain.js NeuralNetwork с настройками по умолчанию. Эта нейронная сеть будет использоваться для решения нашей проблемы XOR.

Обучение нейронной сети

Следующим шагом является обучение нейронной сети с помеченными данными обучения. Обозначение в этом случае означает, что мы предоставляем не только входные данные для нейронной сети, но и выходные данные. Для нашей простой задачи XOR обучающий код выглядит так, как вы видите в следующем листинге кода:

net.train([
  { input: [0, 0], output: [0] },
  { input: [0, 1], output: [1] },
  { input: [1, 0], output: [1] },
  { input: [1, 1], output: [0] },
]);

Обучение нейронной сети выполняется путем вызова метода train и предоставления массива с обучающими данными, включенными в качестве параметра в вызов метода.

Массив состоит из объектов, каждый из которых содержит по два свойства: свойство input используется для предоставления массива из двух входных значений, а свойство output используется для предоставления массива с результирующее значение.

Запустите нейронную сеть

Теперь, когда нейронная сеть обучена, мы готовы позволить ей решить проблему, используя метод run и предоставляя массив входных данных:

var output = net.run([1, 0]);
console.log(output);

Полученное значение сохраняется в выводе и записывается в консоль, как вы можете видеть на следующем снимке экрана:

Предоставление входных значений 1 и 0 должно привести к результату 1. Однако, как вы можете видеть на снимке экрана, мы не получаем точно 1 в качестве результирующего значения. Вместо этого мы получаем результат от нейронной сети, который очень близок к 1. Причина этого в том, что нейронная сеть не имеет фиксированного алгоритма для решения проблемы. Вместо этого нейронная сеть обучается на основе предоставленных выборочных данных и выполняет внутреннее вычисление на основе вероятностей.

Снова в следующем листинге кода вы можете увидеть полный код index.js:

var brain = require("brain.js");
var net = new brain.NeuralNetwork();
net.train([
  { input: [0, 0], output: [0] },
  { input: [0, 1], output: [1] },
  { input: [1, 0], output: [1] },
  { input: [1, 1], output: [0] },
]);
var output = net.run([1, 0]);
console.log(output);

Рекомендации по курсу JavaScript

Полный курс JavaScript: создание реальных проектов *
Изучите JavaScript с помощью самого полного курса! Проекты, задачи, викторины, JavaScript ES6 +, ООП, AJAX, Webpack
Перейти к курсу… *

Современный JavaScript с самого начала *
Изучите и создавайте проекты с использованием чистого JavaScript (без фреймворков или библиотек)
Перейти к курсу… *

Учебный курс современного JavaScript *
Изучите JavaScript, создавая реальные приложения. Включает 3 реальных проекта, 80 задач по программированию и ES6 / ES7!
Go To Course… *

* Партнерская ссылка / реклама: это сообщение в блоге содержит партнерские ссылки. Это означает, что если вы нажмете на одну из ссылок на продукт и купите продукт, мы получим небольшую комиссию. Никаких дополнительных затрат для вас нет. Это помогает поддерживать канал и позволяет нам и дальше снимать подобные видео. Спасибо за поддержку!