Градиентные методы. Метод градиентного спуска с постоянным шагом. Метод наискорейшего градиентного спуска. Метод покоординатного спуска

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Фрагмент текста работы

Если выбранное условие при текущем tk не выполняется, шаг уменьшается вдвое и точка  вычисляется заново. При фиксированном j за одну итерацию с номером k изменяется только одна проекция точки xjk, имеющая номер k+ 1, а в течение всего цикла с номером j, т.е. начиная с    k = 0 и кончая k = n – 1, изменяются все n проекций точки xj0. После этого точке xjn присваивается номер xj+1,0 и она берется за начальную точку для вычисления в j + 1 цикле. Расчет заканчивается в точке xjk при выполнении по крайней мере одного из трех критериев окончания счета:  или j ≥ M, или двукратного выполнения неравенств , . Вопрос о том, является ли точка xjk найденным приближением искомой точки, решается путем проведения дополнительного исследования.

Алгоритм

Шаг 1. Задаем x00, e>0, e1>0, e2>0, предельное число M циклов счета, кратное n, где n – размерность вектора x. Находим градиент Ñf(x).

Шаг 2. Задаем номер цикла j = 0.

Шаг 3. Проверяем условие j ≥ M:

а) если j ≥ M, то x*=xjk, расчет окончен; б) если нет, то переходим к шагу 4.

Шаг 4. Задаем k=0.

Шаг 5. Проверяем условие kn – 1;

а) если kn – 1, то переходим к шагу 6;

б) если k = n, то полагаем j = j + 1 и xj+1,k = xjn и переходим к шагу 3.

Шаг 6. Вычисляем Ñf(xjk).

Шаг 7. Проверяем выполнение критерия окончания :

а) если критерий выполнен, x*=xjk, расчет окончен;

б) если нет, то переходим к шагу 8.

Шаг 8. Задаем tk.

Шаг 9. Вычисляем точку xjk+1: .

Шаг 10. Проверяем выполнение условия

 .

а) если условие выполнено, то переходим к шагу 11;

б) если нет, то полагаем  и переходим к шагу 9.

Шаг 11. Проверяем выполнение условий

 

а) если в двух последовательных циклах с номерами j и j – 1 оба условия выполняются, то расчет в точке xjk+1 окончен и x*=xjk+1;

б) если хотя бы одно из условий не выполнено, полагаем k=k+1 и переходим к шагу 5.

Геометрическая интерпретация метода для n=2 приведена на рисунке 3.

Замечания:

1. Если функция f(x) удовлетворяет условиям утверждения 1, то построение последовательности {xk} по методу координатного спуска обеспечивает выполнение условия ||Ñf(xk)|| ® 0 при k®¥.

2. Найденная в результате применения метода точка xk нуждается в дополнительном исследовании с целью ее классификации.

3. Скорость сходимости метода оценивается как линейная (т.е. со скоростью геометрической прогрессии)

Рисунок 3

Метод Гаусса-Зейделя

Стратегия поиска

Стратегия метода Гаусса-Зейделя [Gauss-Seidel] состоит в построении последовательности точек {xk}, k= 0, 1, …, таких, что f(xk+1)<f(xk), k= 0, 1, …. Точки последовательности {xk} вычисляются по правилу

(6)

где j – номер цикла вычислений, j= 0, 1, 2, …; k – номер интеграции внутри цикла, k= 0, 1, …, n–1; ek+1 – единичный вектор, (k+1)-я проекция которого равна 1; точка x00 задается пользователем, величина шага tk выбирается из условия

.

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

Если условие  имеет высокую степень и корни его трудно определить, можно аппроксимировать функцию j(tk) полиномом P(tk) второй или третьей степени и определить tk* из условия , .

При численном решении задачи определения величины шага степень близости найденного значения tk к оптимальному значению tk*, удовлетворяющему условиям , , зависят от задания интервала [a,b] и точности методов одномерной минимизации.

При фиксированном j за одну итерацию с номером k изменяется только одна проекция точки xjk, имеющая номер k + 1, а в течение всего цикла с номером j, т.е. начиная с k = 0 и кончая k = n – 1, изменяются все n проекции точки xj0. После этого точке xjk присваивается номер xj+1,0 и она берется за начальную точку для вычисления в (j + 1)-м цикле.

Расчет заканчивается в точке xjk при выполнении по крайней мере одного из трех критериев окончания счета: , или k ≥ M, или двукратного выполнения неравенств , . Здесь e1, e1 – малые положительные числа, M – предельное число циклов итерации. Вопрос о том, является ли точка xjk найденным приближением искомой точки, решается путем проведения дополнительного исследования.

Алгоритм

Шаг 1. Задаем x00, e1>0, e2>0, предельное число M циклов счета, кратное n, где n – размерность вектора x. Находим градиент Ñf(x).

Шаг 2. Задаем номер цикла j = 0.

Шаг 3. Проверяем условие j ≥ M:

а) если j ≥ M, то расчет окончен и x*=xjk;

б) если j < M, то переходим к шагу 4.

Шаг 4. Задаем k=0.

Шаг 5. Проверяем условие kn – 1;

а) если kn – 1, то переходим к шагу 6;

б) если k = n, то полагаем j = j + 1 и переходим к шагу 3.

Шаг 6. Вычисляем Ñf(xjk).

Шаг 7. Проверить выполнения условия :

а) если условие выполнено, то расчет окончен и x*=xjk;

б) если нет, то переходим к шагу 8.

Шаг 8. Вычисляем tk* из условия

.

Шаг 9. Вычисляем .

Шаг 10. Проверяем выполнение условий

:

а) если оба условия выполнены в двух последовательных циклах с номерами j и j – 1, то расчет окончен, найдена точка x*=xjk+1;

б) если не выполняется хотя бы одно условие, полагаем k=k+1 и переходим к шагу 5.

Геометрическая интерпретация метода для n=2 приведена на рисунок

Похожие материалы

Информация о работе

Тип:
Конспекты лекций
Размер файла:
1 Mb
Скачали:
0

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.