11. Алгоритмы оптимизации
До сих пор в этой книге мы использовали множество алгоритмов оптимизации для обучения моделей глубокого обучения. Они позволяют продолжать обновлять параметры модели и минимизировать значение функции потерь, вычисленное на обучающем наборе. Тот, кто воспринимает оптимизацию как чёрный ящик, который минимизирует целевую функцию в простых условиях, наверняка знает набор таких «заклинаний» — с названиями вроде «SGD» и «Adam».
Однако чтобы делать это лучше, нужны более глубокие знания. Оптимизация очень важна для глубокого обучения. С одной стороны, обучение сложных моделей может занимать часы, дни и даже недели, и производительность алгоритмов оптимизации напрямую влияет на эффективность обучения. С другой стороны, понимание принципов разных алгоритмов и роли их гиперпараметров позволяет целенаправленно подбирать гиперпараметры и повышать качество модели.
В этой главе мы подробно рассмотрим распространённые алгоритмы оптимизации для глубокого обучения. Почти все задачи оптимизации, возникающие в глубоком обучении, невыпуклые. Тем не менее проектировать и анализировать алгоритмы на примере выпуклых задач очень полезно. Поэтому в главе есть введение в выпуклую оптимизацию и доказательство сходимости очень простого алгоритма стохастического градиентного спуска для выпуклых целевых функций.