Ошибка XOR нейронной сети перестает уменьшаться во время обучения

Я тренирую нейронную сеть XOR через обратное распространение, используя стохастический градиентный спуск. Весы нейронной сети инициализируются случайными значениями от -0,5 до 0,5. Нейронная сеть успешно тренируется примерно в 80% случаев. Однако иногда он "застревает", а обратно возвращается. "Застрял", я имею в виду, что я начинаю видеть уменьшение скорости исправления ошибок. Например, во время успешного обучения общая ошибка уменьшается довольно быстро по мере того, как сеть узнает, например:

...
...
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 нет локальных минимумов. Однако я не могу получить полный текст, поэтому я не могу проверить, что сделали авторы, чтобы это сделать и как оно относится к вашей проблеме.

Также могут быть и другие факторы, приводящие к этой проблеме. Например, если вы спуститесь очень быстро в какой-то крутой долине, если вы просто используете спуск градиента первого порядка, вы можете добраться до противоположного склона и все время отскочить назад и вперед. Вы можете попробовать также дать среднее изменение по всем весам на каждой итерации, чтобы проверить, действительно ли у вас "застрявшая" сеть, или, скорее, одна, которая только что натолкнулась на предельный цикл.

Сначала вы должны попытаться использовать ваши параметры (скорость обучения, импульс, если вы его внесли и т.д.). Если вы можете устранить проблему, изменив параметры, ваш алгоритм, вероятно, хорошо.

Ответ 2

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

В этих двух документах рассматриваются ландшафты 2-1-1 и 2-2-1 XOR. Один использует функцию "кросс-энтропии", которую я не знаю. В первом они заявляют, что нет локальных минимумов, но во втором они говорят, что на бесконечности есть локальные минимумы - в основном, когда весы заканчиваются очень большими значениями. Итак, во втором случае их результаты показывают, что если вы не начнете приближаться к "достаточным" истинным минимумам, вы можете попасть в бесконечные точки. Они также говорят, что другие анализы сетей 2-2-1 XOR, которые не показывают локальных минимумов, не противоречат их результатам из-за конкретных определений.

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.4770

http://www.ncbi.nlm.nih.gov/pubmed/12662806

Ответ 3

Я столкнулся с той же проблемой и обнаружил, что с помощью функции активации 1.7159 * tanh (2/3 * x), описанной в LeCun" Эффективная бумага Backprop. Это, по-видимому, потому, что эта функция не насыщается вокруг целевых значений {-1, 1}, тогда как регулярная tanh делает.