ConvNetJS предоставляет удобные инструменты для визуализации процесса обучения нейронной сети через динамические графики loss и accuracy. Эти графики являются критическим инструментом для анализа качества обучения, диагностики переобучения и настройки гиперпараметров модели.
Loss (функция потерь) — метрика, измеряющая расхождение предсказаний сети с реальными значениями. Для классификации чаще всего используется softmax с кросс-энтропией, для регрессии — среднеквадратичная ошибка. Значение loss стремится к минимальному по мере обучения.
Accuracy (точность) — доля правильных предсказаний относительно общего числа примеров. В многоклассовой классификации accuracy определяется как отношение правильно предсказанных классов к общему числу объектов.
ConvNetJS имеет встроенный объект Graph и метод
graph.serve(), который позволяет визуализировать данные
через веб-браузер. Для построения графиков необходимо:
var stats = new convnetjs.Stats();
var trainer = new convnetjs.SGDTrainer(net, {learning_rate:0.01, momentum:0.9, batch_size:20, l2_decay:0.001});
for(var i=0;i<1000;i++) {
var x = new convnetjs.Vol([/* данные */]);
var y = /* правильный класс */;
trainer.train(x, y);
stats.push({loss: trainer.cost_loss, accuracy: trainer.accuracy});
}
stats.display();
Ключевой момент — объект Stats
автоматически хранит историю значений loss и accuracy, что позволяет
строить графики без необходимости ручного накопления данных.
Объект Graph поддерживает несколько серий данных и
позволяет задавать для каждой цвет, имя и тип линии. Например, для
отображения тренировочной и тестовой
потерь можно использовать:
var graph = new convnetjs.Graph();
graph.addLine('train_loss', 'red');
graph.addLine('test_loss', 'blue');
graph.update({train_loss: trainer.cost_loss, test_loss: test_cost_loss});
Особенности обновления графика:
Графики loss и accuracy позволяют выявлять признаки переобучения:
В таких случаях полезно применять методы регуляризации:
var layer = {type:'fc', num_neurons:100, activation:'relu', dropout:0.5};
l2_decay в SGDTrainer.Для удобства можно строить два графика на одном полотне или использовать разные оси Y. Например:
var stats = new convnetjs.Stats();
stats.push({loss: trainer.cost_loss, accuracy: trainer.accuracy});
stats.display();
function movingAverage(arr, window_size){
var result = [];
for(var i=0;i<arr.length;i++){
var start = Math.max(0, i-window_size+1);
var sum = 0;
for(var j=start;j<=i;j++) sum += arr[j];
result.push(sum/(i-start+1));
}
return result;
}
Графики loss и accuracy в ConvNetJS являются ключевым инструментом для мониторинга обучения, диагностики проблем с моделью и выбора оптимальных гиперпараметров. Их использование позволяет визуализировать динамику процесса обучения в реальном времени и принимать обоснованные решения о корректировке архитектуры сети или стратегии тренировки.