Функция потерь является центральным элементом обучения нейронной
сети. Она определяет, как сеть измеряет ошибку между предсказанными
значениями и истинными метками, и напрямую влияет на процесс оптимизации
весов. В ConvNetJS функции потерь реализованы как отдельные объекты,
которые можно передавать в конструктор Trainer.
1. Softmax Cross-Entropy Loss Наиболее часто
используемая функция потерь для задач классификации с несколькими
классами. В ConvNetJS реализуется через объект SoftmaxLayer
или FullyConnLayer с параметром
activation: 'softmax'.
Ключевые моменты:
[ L = -_{i} y_i (_i)]
где (y_i) — истинная метка, а (_i) — предсказанная вероятность.
Пример использования:
var layer_defs = [];
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:10});
layer_defs.push({type:'softmax', num_classes:10});
var net = new convnetjs.Net();
net.makeLayers(layer_defs);
var trainer = new convnetjs.Trainer(net, {method:'sgd', learning_rate:0.01, l2_decay:0.001});
2. Regression Loss (L2 Loss) Используется для задач
регрессии, когда требуется предсказывать непрерывные значения. В
ConvNetJS для этого применяются слои RegressionLayer.
Особенности:
[ L = _i (y_i - _i)^2]
Пример настройки:
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:1});
layer_defs.push({type:'regression', num_neurons:1});
var net = new convnetjs.Net();
net.makeLayers(layer_defs);
var trainer = new convnetjs.Trainer(net, {method:'sgd', learning_rate:0.01});
3. Hinge Loss Часто используется в задачах бинарной
классификации или многоклассовых задачах с поддержкой метода SVM.
ConvNetJS поддерживает реализацию через SVMLayer.
Особенности:
[ L = _{i y} (0, 1 - (_y - _i))]
Пример конфигурации:
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:10});
layer_defs.push({type:'svm', num_classes:10});
var net = new convnetjs.Net();
net.makeLayers(layer_defs);
var trainer = new convnetjs.Trainer(net, {method:'sgd', learning_rate:0.01});
ConvNetJS использует объект Trainer для управления
процессом оптимизации. При выборе функции потерь важно правильно задать
параметры тренера:
learning_rate — скорость обучения, влияет на
стабильность градиентов.l2_decay — регуляризация весов, предотвращает
переобучение.momentum — ускоряет сходимость для сложных задач.Пример для многоклассовой задачи:
var trainer = new convnetjs.Trainer(net, {
method: 'adam',
learning_rate: 0.001,
l2_decay: 0.0001
});
Softmax + Cross-Entropy.RegressionLayer с L2 Loss.SVMLayer с Hinge Loss.Выбор функции потерь — ключевой элемент, определяющий поведение сети и эффективность обучения. Правильная комбинация слоя и соответствующей потери обеспечивает оптимальное использование ConvNetJS в любых задачах.