-
Ребят, кто-нибудь может доступно и на пальцах объяснить сабж? Или с какими-нибудь примерами из жизни?
-
Заранее благодарю
-
На пальцах: метод применяется для поиска локального экстремума функции нескольких переменных. Хотя, что там особо говорить, все эти "методы" есть только умные слова вокруг довольно простых и наглядных идей.
Выбираем начальную точку многомерной области определения. В этой точке фиксируем все координаты, кроме первой, получаем функцию одной переменной, ищем ее локальный экстремум (как угодно). В полученной точке фиксируем все координаты, кроме второй, получаем функцию одной переменной, ищем ее локальный экстремум... И так по кругу, пока не надоест, то есть пока не будет получена требуемая точность.
P.S. Не гарантируется, что полученный результат будет хоть примерно соответствовать истинному положению локального экстремума. Зато согреешься.
-
Иллюстрация: представь, что имеется прямая дорога, идущая ровно по краю оврага. При этом тебе надо спуститься в низшую точку этого оврага, но двигаться ты можешь только либо параллельно дороге, либо перпендикулярно. Причем, выбрав направление (перпендикулярно или параллельно), имеет смысл двигаться в этом направлении до тех пор, пока это нас устраивает (высота уменьшается), а как только высота перестала уменьшаться, меняем направление (перпендикулярное на параллельное или наоборот). Так победим!
-
> Внук © (14.01.18 21:53) [3]
можно умудрится всегда делать два лишних поворота ))
-
> Внук © (14.01.18 21:42) [2]
Спасибо! Мне нужно разом менять все переменные функции, чтобы минимизировать другую функцию, которая зависит от первой.
Допустим, я выбрал дельту для каждой новой итерации. Как лучше сделать: половину переменных уменьшить на эту дельту, а половину увеличить? И если вторая функция минимизировалась, то продолжить в таком же духе?
И как избежать повторения?
-
Дык в том и суть метода, что на каждой итерации Вы меняете только одну переменную. Метод прост и туп :). А чтобы делать, как Вы хотите - нужно вначале оценить матрицу Якоби, и из нее уже решать, куда двигаться - сразу по всем переменным. Если у Вас функции заданы в явном виде, лучше якобиан выписать аналитически - тогда вычислений понадобится гораздо меньше...
-
Styx, вот у меня 50 переменных. В каждой итерации менять их друг за другом или менять первую, пока не будет достигнут оптимум?
-
Меняешь первую, пока не дойдёшь до минимума функции. Потом также вторую, третью и далее... После пятидесятой - снова первую, вторую, третью... И так - до тех пор, пока не получится, что за весь круг из 50 переменных не окажется, что двигаться больше некуда.
-
> Styx © (17.01.18 01:35) [8] > Меняешь первую, пока не дойдёшь до минимума функции. Потом > также вторую, третью и далее...
А не получится ли так, что мы, оптимизировав функцию при первой переменной, начнем ее ухудшать при второй и лучше было бы частично оптимизировать первую переменную и улучшать второй?
-
Как мы можем ее ухудшить, если мы всегда идем вниз? На то он и спуск. Но да, путь спуска может быть совсем неоптимальным, и для некоторых (правда, весьма специфических) случаев этот способ не сработает вообще. Есть множество способов, позволяющих найти минимум быстрее - но для них требуется знание Якобиана, как я уже говорил. И имейте в виду, что никакой способ не гарантирует нахождение глобального минимума, речь идёт только о локальной оптимизации. Глобальный минимум можно найти только для линейной функции, для нелинейных - можно только попытаться проверить, что рядом нет более глубоких минимумов, начиная оптимизацию с разных начальных значений.
-
Сессия. Однако.
-
-
> Mystic © (17.01.18 19:50) [12]
Я ничего не понял из вашей картинки
-
> Larin © (18.01.18 07:32) [13] > > > Mystic © (17.01.18 19:50) [12] > > > Я ничего не понял из вашей картинки
Это плохо, что не поняли. На картинке изображено всё, что нужно знать про метод.
-
> Внук © (14.01.18 21:42) [2] > > На пальцах: > метод применяется для поиска локального экстремума функции > нескольких переменных.
а как найти глобальный экстремум?
-
> а как найти глобальный экстремум?
С помощью анализа, нет? Находим все x: f'(x)=0, ну, а дальше понятно
-
> С помощью анализа, нет?
у меня не переменные - ряды(значения)
в общем, проблема в том, что падаю в локальный минимум. В машобучении в такой ситуации "встряхивают" сеть, сильно меняя веса. Вот только у меня не веса, а смещения рядов друг относительно друга. Пока данных мало - имею возможность перебрать все варианты. Но как конечное решение это не вариант. Нужно как-то уменьшить кол-во переборов.
-
>>картман © (31.01.18 15:19) [15] В общем случае никак. Если неизвестно его хотя бы примерное расположение. А если известно, то так же, как локальный :)))
Численные методы вообще не работают без какого-то априорного знания о свойствах исследуемого объекта. Даже чтобы применить банальный метод деления отрезка пополам, надо иметь уверенность хотя бы в непрерывности функции.
-
> Численные методы вообще не работают без какого-то априорного > знания о свойствах исследуемого объекта.
Спасибо. А где найти пару авторитетных строк, утверждающих это(не мне - начальству который месяц не могу донести данный факт)?
|