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
10910
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
10910
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 ] 

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



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

Сейчас этот форум просматривают: nnosipov


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

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