TGViewer
Data Science | Вопросы собесов Data Science | Вопросы собесов @easy_ds · 4.89K subscribers
Post #2553 360
🤔 Что такое градиентный спуск?

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

🚩Как это работает

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

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

🟠Обновление параметров
На каждом шаге параметры модели (например, веса в линейной регрессии) корректируются в направлении, противоположном градиенту, что осуществляется по формуле:

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

🚩Вариации

🟠Стандартный градиентный спуск (Batch Gradient Descent)
Градиент вычисляется на основе всех обучающих данных на каждом шаге, что обеспечивает точное направление к минимуму, но может быть вычислительно дорогостоящим на больших данных.

🟠Стохастический градиентный спуск (Stochastic Gradient Descent, SGD)
Градиент вычисляется на основе одного случайно выбранного примера данных на каждом шаге, что делает процесс более быстрым, но увеличивает стохастичность движения к минимуму.

🟠Мини-пакетный градиентный спуск (Mini-batch Gradient Descent)
Компромисс между двумя предыдущими подходами, градиент вычисляется для небольшого подмножества данных (мини-пакета).

import numpy as np

def gradient_descent(x, y, lr=0.01, epochs=100):
m, b = 0.1, 0.1 # начальная инициализация параметров
n = len(x) # количество данных
for _ in range(epochs):
f = y - (m*x + b)
# Обновление m и b
m -= lr * (-2 * x.dot(f).sum() / n)
b -= lr * (-2 * f.sum() / n)
return m, b

# Демонстрация на простых данных
x = np.array([1,

2, 3, 4, 5])
y = np.array([5, 7, 9, 11, 13])
m, b = gradient_descent(x, y)
print("Наклон m:", m, "Пересечение b:", b)


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_ds
  1. Oct 12, 2026🤔 Как происходит детекция без anchor box-ов? Обнаружение объектов без использования ancho…
  2. Oct 12, 2026Post #2701
  3. Oct 11, 2026🤔 Что такое декоратор? Это функция, модифицирующая или расширяющая поведение другой функц…
  4. Oct 11, 2026Post #2699
  5. Oct 11, 2026🤔 Как валидировать временные ряды ? Валидация временных рядов требует специальных подходо…
  6. Oct 10, 2026Post #2697
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →