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


27

Я работаю над теоретическим машинным обучением - по переводному обучению, если быть точным - для моего доктора философии.

  • Из любопытства, почему я должен пройти курс по выпуклой оптимизации?

  • Какие выводы из выпуклой оптимизации я могу использовать в своих исследованиях теоретического машинного обучения?


2
Неясно, возражаете ли вы против выпуклой части, части оптимизации или обеих.
Мердад

Обратите внимание, что ответ, который вы приняли, явно неверен. Может быть, вы можете взглянуть на этот вопрос еще раз и выбрать ответ, который имеет гораздо больше смысла.
xji

Выпуклая оптимизация и математическая оптимизация - это инструмент для построения моделей - эта техника используется для построения моделей / управления ими / поиска параметров понятного явления вплоть до некоторой неопределенности.
bruziuz

Машинное обучение подразумевает приближение функций построения, таких как методы подсчета, и, насколько вам известно, одну из функций выбора концепции, которые приблизительно минимизируют потери (которые являются невыпуклыми или даже худшими включают переменные индикатора), поэтому ML хорошо сочетается с невыпуклой оптимизацией.
bruziuz

К вашему сведению: «Выпуклую оптимизацию нельзя использовать для глубокого обучения, - С.Бойд» - youtu.be/uF3htLwUHn0?t=2810
bruziuz

Ответы:


60

Алгоритмы машинного обучения постоянно используют оптимизацию. Мы минимизируем потери или ошибки, или максимизируем какие-то функции оценки. Градиентный спуск - это алгоритм оптимизации «Здравствуй, мир», который можно найти практически на любом курсе машинного обучения. Это очевидно в случае моделей регрессии или классификации, но даже с такими задачами, как кластеризация, мы ищем решение, которое оптимально соответствует нашим данным (например, k-means минимизирует сумму квадратов внутри кластера). Поэтому, если вы хотите понять, как работают алгоритмы машинного обучения, вам поможет больше узнать об оптимизации. Более того, если вам нужно что-то вроде настройки гиперпараметра, то вы также напрямую используете оптимизацию.

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

Пример реального, невыпуклого ландшафта потерь.

(источник: https://www.cs.umd.edu/~tomg/projects/landscapes/ и arXiv: 1712.09913 )

Тем не менее, как уже упоминалось в других ответах, выпуклая оптимизация выполняется быстрее, проще и требует меньше вычислительных ресурсов, поэтому зачастую проще «выпуклить» проблему (сделать ее удобной для выпуклой оптимизации), а затем использовать невыпуклую оптимизацию. Например, алгоритмы градиентного спуска и подобные алгоритмы обычно используются в машинном обучении, особенно для нейронных сетей, потому что они «работают», масштабируются и широко применяются в различном программном обеспечении, тем не менее они не лучшие из тех, что мы можем получить, и имеют свои подводные камни. , как обсуждалось в выступлении Али Рахими на NIPS 2017 .

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


5
этот ответ, кажется, не обращается к "выпуклому"
Haitao Du

@ hxd1011 Я прокомментировал это.
Тим

Отличный ответ! На самом деле рассматривается, насколько критически важна оптимизация для ML и как ML упрощается с помощью выпуклых приближений, которые работают с градиентным спуском.
ChuckCottrill

Это должен быть принятый ответ.
Ян Кукацка

11

Я думаю, что здесь есть два вопроса.

  • Зачем изучать оптимизацию
  • Почему выпуклая оптимизация

Я думаю, у @Tim есть хороший ответ о том, почему оптимизация. Я полностью согласен и рекомендую всем, кто интересуется машинным обучением, освоить непрерывную оптимизацию. Потому что процесс оптимизации / поиск лучшего решения с течением времени, это процесс обучения для компьютера.

Я хочу поговорить подробнее о том, почему нас интересуют выпуклые функции. Причина проста: выпуклые оптимизации «легче решить», и у нас есть много надежных алгоритмов для решения.

Но мир выпуклый? Нет. Почему одержимы выпуклостью? Проверьте эту метафору

Полицейский видит пьяного, ищущего что-то под уличным фонарем, и спрашивает, что пьяный потерял. Он говорит, что потерял ключи, и они оба смотрят под уличный свет вместе. Через несколько минут полицейский спрашивает, уверен ли он, что потерял их здесь, и пьяный отвечает, нет, и что он потерял их в парке. Полицейский спрашивает, почему он ищет здесь, а пьяный отвечает: «Вот где свет».


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

Этот ответ ошибочен на многих уровнях. Сравнивать выпуклый анализ с эффектом уличного освещения просто неправильно . Я бы посоветовал вам обратиться к вводному учебнику « Выпуклая оптимизация » Бойда и Ванденберге, чтобы узнать больше по этой теме.
Digio

2

Наиболее важный вывод заключается в том, что машинное обучение применяется к задачам, где нет оптимального решения. Лучшее, что вы можете сделать, это найти хорошее приближение.

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

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


33
Да, в машинном обучении мы ищем наилучшие приближения. Но вы ошибаетесь , говоря, что обе вещи «принципиально разные». Алгоритмы ML используют оптимизацию, чтобы минимизировать функции потерь и найти оптимальные параметры с учетом данных и цели. Когда вы настраиваете свои гиперпараметры, вы ищете их оптимальное сочетание. В каждом из случаев вы максимизируете или минимизируете что-то для достижения своей цели, поэтому вы используете какую-то оптимизацию.
Тим

@ Тим: Правда, я должен был сформулировать это по-другому.
Тоби

17
если вы согласны, то вам, вероятно, следует перефразировать это.
Тим

19
Этот ответ явно неверен. Значительное количество проблем машинного обучения сводится к проблемам оптимизации.
Восстановить Монику

2
Утверждение, что в «задачах оптимизации оптимальное решение обычно не может быть найдено» неверно. Особенно в контексте выпуклой оптимизации (о чем спрашивает OP), оптимальное решение может быть легко найдено (например, градиентный спуск с затухающей скоростью обучения гарантированно сходится к оптимуму выпуклой функции). Большая проблема в том, что многие проблемы в машинном обучении невыпуклые .
Ян Кукацка

2

Как сказал hxd1011, выпуклые задачи легче решать как теоретически, так и (как правило) на практике. Таким образом, даже для невыпуклых задач многие алгоритмы оптимизации начинаются с «шага 1. приведите задачу к выпуклой» (возможно, внутри цикла while).

Аналогичная вещь происходит с нелинейным корнем. Обычно решение (например, с помощью метода Ньютона) идет «шаг 1. Свести к линейной задаче, потому что мы знаем, как их решить».


1

Если ваши интересы лежат в (выпуклой) оптимизации, применяемой к приложениям глубокого обучения (вы упоминаете трансферное обучение, которое широко используется на практике с нейронными сетями), я настоятельно рекомендую вам прочитать главу 8 (оптимизация для обучения глубоким нейронным сетям) http : //www.deeplearningbook.org/

Существует обсуждение выпуклой оптимизации, и почему она еще не была настолько успешной, когда применяются глубокие нейронные сети. Конечно, возможно, вы могли бы провести исследование в этой области, которое изменит текущий консенсус!


0

Как я слышал от Джерома Х. Фридмана, методы, разработанные в машинном обучении, фактически не принадлежат сообществу машинного обучения.

С моей точки зрения, машинное обучение больше похоже на набор различных методов из других областей.

С точки зрения статистического обучения три основных вопроса регрессии и классификации:

  1. Какова функция семейства, из которого вы тянете аппроксиматор

  2. Каковы критерии, как вы тянете функцию

  3. Какой способ найти лучшую функцию


Работать каким-то конструктивным образом с (1) - не так очевидно, как может помочь использование математической оптимизации.

Работать каким-либо конструктивным образом над (2) - очевидно, что цель - это цель. И математическая оптимизация может помочь в этом.

Для того, чтобы как-то конструктивно работать с (3) - вам нужна математическая оптимизация.


Там несколько частей математической оптимизации:

  1. Оптимизация выпуклостей / Выпуклый анализ - очень крутая математика. Недифференцируемость не является проблемой. И есть 50 обобщений выпуклых функций, из которых более двух полезных с точки зрения применения квазивыпуклые и лог-вогнутые.

Также есть способы как-то справиться со «стохастичностью», даже «Никто не знает, как решить стохастическую выпуклую оптимизацию»

  1. Невыпуклая оптимизация - обычно под этим люди подразумевают нечто, что является постоянной целью, но кривизна может варьироваться. Люди на этой планете не знают, как это точно решить. И на самом деле все методы делают рычаги в (1)

  2. Комбинаторная оптимизация - она ​​еще более дикая, чем (2), теперь для параметров, которые вы найдете, вы даже не можете применить оператор минус. Одним из примеров являются «регионы» в деревьях решений. Таким образом, есть два способа решения этой проблемы: а) выпуклая проблема и использование методов из (1); б) создание грубой силы. Не работает для огромного количества параметров. в) Сделать грубую силу, но с некоторыми жадными шагами. Это то, что делает CART.


Так что, по крайней мере, я думаю, что советую вам:

I) Оптимизация выпуклости - центральная вещь для большинства задач оптимизации.

II) «01:15 Оптимизация на самом деле является более важной темой, чем ML или AI, но на самом деле это большая тема». ( https://www.youtube.com/watch?v=uF3htLwUHn0&t=992s )


Это немного кратко по стандартам этого сайта в качестве ответа - вы думаете, вы могли бы расширить его? В противном случае это может быть лучше всего подходит в качестве комментария.
Серебряная рыбка

Хорошо. Я буду расширяться, но на самом деле можно написать статью о связи с различными областями. На самом деле я задал вопрос Стивену П. Бойду относительно того, о чем люди думали ранее и когда - youtu.be/XV1E-Jnc4SU?t=242 . Он сказал, что в наши дни мир разрушен.
bruziuz

1
@Silverfish Я обновил, теперь это длинный текст вместо одного предложения.
bruziuz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.