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