2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Оптимизация функции нескольких переменных
Сообщение08.10.2016, 14:41 


10/12/14
20
Добрый день!
Существует функция шести переменных следующего вида:
F(\theta)=C_1\cdot\exp(\theta)+\dots+C_N\cdot\exp(\theta),

\theta=\theta(x_1,\dots,x_6).

В каждом слагаемом \theta принимает разные значения, поэтому сгруппировать в общем виде не представляется возможным.

Задание: требуется найти безусловный минимум функции F.

Если использовать метод Ньютона
\theta_{t+1}=\theta_{t} - H^{-1}(F(\theta_{t})) \cdot \nabla (F(\theta_{t})),

где H(F(\theta_{t})) - гессиан функции F, а \nabla (F(\theta_{t})) - градиент функции F, то последовательность \theta_{1}, \theta_{2},\dots не приводит к стабильному убыванию значения функции F. Более того, в отдельных случаях переход с \theta_{t} на \theta_{t+1} приводит к росту значения функции F.

При этом, если минимизировать функцию F покоординатно с использованием одномерного метода Ньютона (ниже - пример для фукнции, зависящей только от первой переменной):

\theta_{t+1}^{(1)}=\theta_{t}^{(1)} - (\frac{\partial^2 F}{\partial x_1^2})^{-1} \cdot \frac{\partial F}{\partial x_1}

сначала для первой переменной, затем для второй и т.д., то результаты получаются принципиально лучше. Последовательность \theta_{1}, \theta_{2},\dots приводит к стабильному убыванию значения функции F.

Вопрос: чем объясняется такое различие в результатах оптимизации?

Примечания. (1) Нет ошибки в расчетах производных, гессиана, оборачивании матриц и пр. (2) Оба метода были проверены на функциях отличных от F и привели к сходным результатам.

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение08.10.2016, 15:01 
Заслуженный участник
Аватара пользователя


06/10/08
6422
При реализации метода Ньютона, если новое значение больше предыдущего, то шаг уменьшают, сохраняя направление, т.е. $\theta_{t+1}=\theta_{t} - \alpha H^{-1}(F(\theta_{t})) \cdot \nabla (F(\theta_{t}))$, где $\alpha$ подбирается (обычно проверяют, уменьшается ли значение, и если нет, то умножают $\alpha$ на фиксированную константу меньше 1).
У Вас специфика функций, видимо, такая, что покоординатный метод работает лучше. Можно придумать примеры, когда покоординатный метод тоже будет промахиваться

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение08.10.2016, 15:22 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
embi в сообщении #1158167 писал(а):
Существует функция шести переменных следующего вида:
$F(\theta)=C_1\cdot\exp(\theta)+\dots+C_N\cdot\exp(\theta),$
$\theta=\theta(x_1,\dots,x_6).$

В каждом слагаемом $\theta$ принимает разные значения
Я правильно понял, что у Вас $N$ различных функций $\theta_i$, каждая от шести переменных $x_k$ ?
$F(x_1,\ldots,x_6)=C_1 e^{\theta_1(x_1,\ldots,x_6)}+C_2e^{\theta_2(x_1,\ldots,x_6)}+\dots+C_Ne^{\theta_N(x_1,\ldots,x_6)}$

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение09.10.2016, 23:06 


10/12/14
20
svv в сообщении #1158172 писал(а):
Я правильно понял, что у Вас $N$ различных функций $\theta_i$, каждая от шести переменных $x_k$ ?

Да, функция $F$ состоит из $N$ слагаемых, каждое из которых - произведение константы (C_i) на экспоненту. В свою очередь, экспонента зависит от шести переменных. Набор шести переменных не меняется, но \theta_i может принимать разные значения для каждого из слагаемых.

Xaositect в сообщении #1158169 писал(а):
При реализации метода Ньютона, если новое значение больше предыдущего, то шаг уменьшают, сохраняя направление, т.е. $\theta_{t+1}=\theta_{t} - \alpha H^{-1}(F(\theta_{t})) \cdot \nabla (F(\theta_{t}))$, где $\alpha$ подбирается (обычно проверяют, уменьшается ли значение, и если нет, то умножают $\alpha$ на фиксированную константу меньше 1).


Действительно, на всех итерациях \alpha=1, т.е. значение не менялось. Получается, необходимо ввести промежуточную стадию, скажем, $\theta'_{t+1}, на которой будет проверятся, новое значение больше или меньше предыдущего. Если больше, то корректируем шаг \alpha до тех пор, пока новое значение не станет меньше предыдущего. Если меньше, то $\theta_{t+1}=$\theta'_{t+1}.

Вы можете подтвердить, что такой алгоритм корректен?
Есть ли практические рекомендации по подбору \alpha?

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение10.10.2016, 01:29 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
embi в сообщении #1158492 писал(а):
Набор шести переменных не меняется, но $\theta_i$ может принимать разные значения для каждого из слагаемых.
Попросту потому, что в каждом слагаемом под экспонентой своя функция от иксов. Тогда не нужно обозначать их все одной буквой. Можно, как я сделал, добавить индекс, различающий разные функции.

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение10.10.2016, 17:16 
Заслуженный участник
Аватара пользователя


06/10/08
6422
embi в сообщении #1158492 писал(а):
Действительно, на всех итерациях \alpha=1, т.е. значение не менялось. Получается, необходимо ввести промежуточную стадию, скажем, $\theta'_{t+1}, на которой будет проверятся, новое значение больше или меньше предыдущего. Если больше, то корректируем шаг \alpha до тех пор, пока новое значение не станет меньше предыдущего. Если меньше, то $\theta_{t+1}=$\theta'_{t+1}.

Вы можете подтвердить, что такой алгоритм корректен?
Есть ли практические рекомендации по подбору \alpha?
Извините, я немного соврал, давно занимался оптимизацией. Такой подход работает, но в некоторых случаях сходимость будет медленной.
Нужны условия чуть сложнее. Посмотрите https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf, параграф 9.2, раздел "backtracking line search".

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение10.10.2016, 23:17 


10/12/14
20
Спасибо за ссылку. Интересный вариант. Постараюсь реализовать. Еще раз спасибо!

 Профиль  
                  
 
 Re: Оптимизация функции нескольких переменных
Сообщение12.10.2016, 14:22 


11/07/16
825
Зачем изобретать велосипед? Современные математические пакеты (Maple и Mathematica) имеют мощные средства для нахождения глобальных экстремумов. Пожалуйста, представьте на форуме формулу целевой функции (желательно в записи Maple/Mathematica) и ограничения на абсолютные величины переменных $x_1,\dots,x_6$ и я попытаюсь решить Вашу задачу.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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



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

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


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

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