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

Обещаю…. Приведенное выше определение - единственное место, где вы собираетесь увидеть жаргоны. Фактически, цель этого сообщения - помочь вам понять приведенное выше определение, если нет полностью, по крайней мере, чтобы понять его суть.

Если вы закончили с этим сообщением, вы в основном пытаетесь понять, как эта концепция связана с машинным обучением (ML), если нет, тем не менее, этот пост собираюсь объяснить, что такое градиентный спуск. Что ж, градиентный спуск - это идея, которая лежит в основе любого алгоритма обучения / оптимизации. Но я предпочитаю объяснять градиентный спуск независимо от того, как он используется в машинном обучении, а позже соединяю его понимание с машинным обучением.

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

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

Давайте попробуем подойти к этому с помощью простого математического уравнения f (x) = x²

Когда нанесены указанные выше значения, мы получим следующий график

Если мы рассмотрим любую точку на этой кривой f (x²), это будет (x, f (x²)), это означает, что для это конкретное значение x, функция f (x²) возвращает соответствующее значение оси y.

Например: (5, 25) он говорит, что для значения 5 функция возвращает 25

Теперь, если бы нам нужно было вычислить скорость изменения функции f (x²) по отношению к входному x (то есть, как функция изменилась при изменении ввода), формула будет такой:

(новое_значение_функции - значение_функции) / (новое_значение_x -x)

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

Производная от равна 2x. Перечислим значения производных для каждого значения x.

Вычислим скорость изменения функции в (5, 25), допустим, она изменилась на (6, 36), тогда,

(36-25) / (6-5) = 11 = ~ 10 (приблизительно), который является не чем иным, как производной функции в (5, 25)

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

Давайте рассмотрим (4, 16) и скажем, x изменилось с 4 на 6, тогда

изменение x = (6–4) = 2

скорость изменения функции или производной при x = 8

f (x²) = 16, согласно нашим рассуждениям, значение f (x²) при x = 6 должно быть

(f (x²) + (change_in_x * производная функции в точке x))

= (16 + (2*8))

= 32 = ~ (приблизительно) 36, которая является производной при x = 6

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

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

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

Теперь давайте вернемся к примеру, где вы представляли себя альпинистом, мечтающим достичь самой нижней точки горы, скажем, вы были в точке (5, 25), производная точки говорит, если вы немного увеличьте x, я увеличу функцию в 10 раз до изменения x,, но если ваше планирование ухудшится, было бы разумно уменьшить Икс. Это не что иное, как градиентный спуск. Выяснение того, следует ли увеличивать или уменьшать значения входных данных функции, независимо от каждого из входов, чтобы достичь минимума функции, - это градиентный спуск, else для достижения максимума функции - это градиентный подъем.

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

Я предполагаю, что определение жаргонов сейчас будет звонко!