ml5.js — это высокоуровневая библиотека для работы с машинным обучением в браузере, построенная на базе TensorFlow.js. Одним из ключевых компонентов библиотеки является класс ml5.neuralNetwork, обеспечивающий удобный интерфейс для создания, обучения и использования нейронных сетей без необходимости глубокого погружения в математику или низкоуровневые детали реализации.
Создание моделей с разными архитектурами Класс позволяет создавать нейронные сети с различной структурой: количество скрытых слоёв, количество нейронов в каждом слое, выбор функций активации. Это делает возможным адаптацию модели под разные задачи: классификация, регрессия, генерация данных.
Работа с разными типами данных Поддерживаются
числовые данные, текстовые данные и изображения. Для работы с
изображениями ml5.js предлагает интеграцию с HTML-элементами
<video> и <canvas>, что упрощает
реализацию интерактивных проектов в браузере.
Интуитивное обучение ml5.neuralNetwork
абстрагирует многие шаги обучения, такие как подготовка данных,
нормализация, разделение на тренировочный и тестовый наборы. Достаточно
определить структуру сети, передать данные и вызвать метод
train().
Использование предобученных моделей Помимо обучения с нуля, можно использовать уже обученные модели для задач классификации и генерации. Это снижает время разработки и позволяет интегрировать сложные ML-функции в веб-приложения без больших вычислительных затрат.
Создание нейронной сети начинается с вызова конструктора ml5.neuralNetwork(), которому можно передать объект с конфигурацией:
const options = {
task: 'classification', // Тип задачи: 'classification', 'regression'
debug: true, // Включение вывода отладочной информации
inputs: ['x', 'y'], // Названия входных данных
outputs: ['label'] // Названия выходных данных
};
const nn = ml5.neuralNetwork(options);
Ключевые параметры:
task — определяет тип задачи. Для классификации
используется 'classification', для предсказания числовых
значений — 'regression'.inputs и outputs — массивы, описывающие
формат входных и выходных данных. Это облегчает работу с данными и
улучшает читаемость кода.debug — выводит пошаговую информацию о процессе
обучения, структуре сети и потере на каждом этапе.Данные добавляются методом addData(). Для классификации
пример использования:
nn.addData({ x: 0.5, y: 0.3 }, { label: 'A' });
nn.addData({ x: 0.2, y: 0.8 }, { label: 'B' });
После добавления всех примеров необходимо вызвать
normalizeData() для нормализации входных данных. Этот шаг
важен для корректного обучения сети, так как масштаб данных влияет на
скорость сходимости и качество модели.
Обучение происходит через метод train(), который
принимает объект конфигурации:
const trainingOptions = {
epochs: 50, // Количество проходов по всему набору данных
batchSize: 12 // Размер мини-батча
};
nn.train(trainingOptions, whileTraining, finishedTraining);
function whileTraining(epoch, loss) {
console.log(`Эпоха: ${epoch}, Потеря: ${loss}`);
}
function finishedTraining() {
console.log('Обучение завершено');
}
epochs — определяет, сколько раз сеть просмотрит все
данные.batchSize — количество примеров, обрабатываемых за одну
итерацию. Баланс между скоростью и стабильностью обучения.После обучения модель можно использовать для предсказаний через метод
predict():
nn.predict({ x: 0.4, y: 0.6 }, (err, results) => {
console.log(results);
});
Результатом является массив объектов с вероятностями для каждого класса (для задач классификации) или числовыми значениями (для регрессии).
Для повторного использования можно сохранять обученные модели:
nn.save('myModel');
И загружать их позже:
ml5.neuralNetwork({ task: 'classification' }).load('myModel/model.json', modelLoaded);
function modelLoaded() {
console.log('Модель загружена и готова к использованию');
}
Это удобно для веб-приложений, где обучение на клиентской стороне может быть ресурсоёмким.
ml5.neuralNetwork легко комбинируется с библиотеками для работы с графикой, например p5.js. Это позволяет создавать динамические визуализации данных и обучать модели в реальном времени на основе взаимодействия пользователя.
Использование ml5.neuralNetwork обеспечивает быстрый старт с нейронными сетями в браузере, скрывая сложности TensorFlow.js, и подходит как для учебных целей, так и для прототипирования интерактивных ML-приложений.