Эффекты рандомизации порядка ввода в нейронную сеть

Для моего класса «Продвинутые алгоритмы и структуры данных» мой профессор попросил нас выбрать любую интересующую нас тему. Он также посоветовал нам изучить это и попробовать реализовать в нем решение. Я выбрал нейронные сети, потому что это то, чему я давно хотел научиться.

Мне удалось реализовать операции AND, OR и XOR, используя нейронную сеть, нейроны которой используют пошаговую функцию в качестве активатора. После этого я попытался реализовать нейронную сеть с обратным распространением, которая учится распознавать оператор XOR (используя сигмовидную функцию в качестве активатора). Мне удавалось заставить это работать в 90% случаев, используя сеть 3-3-1 (1 смещение на входе и скрытом слое, с произвольной инициализацией весов).В других случаях кажется, что он застревает в том, что я считаю локальным минимумом, но я не уверен (я задавал вопросы по этому поводу раньше, и люди говорили мне, что локальных минимумов быть не должно).

90% времени, когда он работал, я последовательно представлял свои входные данные в следующем порядке: [0, 0], [0, 1], [1, 0], [1, 0] с ожидаемым выходом, установленным на [0, 1, 1, 0] . Когда я последовательно представляю значения в одном и том же порядке, сеть в конечном итоге усваивает закономерность. На самом деле не имеет значения, в каком порядке я его отправляю, если это точно такой же порядок для каждой эпохи.

Затем я реализовал рандомизацию обучающего набора, и на этот раз порядок входных данных достаточно рандомизирован. Теперь я заметил, что моя нейронная сеть зависает, и количество ошибок уменьшается, но с очень небольшой скоростью (которая становится все меньше с каждой эпохой). Через некоторое время ошибки начинают колебаться вокруг значения (поэтому ошибка перестает уменьшаться).

Я новичок в этой теме, и все, что я знаю, - это самоучка (чтение руководств, статей и т. Д.). Почему порядок представления входных данных меняет поведение моей сети? Это потому, что изменение ошибки согласовано от одного входа к другому (потому что порядок согласован), что упрощает обучение сети?

Что я могу сделать, чтобы это исправить? Я просматриваю свой алгоритм обратного распространения ошибки, чтобы убедиться, что я правильно его реализовал; в настоящее время он внедряется со скоростью обучения и импульсом. Я подумываю о других улучшениях, таких как адаптивная скорость обучения.Однако сеть XOR часто изображается как очень простая сеть, и поэтому я думаю, что мне не нужно использовать сложный алгоритм обратного распространения.

5
задан Vivin Paliath 12 November 2011 в 01:49
поделиться