Mind.js — это JavaScript-библиотека для создания нейронных сетей, ориентированная на простоту использования и гибкость. В основе её работы лежат модели данных, которые представляют собой структурированные объекты для обучения и предсказания. Понимание их устройства критично для эффективного применения библиотеки.
В Mind.js модель данных представляет собой объект, который содержит три ключевых элемента:
Входные данные (input) Входные
данные — это массив значений, которые будут подаваться на вход нейронной
сети. Каждый элемент массива должен быть числом или булевым значением.
Для работы с категориальными данными используется метод one-hot
encoding, который преобразует категорию в бинарный массив.
Пример структуры входных данных:
{
input: [0.2, 0.8, 0.5]
}Выходные данные (output) Выходные
данные представляют собой желаемый результат нейронной сети для
соответствующих входных данных. Они могут быть числовыми или
категориальными. Для многоклассовой классификации также применяется
one-hot encoding.
Пример структуры выходных данных:
{
output: [0, 1, 0]
}Метаданные (metadata)
Дополнительная информация о данных, которая может включать
идентификаторы, категории или временные метки. Mind.js позволяет
сохранять эти данные вместе с основными объектами для последующего
анализа результатов.
Пример использования:
{
input: [0.1, 0.9],
output: [1],
metadata: { id: 101, description: 'Пример записи' }
}Для корректного обучения нейронной сети данные необходимо нормализовать. Входные значения обычно преобразуются в диапазон от 0 до 1. Это повышает точность и скорость сходимости сети.
function normalize(data) {
return data.map(x => x / Math.max(...data));
}
Для категориальных данных применяют one-hot encoding:
function oneHotEncode(value, classes) {
return classes.map(cls => cls === value ? 1 : 0);
}
Mind.js использует feedforward нейронные сети. Основной объект модели создается следующим образом:
const { NeuralNetwork } = require('mindjs');
const net = new NeuralNetwork({
hiddenLayers: [3, 3], // два скрытых слоя по 3 нейрона
learningRate: 0.01
});
Параметры конфигурации:
hiddenLayers — массив, указывающий количество нейронов
в каждом скрытом слое.learningRate — скорость обучения сети, определяет
величину корректировки весов на каждом шаге.activation — функция активации, по умолчанию
используется sigmoid. Можно использовать relu
или tanh.Обучение модели требует передачи массива объектов данных, каждый из
которых содержит input и output:
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
];
net.train(trainingData, {
iterations: 20000,
errorThresh: 0.005
});
Параметры метода train:
iterations — максимальное количество итераций
обучения.errorThresh — порог ошибки, при достижении которого
обучение прекращается.log — логирование процесса обучения каждые N
итераций.logPeriod — период логирования.После обучения модель способна делать предсказания:
const output = net.run([1, 0]);
console.log(output); // [0.98] – вероятность выхода
Mind.js возвращает массив чисел от 0 до 1,
отражающий вероятность каждого класса. Для бинарной классификации
достаточно интерпретировать значения выше 0.5 как 1, ниже —
как 0.
Для долговременного хранения и последующего использования модели данные можно сериализовать в JSON:
const json = net.toJSON();
Восстановление модели выполняется через:
const net2 = new NeuralNetwork();
net2.fromJSON(json);
Это позволяет разделять этапы обучения и использования модели, хранить их в базе данных или пересылать между системами.
Mind.js подходит для задач:
Грамотная организация моделей данных обеспечивает стабильное обучение, ускоряет процесс тестирования и повышает точность предсказаний.