Я только начинаю с нейронных сетей и использую Synaptic, чтобы начать (я знаю, что знаю, нейронные сети в JavaScript, вздох!).Почему добавление большего количества слоев в эту нейронную сеть делает выход хуже?
Это пример кода given in this section для создания нейронной сети для изучения функции XOR:
var myPerceptron = new Architect.Perceptron(2, 3, 1);
var myTrainer = new Trainer(myPerceptron);
myTrainer.XOR();
console.log(myPerceptron.activate([0, 0])); // 0.0268581547421616
console.log(myPerceptron.activate([1, 0])); // 0.9829673642853368
console.log(myPerceptron.activate([0, 1])); // 0.9831714267395621
console.log(myPerceptron.activate([1, 1])); // 0.02128894618097928
Я экспериментировал с добавлением более слоев и посмотреть, что происходит. Добавление одного дополнительного скрытого слоя не имеет большого эффекта, но добавление 2 слоев делает вывод идентичным независимо от ввода.
var myPerceptron = new Architect.Perceptron(2, 3, 3, 3, 1);
var myTrainer = new Trainer(myPerceptron);
myTrainer.XOR();
console.log(myPerceptron.activate([0, 0])); // 0.521076904986927
console.log(myPerceptron.activate([1, 0])); // 0.5210769149857782
console.log(myPerceptron.activate([0, 1])); // 0.5210769118775331
console.log(myPerceptron.activate([1, 1])); // 0.5210769209325651
Почему это происходит? Это просто потому, что более сложная сеть нуждается в гораздо большем количестве обучения, или это потому, что такая сеть по своей сути не подходит для такого рода проблем?
Выглядит мне сложно узнать многоуровневую нейронную сеть. Насколько я знаю, нет простого механизма для изучения таких сетей в целях оптимальности. –
Трудно сказать, прежде чем увидеть тип данных, которые вы имеете, способ обучения в сети, используемая регуляризация и .... Вообще говоря, чем сложнее модель, тем больше данных вам нужно будет изучить функцию * right *. – Amir