Я работаю над теоретическим машинным обучением - по переводному обучению, если быть точным - для моего доктора философии.
Из любопытства, почему я должен пройти курс по выпуклой оптимизации?
Какие выводы из выпуклой оптимизации я могу использовать в своих исследованиях теоретического машинного обучения?
machine-learning
optimization
convex
transfer-learning
Упендра Пратап Сингх
источник
источник
Ответы:
Алгоритмы машинного обучения постоянно используют оптимизацию. Мы минимизируем потери или ошибки, или максимизируем какие-то функции оценки. Градиентный спуск - это алгоритм оптимизации «Здравствуй, мир», который можно найти практически на любом курсе машинного обучения. Это очевидно в случае моделей регрессии или классификации, но даже с такими задачами, как кластеризация, мы ищем решение, которое оптимально соответствует нашим данным (например, k-means минимизирует сумму квадратов внутри кластера). Поэтому, если вы хотите понять, как работают алгоритмы машинного обучения, вам поможет больше узнать об оптимизации. Более того, если вам нужно что-то вроде настройки гиперпараметра, то вы также напрямую используете оптимизацию.
Можно утверждать, что выпуклая оптимизация не должна быть такой интересной для машинного обучения, поскольку вместо того, чтобы иметь дело с выпуклыми функциями , мы часто сталкиваемся с поверхностями потерь, такими как приведенная ниже, которые далеки от выпуклых .
(источник: https://www.cs.umd.edu/~tomg/projects/landscapes/ и arXiv: 1712.09913 )
Тем не менее, как уже упоминалось в других ответах, выпуклая оптимизация выполняется быстрее, проще и требует меньше вычислительных ресурсов, поэтому зачастую проще «выпуклить» проблему (сделать ее удобной для выпуклой оптимизации), а затем использовать невыпуклую оптимизацию. Например, алгоритмы градиентного спуска и подобные алгоритмы обычно используются в машинном обучении, особенно для нейронных сетей, потому что они «работают», масштабируются и широко применяются в различном программном обеспечении, тем не менее они не лучшие из тех, что мы можем получить, и имеют свои подводные камни. , как обсуждалось в выступлении Али Рахими на NIPS 2017 .
С другой стороны, невыпуклые алгоритмы оптимизации, такие как эволюционные алгоритмы, по-видимому, получают все большее признание в сообществе ML, например, обучение нейронных сетей с помощью нейроэволюции, кажется, является недавней темой исследования (см. Также arXiv: 1712.07897 ).
источник
Я думаю, что здесь есть два вопроса.
Я думаю, у @Tim есть хороший ответ о том, почему оптимизация. Я полностью согласен и рекомендую всем, кто интересуется машинным обучением, освоить непрерывную оптимизацию. Потому что процесс оптимизации / поиск лучшего решения с течением времени, это процесс обучения для компьютера.
Я хочу поговорить подробнее о том, почему нас интересуют выпуклые функции. Причина проста: выпуклые оптимизации «легче решить», и у нас есть много надежных алгоритмов для решения.
Но мир выпуклый? Нет. Почему одержимы выпуклостью? Проверьте эту метафору
источник
Наиболее важный вывод заключается в том, что машинное обучение применяется к задачам, где нет оптимального решения. Лучшее, что вы можете сделать, это найти хорошее приближение.
Напротив, когда у вас есть проблема оптимизации, существует оптимальное решение, но ее обычно нельзя найти за разумное время или с разумной вычислительной мощностью.
Инструменты и алгоритмы, которые вы используете, принципиально отличаются. Поэтому, хотя я бы сказал, что использование класса оптимизации не дает немедленной выгоды, всегда полезно немного узнать о связанных областях. Если вы сможете распознать проблему оптимизации, вы поймете, что вам следует решать ее не с помощью алгоритмов машинного обучения, а с помощью алгоритмов оптимизации. Одно это стоит многого, я бы сказал.
источник
Как сказал hxd1011, выпуклые задачи легче решать как теоретически, так и (как правило) на практике. Таким образом, даже для невыпуклых задач многие алгоритмы оптимизации начинаются с «шага 1. приведите задачу к выпуклой» (возможно, внутри цикла while).
Аналогичная вещь происходит с нелинейным корнем. Обычно решение (например, с помощью метода Ньютона) идет «шаг 1. Свести к линейной задаче, потому что мы знаем, как их решить».
источник
Если ваши интересы лежат в (выпуклой) оптимизации, применяемой к приложениям глубокого обучения (вы упоминаете трансферное обучение, которое широко используется на практике с нейронными сетями), я настоятельно рекомендую вам прочитать главу 8 (оптимизация для обучения глубоким нейронным сетям) http : //www.deeplearningbook.org/
Существует обсуждение выпуклой оптимизации, и почему она еще не была настолько успешной, когда применяются глубокие нейронные сети. Конечно, возможно, вы могли бы провести исследование в этой области, которое изменит текущий консенсус!
источник
Как я слышал от Джерома Х. Фридмана, методы, разработанные в машинном обучении, фактически не принадлежат сообществу машинного обучения.
С моей точки зрения, машинное обучение больше похоже на набор различных методов из других областей.
С точки зрения статистического обучения три основных вопроса регрессии и классификации:
Какова функция семейства, из которого вы тянете аппроксиматор
Каковы критерии, как вы тянете функцию
Какой способ найти лучшую функцию
Работать каким-то конструктивным образом с (1) - не так очевидно, как может помочь использование математической оптимизации.
Работать каким-либо конструктивным образом над (2) - очевидно, что цель - это цель. И математическая оптимизация может помочь в этом.
Для того, чтобы как-то конструктивно работать с (3) - вам нужна математическая оптимизация.
Там несколько частей математической оптимизации:
Также есть способы как-то справиться со «стохастичностью», даже «Никто не знает, как решить стохастическую выпуклую оптимизацию»
Невыпуклая оптимизация - обычно под этим люди подразумевают нечто, что является постоянной целью, но кривизна может варьироваться. Люди на этой планете не знают, как это точно решить. И на самом деле все методы делают рычаги в (1)
Комбинаторная оптимизация - она еще более дикая, чем (2), теперь для параметров, которые вы найдете, вы даже не можете применить оператор минус. Одним из примеров являются «регионы» в деревьях решений. Таким образом, есть два способа решения этой проблемы: а) выпуклая проблема и использование методов из (1); б) создание грубой силы. Не работает для огромного количества параметров. в) Сделать грубую силу, но с некоторыми жадными шагами. Это то, что делает CART.
Так что, по крайней мере, я думаю, что советую вам:
I) Оптимизация выпуклости - центральная вещь для большинства задач оптимизации.
II) «01:15 Оптимизация на самом деле является более важной темой, чем ML или AI, но на самом деле это большая тема». ( https://www.youtube.com/watch?v=uF3htLwUHn0&t=992s )
источник