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

Модели машинного обучения просто фантастичны; они могут распознавать объекты на видео; они могут автоматически создавать подписи к изображениям и точно классифицировать изображения кошек и собак (иногда).

Эта статья предоставит поверхностное понимание того, что происходит под капотом моделей машинного обучения. В частности, мы будем изучать «базовые алгоритмы», которые позволяют этим моделям машинного обучения обучаться.

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

  • Алгоритм оптимизации: алгоритм, который выполняется определенное количество раз и используется для поиска оптимальных решений проблем. С математической точки зрения эти «проблемы» называются функциями.
  • Градиентный спуск: этот алгоритм оптимизации используется для поиска значений, уменьшающих функцию стоимости. Это делается путем вычисления значения градиента, которое используется для выбора значений на каждом шаге, на котором находится локальный минимум функции стоимости. Отрицательное значение градиента используется для нахождения локального минимума.
  • Функция затрат: это метод количественной оценки «эффективности» модели машинного обучения. Количественная оценка - это выход (стоимость), основанный на наборе входных данных, которые называются значениями параметров. Значения параметров используются для оценки прогноза, а «стоимость» - это разница между прогнозом и фактическими значениями.
  • Глобальный минимум: это наименьшие значения параметров, которые лежат в пределах всего домена функции стоимости. Вы можете встретить локальный минимум, который относится к наименьшим значениям параметров, лежащих в заданном диапазоне функции стоимости.
  • Конвергенция: описывает понятие движения к оптимальным значениям параметров или глобальному минимуму при использовании в контексте машинного обучения.

Внизу статьи есть ссылка на некоторые стандартные термины машинного обучения и их определения. Думайте об этом как о рождественском подарке 😊.

В этой статье мы рассмотрим алгоритм оптимизации Градиентный спуск.

Градиентный спуск

Градиентный спуск - очень распространенный алгоритм оптимизации и, скорее всего, первый алгоритм оптимизации, с которым знакомятся многие инженеры по машинному обучению и специалисты по данным.

Нарисуем картину. У нас есть функция стоимости, и нам нужно найти оптимальное решение для ее решения. Здесь идет градиентный спуск, алгоритм, который работает, изменяя значения параметров, которые находятся в модели, и все с целью минимизировать функцию стоимости. Пример функции стоимости - Среднеквадратичная ошибка.

Внутренняя функциональность градиентного спуска работает путем нахождения направления к локальному минимуму на основе вычисленного градиента, полученного из функции ошибок по отношению к параметрам в конкретной точке данных.

Это может помочь понять градиентный спуск с некоторыми изображениями и визуализацией.

Давайте воспользуемся графиком, который содержит кривую в форме чаши и шар, расположенный в верхнем левом углу кривой. Мяч представляет собой определенную точку (значение) в пространстве параметров, которое изначально выбирается случайным образом, а кривая представляет значения затрат, нанесенные на график в зависимости от диапазона значений параметров. Цель состоит в том, чтобы достичь значения параметра, обеспечивающего наименьшую стоимость.

По оси X графика находится значение, представляющее стоимость, а по оси Y - значение, обозначенное «X», которое представляет диапазон значений параметров, которые мы используем для решения функции стоимости.

Минимум (единственное число) / минимум (множественное число) - это точка в пределах наклона, где существует оптимальное значение, минимизирующее функцию стоимости, а градиентный спуск - это алгоритм, который направляет наш мяч к минимуму на нескольких шагах (итерациях).

Чтобы решить функцию стоимости, мы ищем самую низкую точку кривой, и это точка, в которой градиент равен нулю или близок к нулю.

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

Пакетный градиентный спуск

Мы понимаем, как работает градиентный спуск, и теперь можем применить его к нашим обучающим данным. Применение алгоритма градиентного спуска к обучающим данным имеет различные формы. Одна из форм называется Пакетный градиентный спуск (BGD).

На изображении выше мы делаем шаги к локальному минимуму. В BGD мы фактически используем все обучающие данные, которые есть в нашем распоряжении, чтобы решить, в каком направлении и насколько мы приближаемся к минимуму. Мы используем все наши обучающие данные на каждом этапе.

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

Хотя BGD не является эффективным с точки зрения памяти, как вы понимаете, нам нужны все наши наборы данных, доступные в памяти при обучении модели.

Стохастический градиентный спуск

С другой стороны медали для BGD, у нас есть Стохастический градиентный спуск (SGD).

В отличие от перебора всех данных в нашем обучающем наборе и последующего шага к локальному минимуму, SGD работает, фактически выбирая одну точку данных из обучающего набора и вычисляя градиент на основе этой единственной точки данных.

Вероятно, вы можете сказать, что между BGD и SGD SGD является более быстрым алгоритмом, поскольку вы вычисляете градиент на основе одного экземпляра данных, а не всего набора данных, но с какой ценой.

Обновления, сделанные в пространстве параметров во время градиентного спуска, могут быть шумными при использовании SGD. Шумовая характеристика SGD является результатом его случайного характера, который возникает при выборе точек данных из обучающего набора для вычисления градиентов на каждом шаге.

Чтобы приспособиться к шумовой природе SGD и гарантировать, что мы достигли оптимального значения параметра, мы должны повторить обучающие данные определенное количество раз и убедиться, что в начале процесса градиентного спуска обучающие данные перетасовываются.

Шум приводит к неоднозначным значениям параметров для решения функции стоимости, хотя при достаточном времени SGD приближается к локальному минимуму. Шумность и случайный характер SGD также полезны. Это полезно, когда алгоритм «застревает» в локальном минимуме, который не является глобальным минимумом.

По сравнению с BGD, SGD имеет преимущество в обходе локальных минимумов и обнаружении глобального минимума из-за его случайного и неустойчивого характера при назначении значений параметров на каждом шаге.

Но значения параметра BGD ближе к глобальному минимуму и оптимальному по сравнению с SGD. Когда приходится выбирать между обоими вариантами алгоритмов градиентного спуска, возникает компромисс между скоростью и оптимальностью.

Мини-пакетный градиентный спуск

Как насчет подхода, который использует хорошие характеристики как SGD, так и BGD.

Mini Batch Gradient Descent вычисляет градиент на основе случайно выбранных данных в обучающем наборе точно так же, как SGD, но не включает весь набор данных при вычислении градиентов, так что это тоже не совсем BGD. Можно сказать, что это гибрид.

Mini Batch GD использует небольшое количество данных при вычислении градиентов; по сравнению с BGD он быстрее, но по сравнению с SGD все еще медленнее.

Преимущество Mini Batch GD перед SGD заключается в уменьшении шума в пространстве параметров. Это означает, что использование Mini Batch GD означает, что оптимальные значения параметров более достижимы.

Уф, это было не так уж и плохо, и если двигаться дальше, вы можете поискать в Интернете ресурсы по реализации кода для каждого из алгоритмов.

Я должен опубликовать статью среднего размера, описывающую, как реализовать некоторые из алгоритмов градиентного спуска, упомянутых в этой статье в ближайшее время.

Подпишитесь на меня, чтобы увидеть больше похожих статей.

И, как и было обещано, ниже приведена ссылка на определения некоторых распространенных терминов машинного обучения.