По каким параметрам минимизируется функция потерь?

«По каким параметрам минимизируется функция потерь?» — вопрос из категории Метрики и функции потерь, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функция потерь минимизируется по обучаемым параметрам модели (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), но суть остается той же: итеративное обновление параметров модели для уменьшения функции потерь.