Интуитивное понимание градиентного спуска

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

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

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

Ключевые этапы процесса машинного обучения:

1. Соберите и подготовьте данные

2. Предоставьте данные модели машинного обучения

3. Протестируйте модель, чтобы увидеть, насколько хорошо она работает

4. Измените параметры модели, чтобы повысить производительность.

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

Определение Википедии:Градиентный спуск — это первопорядковый итеративный оптимизационный алгоритм для нахождения локального минимума функции. Градиент спуск также известен как самый крутой спуск.

Ниже приведены вопросы, на которые нам нужно ответить, чтобы понять роль градиентного спуска в любом алгоритме машинного обучения:

1. Какую функцию нам нужно минимизировать? (т.е. найти локальный минимум)

2. Зачем использовать производные?

3. Как интерпретировать результат дифференцирования?

4. Что подразумевается под самым крутым спуском и почему мы хотим спускаться? Что подразумевается под направлением?

Чтобы понять это, давайте возьмем гипотетический пример:

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

Интуитивно легко понять, что если рост человека больше 70, то размер будет L, а если меньше 70, то будет M. Проблема возникает, если количество входных переменных становится больше , например, у нас может быть 100 входных переменных (высота и т. д.), которые влияют на вывод (размер), в таких случаях решить эту проблему интуитивно будет невозможно. Кроме того, невозможно запрограммировать машину для определения результата на основе входных значений, потому что мы не знаем отношения между входными и выходными переменными. Здесь на помощь приходят методы машинного обучения.

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

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

Математическая формула может использоваться для определения взаимосвязи между входными данными и выходными данными.

Граница решения задается математическим уравнением, т.е.

Для дальнейшего упрощения у нас может быть функция, которая будет давать «0», если размер «L», и «1», если категория «M».

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

Здесь задача состоит в том, чтобы определить правильные значения a и b, которые будут давать правильный результат для неизвестного ввода. , например если мы введем в модель высоту 70 дюймов, она должна правильно предсказать вывод как «L».

Теперь, когда мы выбрали модель, следующим шагом будет ее обучение.

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

1. Начните с нескольких случайных значений a и b.

2. Убедитесь, что при использовании этих значений a и b модель может правильно классифицировать (на основе выходных в тренировочных данных)

3. В случае ошибки измените значения a и b.

4. Перейдите к шагу 2 и повторите шаги 2 и 3, пока не добьетесь правильной классификации.

Как измерить ошибку?

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

Целью любого метода машинного обучения является минимизация функции потерь.

Это ответ на вопрос №1 (Какую функцию нам нужно минимизировать? (Найти локальный минимум)

Например, для начальных случайных значений параметров a и b для входных 72 дюймов алгоритм выдает на выходе 1, но правильный выход должен быть 0. Это означает, что есть ошибка и нам нужно изменить значения a и b. Это означает, что после первой итерации функция потерь не минимальна.

Как обновить значения a и b?

Нам нужно знать влияние изменения значений a и b на функцию потерь. Прогнозируемый результат определяется f(ax+b).

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

Здесь будет полезно вычислить производную функции потерь.

Определение производных (дифференциация) в «Википедии»:

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

Функция здесь — это функция потерь, а аргументы — это параметры a и b.

Нам нужно понять, будет ли увеличение/уменьшение каждого из a и b увеличивать или уменьшать функцию потерь. Производные помогут нам в этом разобраться.

Итак, следующим шагом будет дифференцирование функции потерь по отношению к a и b.

Зачем использовать производные? Как интерпретировать ценность этой дифференциации?

Положительное значение производной показывает, что увеличение значения a, увеличивает значение функции потерь и уменьшение значения a уменьшает функцию потерь. Поэтому нам нужно уменьшить значение a

Отрицательное значение показывает, что функция потерь будет уменьшаться с увеличением значения a. Поэтому в этом случае нам нужно увеличить a, чтобы минимизировать функцию потерь.

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

Что подразумевается под самым крутым спуском и почему мы хотим спускаться?

Пока ясно, что дифференцирование функции потерь по a или b показывает, увеличивается ли функция потерь/ уменьшается при изменении значения a или b. Знак производной функции потерь по a или b определяет, будет ли функция потерь увеличиваться или уменьшаться при изменении значения а или б

Градиентный спуск часто ассоциируется со спуском с холма в направлении наиболее крутого спуска. Как связать этот процесс вычисления производных функции потерь с процессом спуска с горы?

Функция потерь здесь может быть визуализирована в трех измерениях с a и b в качестве осей x и y соответственно, а функция потерь как ось z.

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

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

Сколько существует возможных направлений? Другими словами, сокращаем ли мы a и b одинаково?

Предположим, мы знаем, что функция потерь будет уменьшаться при уменьшении как a, так и b. Направление здесь является синонимом процесса уменьшения значения a и b, чтобы функция потерь стала меньше по сравнению с текущим значением.

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

Другая интерпретация производных:

Это означает, что если производная функции потерь по a в 3 раза больше производной функции потерь по b, то функция потерь уменьшится в 3 раза при изменении aс такой же суммой изменений в b. Это означает, что для уменьшения функции потерь, если мы уменьшим a на 3 единицы, тогда b уменьшится на 1 единицу. Это направление спуска, определяемое производными, является самым крутым.

Вывод:

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