Ответ
Функция потерь минимизируется по обучаемым параметрам модели (weights, biases), которые напрямую влияют на ее предсказания. Цель оптимизации — найти такие значения этих параметров, которые минимизируют ошибку на обучающих данных.
Конкретные примеры:
- Линейная/Логистическая регрессия: Минимизируются коэффициенты (
w, веса) и свободный член (b, смещение). - Нейронная сеть: Минимизируются веса и смещения всех слоев (полносвязных, сверточных и т.д.).
- Деревья решений (включая ансамбли): Параметрами являются условия разбиения в узлах (пороговые значения признаков).
Процесс минимизации (на примере градиентного спуска для линейной модели):
import numpy as np
# Данные
X = np.array([[1, 2], [2, 3], [3, 4]]) # 3 samples, 2 features
y = np.array([3, 5, 7])
# Инициализация параметров (2 веса + смещение)
w = np.zeros(X.shape[1]) # [0., 0.]
b = 0.0
learning_rate = 0.01
# Функция потерь - MSE
for epoch in range(100):
# Прямой проход: предсказание
y_pred = X.dot(w) + b # y_pred = w1*x1 + w2*x2 + b
# Вычисление градиентов (производные MSE по параметрам)
error = y_pred - y
dw = (2 / len(y)) * X.T.dot(error) # Градиент по весам
db = (2 / len(y)) * error.sum() # Градиент по смещению
# Обновление параметров (шаг в направлении, противоположном градиенту)
w -= learning_rate * dw
b -= learning_rate * db
# Текущая ошибка
mse = np.mean(error**2)
if epoch % 20 == 0:
print(f"Epoch {epoch}: MSE = {mse:.4f}, w = {w}, b = {b:.4f}")
В современных фреймворках (PyTorch, TensorFlow) этот процесс автоматизирован через autograd и оптимизаторы (torch.optim.SGD, Adam), но суть остается той же: итеративное обновление параметров модели для уменьшения функции потерь.