Установка и первоначальная настройка

Установка через npm

Mind.js — это библиотека для создания и обучения нейронных сетей на JavaScript. Основной способ установки — использование пакетного менеджера npm. В командной строке необходимо выполнить команду:

npm install mindjs

Эта команда скачивает последнюю стабильную версию библиотеки и добавляет её в зависимости проекта. После успешной установки можно проверить наличие пакета в package.json, где он будет отображаться в разделе dependencies:

"dependencies": {
  "mindjs": "^1.1.0"
}

Подключение в проект

Для использования Mind.js в проекте на Node.js необходимо импортировать библиотеку:

const { Mind } = require('mindjs');

Для работы в браузере подключение возможно через тег <script> с ссылкой на CDN:

<script src="https://cdn.jsdelivr.net/npm/mindjs/dist/mind.min.js"></script>
<script>
  const mind = new Mind();
</script>

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

Инициализация нейронной сети

Mind.js использует объектную модель для создания и настройки нейронных сетей. Основной объект для работы — Mind. Инициализация происходит следующим образом:

const mind = new Mind({
  learningRate: 0.3,   // скорость обучения
  hiddenLayers: [10, 10] // количество нейронов в скрытых слоях
});

Параметры конфигурации:

  • learningRate — задает скорость корректировки весов сети при обучении. Значения обычно находятся в диапазоне от 0.1 до 0.5.
  • hiddenLayers — массив, определяющий количество скрытых слоев и нейронов в каждом слое. Например, [5, 5] создаст два скрытых слоя с 5 нейронами каждый.
  • activation — функция активации нейронов. Поддерживаются sigmoid, relu, tanh.

Подготовка данных

Перед обучением необходимо структурировать данные в формате объектов с ключами input и output. Mind.js поддерживает числовые и категориальные значения. Пример подготовки данных для классификации:

const trainingData = [
  { input: { temperature: 30, humidity: 70 }, output: { fan: 1 } },
  { input: { temperature: 20, humidity: 40 }, output: { fan: 0 } }
];

Особенности формата данных:

  • input — объект с признаками, каждый из которых должен быть нормализован в диапазоне [0, 1] или [-1, 1].
  • output — объект с ожидаемым результатом. Для задач классификации значения часто бинарные (0 или 1), для регрессии могут быть числовыми.

Обучение сети

Для запуска обучения используется метод train объекта Mind. Метод принимает массив обучающих примеров и параметры:

mind.train(trainingData, {
  iterations: 20000,
  errorThresh: 0.005,
  log: true,
  logPeriod: 1000
});

Ключевые параметры:

  • iterations — максимальное количество итераций обучения.
  • errorThresh — порог допустимой ошибки. Если средняя ошибка сети опускается ниже этого значения, обучение останавливается.
  • log — вывод прогресса обучения в консоль.
  • logPeriod — интервал логирования прогресса (например, каждые 1000 итераций).

Сохранение и загрузка модели

Mind.js позволяет сохранять состояние обученной сети для последующего использования без повторного обучения. Для этого применяется метод toJSON:

const modelJSON = mind.toJSON();

Сохраненный JSON можно записать в файл:

const fs = require('fs');
fs.writeFileSync('mind_model.json', JSON.stringify(modelJSON));

Для загрузки ранее сохраненной модели используется метод fromJSON:

const savedModel = JSON.parse(fs.readFileSync('mind_model.json'));
mind.fromJSON(savedModel);

Проверка работы сети

После обучения можно протестировать сеть с новыми входными данными:

const output = mind.run({ temperature: 25, humidity: 50 });
console.log(output); // { fan: 0.7 }

Выходное значение представляет собой оценку вероятности или числовую предсказанную величину. Для бинарной классификации можно применить пороговое значение (0.5), чтобы преобразовать результат в 0 или 1.

Рекомендации по настройке

  • Для стабильного обучения скрытые слои рекомендуется делать небольшими на начальном этапе (5–10 нейронов), увеличивая их при усложнении задачи.
  • Скорость обучения стоит подбирать постепенно: слишком высокая может вызвать нестабильность, слишком низкая — замедлить обучение.
  • Нормализация входных данных существенно влияет на точность и скорость обучения.

Mind.js предоставляет базовую, но мощную платформу для построения нейронных сетей в JavaScript, обеспечивая гибкую настройку и удобный формат работы с данными.