Многослойный персептрон XOR, график ошибок (потери) сходится слишком быстро?

В настоящее время я изучаю нейронные сети и пытался обучить MLP для изучения XOR с использованием обратного распространения в Python. В сети есть два скрытых слоя (использующих сигмовидную активацию) и один выходной слой (также сигмовидный). Сеть (около 20 000 эпох и скорость обучения 0,1) выводит числа, близкие к исходной метке класса:

прогноз: 0,11428432952745145 исходный вывод класса: 0

прогноз: 0.8230114358069576 исходный вывод класса: 1

прогноз: 0,8229532575410421 исходный вывод класса: 1

прогноз: 0.23349671680470516 исходный вывод класса: 0

Когда я рисую ошибки (для каждой эпохи), мой график показывает крутой спад, затем небольшой «удар», у меня сложилось впечатление, что ошибки будут постепенно уменьшаться:

Ошибки (суммированные) по сравнению с эпохой

Будет ли это классифицироваться как конвергенция? Я пытался настроить скорость обучения, но безуспешно.

Спасибо!


person Laurent Kelly    schedule 01.04.2021    source источник


Ответы (2)


Не обязательно, что НС решит задачу оптимизации заменой весов. Это не гарантирует только падение, возможно, некоторые из вариантов градиентного спуска выбирали худшие значения. Я бы порекомендовал поэкспериментировать для большего количества эпох, и в конечном итоге он сойдется. Если вы хотите опубликовать свой код для получения более конкретных советов.

person partizanos    schedule 01.04.2021
comment
Благодарю вас! Я обновлю количество эпох и повторю эксперимент. Я пробовал использовать только сигмовидные функции активации, так что буду экспериментировать и с другими. - person Laurent Kelly; 01.04.2021

Да, определенно сходится! Вы получаете характерную кривую обучения XOR для MLP с сигмовидными активациями — вы можете поместить это в учебник. И нет ничего быстрее, чем ожидалось, с таким количеством эпох. На самом деле, вы, вероятно, могли бы установить более высокую скорость обучения и, возможно, размер шага.

Статистическая оценка сходимости (не как предел в закрытой форме и не графически) может быть немного сложной. Но этот график — довольно хорошее свидетельство конвергенции.

person gerowam    schedule 01.04.2021
comment
Спасибо! Я попробую несколько разных темпов обучения. Что касается построения графика ошибки, вы бы рекомендовали просто «суммировать» ошибку каждую эпоху или брать среднее значение за каждую эпоху? Я понял, что совершенно забыл добавить смещение (не был уверен, что оно мне нужно), так что теперь это тоже нужно программировать. - person Laurent Kelly; 01.04.2021
comment
Смещение не обязательно для XOR, но может помочь, если ваши слои узкие. Что касается суммирования и усреднения - они идентичны, если только ваши тестовые наборы данных не имеют разное количество точек. То есть это либо сумма (E), либо сумма (E) / N. Если N постоянно, разницы просто нет. В большинстве передовых исследований ANN вы увидите сообщение о средней ошибке. - person gerowam; 02.04.2021