Ошибка нейронной сети XOR перестает уменьшаться во время обучения
Я тренирую нейронную сеть XOR через обратное распространение, используя стохастический градиентный спуск. Веса нейронной сети инициализируются случайными значениями от -0.5 до 0.5. Нейронная сеть успешно тренируется около 80% времени. Однако иногда он "застревает" во время backpropagating. Под "застрял" я имею в виду, что я начинаю видеть снижение скорости исправления ошибок. Например, во время успешного обучения общая ошибка уменьшается довольно быстро, так как сеть учится, вроде так:
...
...
Total error for this training set: 0.0010008071327708653
Total error for this training set: 0.001000750550254843
Total error for this training set: 0.001000693973929822
Total error for this training set: 0.0010006374037948094
Total error for this training set: 0.0010005808398488103
Total error for this training set: 0.0010005242820908169
Total error for this training set: 0.0010004677305198344
Total error for this training set: 0.0010004111851348654
Total error for this training set: 0.0010003546459349181
Total error for this training set: 0.0010002981129189812
Total error for this training set: 0.0010002415860860656
Total error for this training set: 0.0010001850654351723
Total error for this training set: 0.001000128550965301
Total error for this training set: 0.0010000720426754587
Total error for this training set: 0.0010000155405646494
Total error for this training set: 9.99959044631871E-4
Testing trained XOR neural network
0 XOR 0: 0.023956746649767453
0 XOR 1: 0.9736079194769579
1 XOR 0: 0.9735670067093437
1 XOR 1: 0.045068688874314006
однако, когда он застревает, общие ошибки уменьшаются, но, похоже, с уменьшающейся скоростью:
...
...
Total error for this training set: 0.12325486644721295
Total error for this training set: 0.12325486642503929
Total error for this training set: 0.12325486640286581
Total error for this training set: 0.12325486638069229
Total error for this training set: 0.12325486635851894
Total error for this training set: 0.12325486633634561
Total error for this training set: 0.1232548663141723
Total error for this training set: 0.12325486629199914
Total error for this training set: 0.12325486626982587
Total error for this training set: 0.1232548662476525
Total error for this training set: 0.12325486622547954
Total error for this training set: 0.12325486620330656
Total error for this training set: 0.12325486618113349
Total error for this training set: 0.12325486615896045
Total error for this training set: 0.12325486613678775
Total error for this training set: 0.12325486611461482
Total error for this training set: 0.1232548660924418
Total error for this training set: 0.12325486607026936
Total error for this training set: 0.12325486604809655
Total error for this training set: 0.12325486602592373
Total error for this training set: 0.12325486600375107
Total error for this training set: 0.12325486598157878
Total error for this training set: 0.12325486595940628
Total error for this training set: 0.1232548659372337
Total error for this training set: 0.12325486591506139
Total error for this training set: 0.12325486589288918
Total error for this training set: 0.12325486587071677
Total error for this training set: 0.12325486584854453
моя сеть застревает в локальных минимумах вместо глобальных минимумов?
1 ответов
да, нейронные сети могут застрять в локальных минимумах, в зависимости от поверхности ошибки. Однако этот абстрактный предполагает, что в поверхности ошибок задачи XOR нет локальных минимумов. Однако я не могу добраться до полного текста, поэтому я не могу проверить, что авторы сделали для этого и как это относится к вашей проблеме.
могут быть и другие факторы, ведущие к этой проблеме. Например, если вы спускаетесь очень быстро в какой-то крутой долине, если вы просто используете градиентный спуск первого порядка, вы можете добраться до противоположного склона и все время отскакивать назад и вперед. Вы можете также попытаться дать Среднее изменение по всем Весам на каждой итерации, чтобы проверить, действительно ли у вас есть" застрявшая " сеть, или, скорее, одна, которая просто столкнулась с предельным циклом.
вы должны сначала попробовать возиться с вашими параметрами (скорость обучения, импульс, Если вы его реализовали и т. д.). Если вы можете устранить проблему, изменив параметры, ваш алгоритм, вероятно, ладно.