Как лучше оптимизировать, в какую сторону лучше двигаться?

Пытаюсь, подобрать параметры для своей задачи. Строю ИНС. Прочитала, про жадный поиск, вопрос есть ли еще какие-либо методы для подбора параметров(гиперпараметров в ИНС). Так как жадный поиск делает все последовательно и подряд.

Может есть лучше способы оптимизации, в какую сторону лучше двигаться?


Ответы (2 шт):

Автор решения: hedgehogues

Кажется, что у Вас есть небольшое недопонимание в плане того, какие алгоритмы оптимизации бывают. Начнём с того, что есть градиентные, а есть без градиентные.

Примеры библиотек, решений и подходов:

Что вы понимаете под жадным не до конца понятно. Жадная же стратегия -- это более общая концепция, нежели та, что применяется в нейронных сетях. Эта стратегия заключается в том, что на каждом этапе следует брать самый лучший из возможных вариантов. Делается предположение, что в таком случае мы получим самое лучшее решение. В подавляющем большинстве задач это не приводит к самому лучшему решению. Но часто даёт очень хорошее приближение.

Градиентные методы -- алгоритмы, которые явно или неявно используют градиент функции потерь для понимания, где лучшее решение задачи. Например, это глассический градиентный спуск. У него, в самом простом варианте, есть параметр скорости обучения. Его, например, можно подбирать тем же гридсёрчем, либо регрессией, как вариант.

Такую задачу регрессии можно решать очень многими способами. Один из вариантов (не нужно его использовать, это только пример) -- это взять за обучающую выборку текущую конфигурацию весов как входные параметры, а за целевую переменную наилучший параметр "скорость обучения", который Вы можете подобрать, например, грид серчем. Таких примеров можно построить очень много.

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

Для градиентных методов существуют очень различные вариации. Самая популярная из них -- это A d a m.

Безградиентные методы представляют собой другой, более широкий класс алгоритмов. И, вообще говоря, они включают градиентные методы. В этой постановке задачи, можно найти разные алгоритмы, которые с первого взгляда непохожи на градиентные. Например, метод оптимизации Нелдера — Мида. Но если подумать, то почти всегда можно придумать, как унифицировать процедуру этого метода с градиентом. При этом, всегда будет отличие. Такие алгоритмы работают с негладкими функциями. Т.е. градиента у них нет в явном виде. Его можно только придумать.

Гладкие функции -- это те, у которых нет изломов, разрывов, выколотых точек. Вот пример гладкой и негладкой функций соответственно:

введите сюда описание изображения

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

Возвращаясь к Вашему вопросу. Уверены ли Вы, что Вам нужно подбирать параметры автоматически? Часто гридсерч -- это самое лучшее, что есть. Вы также можете посмотреть в сторону autoML. Возможно, это именно то, что Вам нужно.

→ Ссылка
Автор решения: MaxU

Небольшое отступление:

Вы неудачно перевели Grid Search как жадный поиск. Grid переводится как сетка или решетка.

Жадный - greeedy.

Это могло ввести в заблуждение участников SO.

Ответ:

Попробуйте один из следующих модулей / подходов:

→ Ссылка