Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как минимизировать функцию двух переменных методом наискорейшего спуска?

ПрограммированиеМашинное обучениеDeep learning
  · 901
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 11 мая 2022
Применим метод наискорейшего спуска к функции
f(x, y) = 4x^2 − 4xy + 2y^2 из точки x0 = (2,3). 
Сначала мы вычисляем направление наискорейшего спуска из
∇f(x, y) = (8x − 4y, 4y − 4x) чтобы получить
∇f(x0) = ∇f(2, 3) = (4, 4).
Минимизируем функцию 
ϕ(t) = f((2, 3) − t*(4, 4)) = f(2 − 4t, 3 − 4t)
вычисляя 
dϕ/dt = −∇f(2 − 4t, 3 − 4t)*(4, 4)
= −(8*(2 − 4t) − 4*(3 − 4t), 4*(3 − 4t) − 4*(2 − 4t))*(4, 4)
= −(16 − 32t − 12 + 16t, 12 − 16t − 8 + 16t)*(4, 4)
= −(−16t + 4, 4)*(4, 4)
= 64t − 32.
=============================
Эта строго выпуклая функция имеет строгий глобальный минимум, когда
dϕ/dt(t) = 64t−32 = 0 при t = 1/2, поскольку dϕ^2/dt^2(t) = 64 > 0. 
Теперь мы видим ,что x1 = x0 − (1/2)*∇f(x0) = (2, 3) − (1/2)*(4, 4) = (0, 1).
∇f(x1) = ∇f(0, 1) = (−4, 4), далее ϕ(t) = f((0, 1) − t*(−4, 4)) = f(4t, 1 − 4t)
Получаем
dϕ/dt(t) = −(8(4t) − 4(1 − 4t), 4(1 − 4t) − 4(4t))*(−4, 4) = −(48t − 4, −32t + 4)*(−4, 4) = 320t − 32.
Так как dϕ/dt(t) = 0 при t = 1/10, причем dϕ^2/dt^2(t) = 320, эта критическая точка является строгим глобальным минимумом
Теперь мы видим ,что
x2 = x1 −(1/10)*∇f(x1) = (0, 1)−(1/10)*(−4, 4) = (2/5,3/5)
Повторяя процесс x3 = (0,2/10).Мы видим,что метод наискорейшего спуска производит 
последовательность итераций xk,которая сходится к строгому глобальному минимимуму f(x, y) в точке x(мин) = (0, 0)
Инженер путей сообщения – строитель  · 6 мая 2022
Это же очевидно. Надо найти нужную библиотеку, которую надо подключить, запустить, передать в неё функцию двух переменных и получить результат. Изучать и переписывать алгоритмы задач оптимизации — скучно и долго.