Зачем нужна оптимизация в ML?

Как модели на самом деле обучаются — от обычного градиентного спуска до Adam

Машинное обучение выглядит как предсказание, классификация, генерация, рекомендации. Но под капотом это один и тот же повторяющийся математический приём: выбрать числа, измерить, насколько они плохи, а затем менять числа так, чтобы эта «плохость» уменьшалась. Это и есть оптимизация.

Эти числа — параметры модели, обычно собранные в один огромный вектор θ. Оценка плохости — это потеря, записываемая как L(θ). Обучение означает поиск по пространству параметров такой настройки, при которой эта потеря мала. Запись ниже говорит ровно это: argmin возвращает выигрышный вход (то θ, при котором потеря наименьшая), а не выигрышное значение потери, а звёздочка у θ⋆ отмечает именно эту лучшую настройку.

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

Где это встречается в MLИменно поэтому оптимизация лежит в центре ML. Обратное распространение вычисляет ∇L. SGD, импульс, RMSProp и Adam решают, как этим воспользоваться. Расписания управляют размером шага, а регуляризация перекраивает целевую функцию. Как только обучение сводится к минимизации L(θ), главный вопрос становится простым: в каком направлении должны двигаться параметры?
▶ Зачем нужна оптимизация в ML?
← Неравенства концентрации (кратко)Скорость обучения →