Алгоритмы машинного обучения постоянно используют оптимизацию. Мы минимизируем потери или ошибки, или максимизируем какие-то функции оценки. Градиентный спуск - это алгоритм оптимизации «Здравствуй, мир», который можно найти практически на любом курсе машинного обучения. Это очевидно в случае моделей регрессии или классификации, но даже с такими задачами, как кластеризация, мы ищем решение, которое оптимально соответствует нашим данным (например, k-means минимизирует сумму квадратов внутри кластера). Поэтому, если вы хотите понять, как работают алгоритмы машинного обучения, вам поможет больше узнать об оптимизации. Более того, если вам нужно что-то вроде настройки гиперпараметра, то вы также напрямую используете оптимизацию.
Можно утверждать, что выпуклая оптимизация не должна быть такой интересной для машинного обучения, поскольку вместо того, чтобы иметь дело с выпуклыми функциями , мы часто сталкиваемся с поверхностями потерь, такими как приведенная ниже, которые далеки от выпуклых .
(источник: https://www.cs.umd.edu/~tomg/projects/landscapes/ и arXiv: 1712.09913 )
Тем не менее, как уже упоминалось в других ответах, выпуклая оптимизация выполняется быстрее, проще и требует меньше вычислительных ресурсов, поэтому зачастую проще «выпуклить» проблему (сделать ее удобной для выпуклой оптимизации), а затем использовать невыпуклую оптимизацию. Например, алгоритмы градиентного спуска и подобные алгоритмы обычно используются в машинном обучении, особенно для нейронных сетей, потому что они «работают», масштабируются и широко применяются в различном программном обеспечении, тем не менее они не лучшие из тех, что мы можем получить, и имеют свои подводные камни. , как обсуждалось в выступлении Али Рахими на NIPS 2017 .
С другой стороны, невыпуклые алгоритмы оптимизации, такие как эволюционные алгоритмы, по-видимому, получают все большее признание в сообществе ML, например, обучение нейронных сетей с помощью нейроэволюции, кажется, является недавней темой исследования (см. Также arXiv: 1712.07897 ).