2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение01.06.2019, 14:11 


07/10/15

2400
vpb в сообщении #1396985 писал(а):
Но $H'$, и $H'+\alpha E$ тоже, где $H'$ обозначает полный гессиан, может не быть положительно определенной

Возможно, действительно, всё дело в добавочном члене. Сейчас проверил: минимальные собственные числа полной $ \bold H $ имеют порядок $10^{-5}$, а без добавочного члена - уже $10^{-20}$. Понятно, что речь идет об отрицательных числах.

 Профиль  
                  
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение01.06.2019, 19:00 
Заслуженный участник


18/01/15
3103
У $J^TJ+\alpha E$ при $\alpha\geq0$ отрицательных собственных значений вообще быть не может, разве что из-за ошибок округления.

 Профиль  
                  
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение02.06.2019, 18:44 


07/10/15

2400
vpb в сообщении #1397126 писал(а):
У $J^TJ+\alpha E$ при $\alpha\geq0$ отрицательных собственных значений вообще быть не может, разве что из-за ошибок округления


Да, похоже на ошибки округления. Тем не менее, исходный вопрос так и остаётся открытым.
Эксперименты показывают, что существует оптимальное значение $\alpha$, при котором достигается минимальная невязка. Причём, она далека от предела, определяемого ошибками округления. Кривая сходимости выглядит так:
Изображение
Создаётся впечатление, что алгоритм во что то "упирается".

Но опытным путём, был найден такой способ оптимизации: сначала оптимизация выполняется с большим $\alpha$, до тех пор, пока процесс не установится. Затем $\alpha$ уменьшается. При этом скорость сходимости (непонятно почему) возрастает. После того, как уменьшение невязки существенно замедлится, $\alpha$ снова уменьшается, и т.д.
Таким образом удаётся довести невязку до предела вычислительной погрешности.
Вот пример графика сходимости, для той же модели и того же начального приближения, что и выше. Параметр $\alpha$ уменьшался в 10 раз через каждые 100 итераций:
Изображение
Значение $\sim 10^{-32}$ - это как раз погрешность вычисления невязки.

Если же сразу поставить маленький $\alpha$, алгоритм "упрётся" в $\sim 10^{-7}$ и на этом остановится.

 Профиль  
                  
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение03.06.2019, 01:40 
Заслуженный участник


18/01/15
3103
Andrey_Kireew
Толком я вам, наверное, ничего объяснить не смогу. Т.е. у меня нет теоретического объяснения, почему Гаусс-Ньютон так себя ведет. Собственно, вообще он не входит в мои интересы.
Козьма Прутков писал(а):
Многие вещи непонятны нам не потому, чтобы наши понятия слабы, но потому, что сии вещи не входят в круг наших понятий.

Я, видите ли, в силу специфики своих задач предпочитаю Ньютона с полным гессианом.
Пословица писал(а):
Девяносто пять процентов мужчин любят полных женщин. И лишь пять процентов --- очень полных.

По поводу полного Ньютона: такое поведение, по моим соображениям, тоже вполне возможно. Надо, однако, уточнить.

Есть, по существу, два варианта метода Ньютона: с линейным поиском, и с доверительной областью. Линейный поиск, по мне, это ненадежно. "Чистое" ньютоновское направление может чёрти куда указывать, и допустимый шаг вдоль него может быть очень маленьким, что создает впечатление, что застряли. Можно добавить регуляризующее слагаемое $\alpha E$, получается алгоритм
$$ x_{n+1}=x_n-\mu_n(Hf(x_n)+\alpha_n E)^{-1} \nabla f(x_n) $$
где $\alpha_n$ как-то (непонятно, как; в разных случаях по разному) выбирается, а $\mu_n$ берется из условия убывания (Армихо и др.). (В этой записи подразумевается, что мы рассматриваем задачу минимизации функции $f$, а $\nabla f$ и $Hf$ --- ее градиент и гессиан).
(продолжение следует).

-- 03.06.2019, 01:06 --

В Дэннис-Шнабеле, емнип, $\alpha_n$ выбирается так, чтобы $Hf(x_n)+\alpha_n E$ было положительно определено и достаточно хорошо обусловлено, скажем число обусловленности было не более чем порядка $\operatorname{macheps}^{-1}$. Ну а $\mu_n$ подбирается потом.

Точно я сейчас не могу сформулировать, но, в общем, при таком подходе как раз возможно описанное вами поведение алгоритма. Особенно в случае, когда гессиан оказывается плохо обусловлен, а среди его собственных значений есть и маленькие, и большие, и промежуточные ($10^{-5}$, $1$, $10^5$). Размышлять, как именно это может случиться, я, извините, не хочу, потому что думаю так: зачем размышлять об особенностях плохого алгоритма, когда есть хороший, надежный во всех случаях ? Под надежным я понимаю второй вариант метода Ньютона, а именно с доверительной областью.

(продолжение следует)

-- 03.06.2019, 01:18 --

В общем, того же и Вам рекомендую. А прочитать можно (а может, Вы всё это и сами знаете...) можно: Дэннис-Шнабель, глава 6; Nocedal, Wright, Numerical optimization, и целая книжка Conn, Gould, Toint, Trust region methods.

(кстати: сведения о первых двух книжках я почерпнул именно с нашего форума. Впоследствии, читая литературу, узнал, что это классика).
(ну вот, вроде, всё)

 Профиль  
                  
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение04.06.2019, 19:47 


07/10/15

2400
Решил внять Вашему vpb совету, и опробовать алгоритм с регулируемым $\alpha$. Вот такой:
$$ \bold x_{k+1}=\bold x_k-(\bold J_k^T \bold J_k+\alpha \bold E_m)^{-1}\bold J_k^T \bold \delta. \qquad (1) $$
Стратегию изменения $\alpha$, для начала, выбрал самую простую, изначально предложенную Марквардтом [Демиденко Е.З. Линейная и нелинейная регрессии. М.: Финансы и статистика, 1981. -С. 254.], а именно - некоторое начальное $\alpha$ на каждой итерации уменьшается в несколько раз. Если, после этого функционал не убывает - $\alpha$ увеличивается, до тех пор, пока не будет достигнуто убывание. В указанном выше источнике коэффициент уменьшения и коэффициент увеличения $\alpha$ равны 10, а начальное значение берётся 0.01. Вычисления показывают, что при этих значениях, на моей задаче, наблюдается такое же "застревание" как и в алгоритме с дроблением шага. При этом $\alpha$ стремится к бесконечности и алгоритм останавливается, не достигнув минимума целевой функции.
Я использовал коэффициент дробления $1,5$ и коэффициент увеличения $2$, начальное значение оставил таким же (оказалось, что оно мало на что влияет). В алгоритма Марквардта используется пропорциональный регуляризатор, т.е. вместо единичной матрицы, в алгоритме используется диагональ $\bold J_k^T \bold J_k$. Встречал в разных источниках различные описания преимуществ данного подхода. Однако, у меня, всё получилось, с точностью до наоборот. Пропорциональный регуляризатор оказался хуже. Алгоритм с ним сходится быстрее только на начальном этапе, а потом, скорость сходимости сильно замедляется. Хуже всего - с ним алгоритм более склонен "застреванию". Его работа так же существенно зависит от выбора начального $\alpha$.
С прямым же регуляризатором удалось добиться более-менее устойчивой работы алгоритма. Вычисления показывают, что теперь, он сходится от самых разных начальных приближений. Кривая сходимости всегда примерно одинаковая, и имеет следующий вид
Изображение

При достижении предела вычислительной точности $\alpha$ очень быстро возрастает до $\infty$. Поэтому, мне показалось очень удобным использовать следующий критерий останова:
$$\alpha>10^{100}$$.
Так же выяснился один нюанс - точность процедуры обращения матрицы здесь очень важна. У меня используется весьма трудоёмкая процедура псевдообращения, на основе сингулярного разложения. Попытка замены этой процедуры прямым алгоритмом решения СЛАУ, на основе LU разложения, приводит к полной потере работоспособности. Наверное, это актуально только для больших, плохо обусловленных матриц.

Разумеется, надо будет попробовать более совершенные стратегии подбора $\alpha$, описанные в книге Дэннис-Шнабель, а так же - использовать полную матрицу Гессе.
Вообще, конечно, сходится полученный алгоритм не так быстро, как хотелось бы. Тем более, что задача была выбрана специально небольшая.
Но это уже кое что! Надеюсь, в дальнейшем получиться его улучшить.
Большое спасибо Вам vpb, за помощь

 Профиль  
                  
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение20.06.2019, 16:43 


07/10/15

2400
Кажется, причина интересного явления
Andrey_Kireew в сообщении #1397342 писал(а):
[quote="vpb в [url=http://dxdy.ru/post1397126.html#p1397126] Кривая сходимости выглядит так:
Изображение
Создаётся впечатление, что алгоритм во что то "упирается".

обнаружена.

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

 Профиль  
                  
 
 Re: Остаточная ошибка метода Гаусса-Ньютона
Сообщение20.06.2019, 22:18 
Заслуженный участник


18/01/15
3103
Andrey_Kireew
Не знаю что сказать ... Посоветую только овладеть методом доверительной области. Только у меня самого недавно с этим методом случился афронт, или как там оно называется, в общем, неожиданная неудачка. Думал я долго (месяца 4), что я понимаю, что это такое, но вдруг обнаружил в своих понятиях об этом предмете большой пробел, и пока не разобрался.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group