«Все сходится» — лучший комплимент дата-сайентисту
Алгоритмы и модели машинного обучения оценивают по разным параметрам: от них зависит, насколько быстро и точно работает модель. Один из таких параметров — сходимость, или конвергенция алгоритма. Сходимость показывает, насколько быстро модель достигает «оптимума» — точки, за которой меньше ошибается и делает более точные прогнозы.
Разбираемся подробнее, что такое конвергенция, вместе с экспертом.
Руководитель группы машинного обучения в VK
Что такое сходимость в математике
По определению, сходимость — свойство, которое означает существование у чего-то конечного предела. Например:
конечная сумма у членов бесконечного ряда чисел;
конечное значение интеграла;
конечное число при бесконечном перемножении чисел.
Например, у функции может существовать предел, который стремится к какому-то определенному значению (lim 1/x стремится к 0 при x→ ∞).
Соответственно, несходимость — отсутствие такого конечного значения. В математике термины применяются к самым разным сущностям: рядам, последовательностям, суммам и произведениям чисел.
Видов сходимости тоже несколько. Например, абсолютная сходимость означает, что последовательность сходится во всех случаях, а условная — что сам ряд сходится, а вот ряд из его значений по модулю — нет.
Сходимость в машинном обучении
Понятие сходимости в машинном обучении немного отличается от сходимости в классической математике, хотя суть похожа. Разница в том, что термин применяется не к числовым последовательностям, а к оптимизации ML-модели. Сходимость означает, что разница между настоящими результатами и теми, которые предсказала модель, стала минимальной.
Вот как это работает. Во время обучения модели помимо прочих используют два параметра:
скорость обучения, или Learning Rate — гиперпараметр, который показывает, насколько нужно изменять модель после каждой ошибки;
ошибки, или Errors — то, насколько сильно результаты работы модели отклоняются от истины.
Достижение сходимости — это момент в обучении, после которого ошибок становится меньше, а скорость обучения меняется слабее. То есть это своеобразное «оптимальное» значение, которое говорит, что модель достигла высокой степени точности.
Виды сходимости в машинном обучении
В ML сходимость разделяется на три группы. Деление происходит по тому, какую функцию использовали при оценке процесса обучения. Вот что это за группы и чем они различаются.
Сходимость функции потерь. Она описывает, как значения функции ошибок изменяются во время обучения алгоритма.
Когда функция перестает меняться и достигает конечного значения — считается, что алгоритм сошелся.
Этот вид сходимости хорошо иллюстрирует процесс оптимизации в математическом смысле. Но он не всегда дает полное представление о том, насколько хорошо работает модель с точки зрения бизнес-результатов.
Сходимость метрики качества. В ML могут использовать и другие параметры, кроме ошибки. Например, точность или полноту. Для этих метрик тоже оценивают сходимость — то, как параметр изменяется по мере обучения модели.
Принцип тот же: алгоритм сходится, если метрика качества достигает нужного значения или стабилизируется и перестает активно изменяться.
Такая сходимость точнее показывает, насколько хорошо модель решает задачу для конечных пользователей — например, классифицирует или выделяет данные.
Сходимость по параметрам. Этот вид сходимости описывает, как на каждом шагу обучения изменяются веса или другие параметры модели.
Алгоритм сходится, когда параметры перестают меняться или изменения становятся очень маленькими.
Сходимость по параметрам позволяет оценить стабильность модели. Если веса почти не меняются — значит, модель адаптировалась к данным и впредь будет выдавать стабильные результаты.
Как понять, что сходимость достигнута
Момент сходимости определяют по нескольким критериям — признакам, которые показывают, что оптимальное значение достигнуто. Вот что это за признаки.
Минимизация функции потерь. Функция потерь, или ошибок, постепенно уменьшается во время обучения. Сходимость достигается, когда алгоритм добился минимального или близкого к минимуму значения функции. Это может быть:
глобальный минимум — самое маленькое и поэтому лучшее из всех возможных значений функции ошибок;
локальный минимум — значение, самое маленькое на определенном промежутке. Достижение локального минимума дает менее оптимальный, но стабильный результат, особенно если речь идет о сложной нелинейной модели.
Замедление улучшений. Во время обучения постоянно изменяется целевая метрика, например функция ошибок или показатель точности. Если она меняется сильно — обучение нужно продолжать. Если же изменение становится совсем незначительным на каждом шаге — значит, момент сходимости достигнут.
Стабилизация параметров. После каждого шага обучения модель обновляет веса — коэффициенты, которые использует при расчетах результата. Если значения этих параметров перестают серьезно меняться между итерациями, это значит, что модель сошлась.
После того как сходимость функции достигнута, обучающий алгоритм останавливается, чтобы избежать переобучения модели.
Может ли модель «не сойтись»
Бывают ситуации, когда сходимости по какой-то причине достичь невозможно. Это называется расходимостью, или дивергенцией. При расходимости значения целевой функции не перестают меняться — потери не достигают минимума.
Если модель расходится, то, сколько бы ее ни обучали, она никогда не повысит точность до достаточного уровня. Обычно расходимость говорит о том, что нужно изменить саму модель, метод или параметры обучения.
Модель может не сойтись по разным причинам. Например:
из-за особенностей данных, на которых ее обучают, — скажем, они не масштабированы или не нормализованы, в них есть выбросы или шумы;
из-за неверно выбранной функции потерь;
из-за неподходящих гиперпараметров модели, например шага обучения — если он слишком большой, модель разойдется.
Часто при обучении моделей используют градиентные методы оптимизации, например градиентный спуск. В этом случае причиной расходимости может стать слишком большой шаг градиента — вектора, который показывает, как быстро меняются значения функции. А если градиент функции потерь равен нулю, модель никогда не сойдется — это означает, что значение не меняется.
Самая сложная ситуация — если алгоритм не сходится из-за архитектурных ошибок. Такое порой случается с глубокими нейронными сетями. Например, расходимость может возникнуть из-за отсутствия батч-нормализации или неподходящей функции активации.
Из-за архитектурных ошибок градиенты функции в ходе обучения могут затухать или взрываться. При затухании градиенты близятся к нулю — и обучение сильно замедляется. А при взрыве градиент резко растет — и дальнейшее обучение становится невозможным.
С расходимостью борются разными способами в зависимости от причины. Чтобы избежать ее, ML-специалист должен:
тщательно подготавливать данные перед обучением;
грамотно подбирать функции потерь в зависимости от поставленной задачи;
пользоваться различными методами оптимизации;
добавлять регуляризацию — дополнительные условия при обновлении весов;
внимательно следить за процессом обучения и обновлением весов.
Тогда, даже если что-то пойдет не так, это быстро заметят и исправят ситуацию.
Что означает медленная сходимость
Расходимость — не единственная возможная проблема. Бывает и так, что алгоритм сходится, но делает это очень медленно. Чтобы достичь оптимальной точки, понадобится огромное количество итераций. То есть очень много времени и вычислительных мощностей.
Отличить медленную сходимость от расходимости можно по графику функции:
если функция меняется всё медленнее, но даже за 100–200 итераций не показывает значимого изменения, — значит, обучение вышло на плато. Нужно или останавливать его, или изменять шаг обучения. Возможно, алгоритм сходится, просто медленно;
если значения функции потерь резко начинают расти и стремиться к бесконечности — это говорит о расхождении алгоритма и о том, что он не сойдется никогда.
Как повысить скорость сходимости
Чем выше скорость конвергенции, тем быстрее модель обучится и начнет давать точные результаты. Так что эта скорость — один из важнейших параметров при обучении.
Чтобы ускорить сходимость, в ML используют несколько способов:
нормализация данных — позволяет уменьшить количество шагов градиента, чтобы найти минимум функции потерь;
модификации алгоритма — например, вместо обычного градиентного спуска часто применяют стохастический, и это может в десятки раз ускорить сходимость;
изменение гиперпараметров — каких именно, зависит от алгоритма и данных. Например, изменять можно темп обучения, размер батча — пакета данных, и так далее.
Чем проще алгоритм, тем быстрее он обучается и достигает сходимости —, но при этом может пострадать точность. Сложные алгоритмы с большим количеством параметров обучаются куда медленнее, но часто дают более качественные результаты.
Краткие выводы
Сходимость в ML — термин, который используют при обучении модели. Сходимость описывает, как изменяется во время обучения какая-либо функция.
Алгоритм сходится, когда функция потерь достигает минимума или близких к нему значений, а параметры и метрики перестают активно меняться.
Если сходимость достигнута — значит, модель дошла до оптимальной точки обучения и процесс можно прекращать.
Бывает так, что алгоритм расходится — не достигает точки сходимости никогда. Подобное бывает из-за неверно подобранных параметров, неподходящих данных, ошибок в архитектуре модели.
Чтобы ускорить сходимость, в ML используют нормализацию данных, модифицируют алгоритмы обучения и подбирают оптимальные значения гиперпараметров.
Разрабатывать модели машинного обучения, в которых «все сходится» можно научиться на совместной магистратуре Skillfactory и Томского государственного университета «Обработка естественного языка (NLP) в лингвистике и IT».