WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Приближение кривой со случайным шумом асимметричной моделью пика используя алгоритм Гаусса — Ньютона с переменным коэффициентом затухания α.
Сверху: необработанные данные и модель.
Снизу: ход нормализованной суммы квадратов ошибок.

Алгоритм Гаусса — Ньютона используется для решения задач нелинейным методом наименьших квадратов[en]. Алгоритм является модификацией метода Ньютона для нахождения минимума функции. В отличие от метода Ньютона, алгоритм Гаусса — Ньютона может быть использован только для минимизации суммы квадратов, но его преимущество в том, что метод не требует вычисления вторых производных, что может оказаться существенной трудностью.

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

Метод назван именами математиков Карла Фридриха Гаусса и Исаака Ньютона.

Описание

Если задано m функций r = (r1, …, rm) (часто называемых невязками) от n переменных β = (β1, …, βn), при m  n. Алгоритм Гаусса — Ньютона итеративно находит значения переменных, которые минимизируют сумму квадратов[1]

Начав с некоторого начального приближения , метод осуществляет итерации

Здесь, если рассматривать r и β как вектор-столбцы, элементы матрицы Якоби равны

а символ означает транспонирование матрицы.

Если m = n, итерации упрощаются до

,

что является прямым обобщением одномерного метода Ньютона.

При аппроксимации данных, где целью является поиск параметров β, таких, что заданная модель функций y = f(x, β) наилучшим образом приближает точки данных (xi, yi), функции ri являются остаточными ошибками[en]

Тогда метод Гаусса — Ньютона можно выразить в терминах якобиана Jf функции f

Заметим, что является псевдообратной матрицей к .

Замечания

Требование m  n в алгоритме необходимо, поскольку в другом случае матрица JrTJr не имеет обратной и нормальные уравнения нельзя решить (по меньшей мере однозначно).

Алгоритм Гаусса — Ньютона можно получить с помощью линейного приближения вектора функций ri. Используя теорему Тейлора, мы можем для каждой итерации записать:

,

где . Задача нахождения Δ, минимизирующего сумму квадратов в правой части, т.е.

,

является линейной задачей нахождения наименьших квадратов, которую можно решить явно, что даёт нормальные уравнения.

Нормальные уравнения — это m линейных уравнений по неизвестным приращениям Δ. Уравнения могут быть решены за один шаг, если использовать разложение Холецкого, или, лучше, QR-разложение матрицы Jr. Для больших систем итеративный метод может оказаться более эффективным, если используются такие методы, как метод сопряжённых градиентов. Если имеется линейная зависимость столбцов матрицы Jr, метод итераций завершается неудачей, поскольку JrTJr становится вырожденной.

Пример

Вычисленная кривая с и (синим цветом) и наблюдаемые данные (красным цветом).

В этом примере используется алгоритм Гаусса — Ньютона для построения модели данных путём минимизации суммы квадратов отклонений данных и модели.

В экспериментальной биологии изучение связей между концентрацией субстрата [S] и скоростью реакции в реакции энзимомодуляции, были получены следующие данные.

i 1234567
[S] 0.0380.1940.4250.6261.2532.5003.740
скорость 0.0500.1270.0940.21220.27290.26650.3317

Нужно найти кривую (функцию-модель) вида

скорость ,

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

Обозначим через и значения [S] и скорость из таблицы, . Пусть и . Мы будем искать и , такие, что сумма квадратов отклонений

минимальна.

Якобиан вектора остатков по неизвестным — это матрица с -ой строкой, имеющей элементы

Начав с начального приближения и после пяти итераций алгоритм Гаусса — Ньютона даёт оптимальные значения и . Сумма квадратов остатков уменьшается от начального значения 1.445 до 0.00784 к пятой итерации. График справа показывает кривую с оптимальными параметрами.

Сходимость

Можно показать[2], что направление увеличения Δ является направлением спуска[en] для S, и, если алгоритм сходится, пределом будет стационарная точка для S. Однако сходимость не гарантируется, даже когда начальная точка близка к решению[en], что происходит в методе Ньютона[en] или методе BFGS при обычных условиях Фольфе[3].

Скорость сходимости алгоритма Гаусса — Ньютона близка к квадратичной[4]. Алгоритм может сходиться медленнее или не сходиться совсем, если начальное приближение далеко от минимального или если матрица плохо обусловлена. Например, представим задачу с уравнениями и переменной

Полученное оптимальное решение — . (Настоящий оптимум — для , поскольку , в то время как .) Если , то задача, фактически, линейна и метод находит решение за одну итерацию. Если |λ| < 1, то метод сходится линейно и ошибка убывает со скоростью |λ| на каждой итерации. Однако, если |λ| > 1, то метод не сходится даже локально[5].

Алгоритм на основе метода Ньютона

Далее предполагается, что алгоритм Гаусса — Ньютона основан на методе Ньютона[en] для минимизации функции с помощью аппроксимации. Как следствие, скорость сходимости алгоритма Гаусса — Ньютона может быть квадратична, если выполнены некоторые условия. В общем случае (при более слабых условиях), скорость сходимости может оказаться линейной[6].

Рекуррентное отношение метода Ньютона для минимизации функции S от параметров

где g означает вектор-градиент функции S, а H обозначает гессиан функции S. Поскольку , градиент задаётся равенством

Элементы гессиана вычисляются путём дифференцирования элементов градиента по

Метод Гаусса — Ньютона получается путём отбрасывания второй производной (второго члена в выражении). То есть гессиан аппроксимируется

,

где — элементы якобиана Jr. Градиент и приближённый гессиан можно записать в матричной нотации

Эти выражения подставляются в рекуррентное отношение выше для получения операционных уравнений

Сходимость метода Гаусса — Ньютона в общем случае не гарантирована. Аппроксимация

,

которая должна выполняться для возможности отбрасывания членов со второй производной, может быть получена в двух случаях, для которых сходимость ожидается[7]

  1. Значения функции малы по величине, по меньшей мере, рядом с минимумом.
  2. Функции лишь "слегка" нелинейны, то есть относительно малы по величине.

Улучшенные версии

В методах Гаусса — Ньютона сумма квадратов остатков S может не уменьшаться на каждой итерации. Однако, поскольку Δ направлен в сторону уменьшения функции, если не является стационарной точкой, выполняется неравенство для достаточно малых . Таким образом, если обнаруживается расходимость, можно использовать долю вектора приращения Δ в формуле обновления:

.

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

В случаях, когда в направлении вектора приращения оптимальная доля близка к нулю, альтернативным методом отработки расходимости является использование алгоритма Левенберга — Марквардта, известного также как «метод доверительных областей»[en][1]. Нормальные уравнения, модифицированные таким образом, что вектор спуска поворачивается в направлении наискорейшего спуска,

,

где D — положительная диагональная матрица. Заметим, что если D является единичной матрицей E и , то . Таким образом, направление Δ приближает направление отрицательного градиента .

Так называемый параметр Марквардта может также быть оптимизирован путём линейного поиска, но смысла особого нет, поскольку вектор сдвига нужно каждый раз пересчитывать, когда меняется . Более эффективная стратегия такая. Если обнаруживается расхождение, увеличиваем параметр Марквардта, пока S убывает. Затем сохраняем значение между итерациями, но уменьшаем его, если возможно, пока не достигнем значения, когда параметр Марквардта не может быть обнулён. Минимизация S тогда становится стандартной минимизацией Гаусса — Ньютона.

Оптимизация больших задач

Для оптимизации большого размера метод Гаусса — Ньютона особенно интересен, поскольку часто (хотя, определённо, не всегда) матрица более разрежена, чем приближённый гессиан . В таких случаях шаг вычисления сам по себе, обычно, требует применения итеративного приближённого метода, такого как метод сопряжённых градиентов.

Чтобы этот подход работал, необходим как минимум эффективный метод вычисления произведения

для некоторого вектора p. Для хранения разреженной матрицы практично хранить строки матрицы в сжатом виде (т.е. без нулевых элементов), что делает прямое вычисление приведённого выше произведения (ввиду транспозиции) сложным. Однако, если определить ci как строку i матрицы , выполняется следующее отношение:

так что любая строка делает вклад в произведение аддитивно и независимо. Кроме того, это выражение хорошо изучено для применения параллельных вычислений. Заметим, что любая строка ci является градиентом соответствующей невязки ri. При учёте этого обстоятельства вышеприведённая формула подчёркивает факт, что невязки вносят вклад в результат независимо друг от друга.

Связанные алгоритмы

В квазиньютоновских методах, таких как методы Дэвидона, Флетчера и Пауэлла[en] или Бройдена — Флетчера — Голдфарба — Шэнно (метод БФГШ) приближение полного гессиана строится с помощью первых производных так, что после n уточнений метод по производительности близок к методу Ньютона. Заметим, что квазиньютоновские методы могут минимизировать вещественные функции общего вида, в то время как методы Гаусса — Ньютона, Левенберга — Марквардта и т.д. применимы только к нелинейным задачам наименьших квадратов.

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

Примечания

Литература

Ссылки

Реализации

  • Artelys Knitro. Система для решения нелинейных задач с импленментацией метода Гаусса — Ньютона. Система написана на C и имеет интерфейсы для C++/C#/Java/Python/MATLAB/R.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии