---
title: Оптимизация и функции потерь
questionDates:
  q-transfer-0062: '2026-10-01'
  q-transfer-0063: '2026-10-01'
  q-transfer-0064: '2026-10-01'
seo:
  description: >-
    Тема «Оптимизация и функции потерь» для собеседования Data Scientist. Что
    такое градиент? Если у вас есть выбор между градиентным спуском (GD) и
    стохастическим градиентным спуском (SGD), что лучше сработает?
  title: Оптимизация и функции потерь — Data Scientist
---

[Все темы Data Scientist](/prep/data-scientist)

Подтемы:

- [Градиентный спуск](#q-14bee738d69b812fb32ec785b6aeb0c2)
- [Функции потерь](#q-14bee738d69b81c7a099c849a353b452)
- [Методы оптимизации](#q-14bee738d69b8113ad27fc8f8797d5c6)

## <strong>Что такое градиент?</strong> [#q-14bee738d69b812fb32ec785b6aeb0c2]

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

:::note[Ссылки для изучения]

1. [Градиент и антиградиент: направление локального роста и спуска](https://education.yandex.ru/handbook/ml/article/optimizaciya-v-ml)
2. [Градиентный спуск. ФКН ВШЭ. дистанционные занятия, с 29:15](https://www.youtube.com/watch?v=x0evHCFZjFc&t=1755s)

:::

---

## <strong>Если у вас есть выбор между градиентным спуском</strong> <code>&#40;GD&#41;</code> <strong>и стохастическим градиентным спуском</strong> <code>&#40;SGD&#41;</code><strong>, что лучше сработает?</strong> [#q-14bee738d69b81c997e5e901f2f2380a]

Это зависит от размера данных и времени обучения. Градиентный спуск <code>&#40;GD&#41;</code> обновляет параметры модели по всей обучающей выборке, что может быть медленным на больших наборах данных. Стохастический градиентный спуск <code>&#40;SGD&#41;</code> обновляет параметры по одному случайному экземпляру за раз, что обычно быстрее, но может быть менее стабильным. Таким образом, выбор зависит от компромисса между точностью и скоростью обучения.

:::note[Ссылки для изучения]

1. [Стохастический и обычный градиентный спуск](https://education.yandex.ru/handbook/ml/article/linear-models#stohasticheskij-gradientnyj-spusk)
2. [Стохастический градиентный спуск. ФКН ВШЭ, с 1:13:42](https://www.youtube.com/watch?v=x0evHCFZjFc&t=4422s)

:::

---

## <strong>Как сделать, чтобы при каждом запуске кода, модель, обучаемая при помощи градиентного спуска, сходилась к одной и той же точке?</strong> [#q-14bee738d69b81859868e7c410019486]

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

:::note[Ссылки для изучения]

1. [Воспроизводимость ML: фиксация seed и детерминированные операции](https://habr.com/ru/companies/tochka/articles/902690/)
   :::

---

## <strong>Как делается один шаг градиентного спуска для обновления весов?</strong> [#q-14bee738d69b8149b33eca0d1bae4e2d]

Один шаг градиентного спуска для обновления весов выполняется следующим образом&#58;

1. Рассчитывается градиент функции потерь по отношению к каждому параметру модели.

1. Градиенты умножаются на скорость обучения (learning rate), которая определяет размер шага.

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

:::note[Ссылки для изучения]

1. [Градиентный спуск в ML](https://education.yandex.ru/handbook/ml/article/optimizaciya-v-ml)
2. [Градиентный спуск. ФКН ВШЭ. дистанционные занятия, с 29:15](https://www.youtube.com/watch?v=x0evHCFZjFc&t=1755s)

:::

---

## По каким признакам понять, что learning rate слишком большой? [#q-transfer-0062]

Слишком большой learning rate проявляется резким ростом или сильными осцилляциями train loss, нестабильными градиентами, `NaN` и отсутствием улучшения validation. Оптимизатор перескакивает области низкой loss вместо постепенного спуска. Проверяют кривую обучения, нормы градиентов и короткий LR range test. Warmup помогает в начале обучения, scheduler снижает шаг позже, gradient clipping защищает от отдельных всплесков, но не исправляет постоянно завышенный LR. Сравнение проводят при одинаковых seed и batch size.

:::note[Ссылки для изучения]

1. [Слишком большой learning rate: осцилляции loss, перескок минимума и поиск безопасного шага](https://habr.com/ru/articles/460711/)
2. [Признаки слишком большого learning rate. ФКН ВШЭ, с 58:12](https://www.youtube.com/watch?v=x0evHCFZjFc&t=3492s)

:::

---

## <strong>Что такое кросс-энтропия?</strong> [#q-14bee738d69b81c7a099c849a353b452]

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

:::note[Ссылки для изучения]

1. [Кросс-энтропия и log loss: вероятности классов и функция потерь](https://scikit-learn.ru/stable/modules/model_evaluation.html)
   :::

---

## <strong>Назовите пять функций потерь.</strong> [#q-14bee738d69b8104be44c923869f5245]

Основные функции потерь&#58;

1. <strong>Среднеквадратичная ошибка</strong> <code>&#40;MSE&#41;</code>&#58;
   Используется в задачах регрессии для измерения среднеквадратичной разницы
   между предсказанными и фактическими значениями.

1. <strong>Кросс-энтропия</strong>&#58; Часто применяется в задачах
   классификации для измерения расхождения между фактическими и предсказанными
   вероятностями классов.

1. Hinge loss&#58; Используется для обучения классификаторов с отступом, например линейного SVM.

1. <strong>Абсолютная ошибка</strong> <code>&#40;MAE&#41;</code>&#58; Еще одна
   функция потерь для задач регрессии, измеряющая среднее абсолютное отклонение
   между предсказанными и фактическими значениями.

1. <strong>Хьюбера потеря</strong>&#58; Альтернатива среднеквадратичной ошибке,
   которая менее чувствительна к выбросам в данных, используется также в задачах
   регрессии.

:::note[Ссылки для изучения]

1. [MSE, MAE, Huber и hinge loss в линейных моделях](https://education.yandex.ru/handbook/ml/article/linear-models)
1. [Кросс-энтропия: binary и multiclass log loss](https://scikit-learn.ru/stable/modules/model_evaluation.html)
   :::

---

## <strong>Какие функции потерь для классификации вы знаете?</strong> [#q-14bee738d69b817da663e08852a9d6fd]

Для классификации часто используются следующие функции потерь&#58;

1. <strong>Кросс-энтропия</strong> <code>&#40;Cross&#45;Entropy&#41;</code>&#58;
   Часто используется в задачах бинарной и многоклассовой классификации. Эта
   функция измеряет расхождение между фактическими и предсказанными
   вероятностями классов.

1. <strong>Логарифмическая потеря</strong> <code>&#40;Log Loss&#41;</code>&#58;
   Аналогично кросс-энтропии, используется для оценки вероятностей предсказанных
   классов и часто используется в задачах бинарной и многоклассовой
   классификации.

1. <strong>Hinge Loss</strong>&#58; Обычно используется в задачах обучения
   опорных векторов <code>&#40;SVM&#41;</code> для максимизации зазора между
   классами.

1. <strong>Exponential Loss</strong>&#58; Используется в алгоритмах градиентного
   бустинга для классификации, таких как <code>AdaBoost</code>, для минимизации
   ошибок весовых коэффициентов.

1. <strong>Focal Loss</strong>&#58; Разработана для улучшения обучения моделей в
   задачах с сильным дисбалансом классов, минимизируя потери для хорошо
   классифицированных примеров.

:::note[Ссылки для изучения]

1. [Кросс-энтропия и log loss для вероятностей классов](https://scikit-learn.ru/stable/modules/model_evaluation.html)
1. [Hinge, logistic и exponential loss — лекция К. Воронцова, с.8](https://www.mathnet.ru/PresentFiles/9301/lecture_vorontsov_1.pdf#page=8)
1. [Focal loss: снижение вклада лёгких примеров в RetinaNet](https://deepmachinelearning.ru/docs/Neural-networks/Object-detection/RetinaNet#focal-loss)
   :::

---

## <strong>Какие функции потерь для регрессии вы знаете?</strong> [#q-14bee738d69b81d59825c0ad9ec9970b]

Для задач регрессии часто используются следующие функции потерь&#58;

1. <strong>Среднеквадратичная ошибка</strong> <code>&#40;MSE&#41;</code>&#58;
   Это наиболее распространенная функция потерь для задач регрессии. Она
   измеряет среднеквадратичную разницу между предсказанными и фактическими
   значениями.

1. <strong>Средняя абсолютная ошибка</strong> <code>&#40;MAE&#41;</code>&#58;
   Эта функция потерь измеряет среднее абсолютное отклонение между
   предсказанными и фактическими значениями.

1. <strong>Квантильная потеря</strong> <code>&#40;Quantile Loss&#41;</code>&#58;
   Позволяет оценивать квантили целевой переменной и используется в задачах, где
   важно учитывать не только среднее значение, но и дисперсию.

1. <strong>Хьюберова потеря</strong> <code>&#40;Huber Loss&#41;</code>&#58; Эта
   функция является комбинацией MSE и MAE и более устойчива к выбросам в данных.

1. Средняя квадратичная логарифмическая ошибка (MSLE)&#58; Сравнивает log(1 + y) и log(1 + прогноз) для неотрицательных значений. Она оценивает расхождение в логарифмическом масштабе.

:::note[Ссылки для изучения]

1. [Регрессия: MSE, MAE и Huber loss](https://education.yandex.ru/handbook/ml/article/linear-models)
1. [MSLE и quantile pinball loss: определения и примеры](https://scikit-learn.ru/stable/modules/model_evaluation.html)
   :::

---

## Можно ли использовать MSE для классификации и чем она отличается от кросс-энтропии? [#q-14bee738d69b8110be1dd2351290ccf5]

MSE можно применять к вероятностным прогнозам классификации. В бинарной задаче квадрат разности вероятности и метки 0/1 называется оценкой Брайера. Выбор между ней и кросс-энтропией зависит от цели и свойств оптимизации.

1. Формат вывода&#58; вероятности являются числами, поэтому их можно сравнивать с метками 0/1 через MSE.

1. Оптимизация&#58; MSE после сигмоиды может давать малые градиенты при уверенных ошибочных прогнозах; кросс-энтропия обычно лучше подходит для обучения логистической регрессии.

1. Неотрицательность&#58; MSE всегда неотрицательна, поскольку усредняет квадраты ошибок. Сама функция потерь не ограничивает диапазон выходов модели.

:::note[Ссылки для изучения]

1. [MSE вероятностей в классификации: Brier score и log loss](https://scikit-learn.ru/stable/modules/model_evaluation.html)
   :::

---

## Чем различаются MAE и MAPE и какая метрика понятнее бизнесу? [#q-14bee738d69b811b816cdd91ca6fd7fb]

Среднее абсолютное отклонение <code>&#40;MAE&#41;</code> и средняя абсолютная процентная ошибка <code>&#40;MAPE&#41;</code> обе измеряют среднее отклонение предсказанных значений от фактических, но существует небольшая, но важная разница между ними&#58;

<strong>MAE (Mean Absolute Error)</strong> измеряет среднее абсолютное
отклонение между предсказанными и фактическими значениями. Формула
<code>MAE</code>&#58;

Где <InlineMath tex={"y_i"} /> - фактическое значение, <InlineMath tex={"\\hat{y_i}"} /> - предсказанное значение, а <InlineMath tex={"n"} /> - количество наблюдений.

$$
MAE = \frac{1}{n} \sum^n_{i=1} |y_i - \hat{y_i}|
$$

<strong>MAPE (Mean Absolute Percentage Error)</strong> выражает среднее
абсолютное отклонение в процентах от фактических значений. Формула
<code>MAPE</code>&#58;

$$
MAPE= \frac{100}{n} \sum^n_{i=1} |\frac{y_i-\hat{y_i}}{y_i}|
$$

Разница между ними состоит в том, что <code>MAPE</code> выражается в процентах и показывает относительную ошибку предсказаний по сравнению с фактическими значениями, в то время как <code>MAE</code> показывает абсолютное отклонение в том же масштабе, что и фактические значения.

Относительно того, какая из них более понятна для бизнеса, это зависит от конкретного контекста и того, как компания интерпретирует и использует ошибки в своей деятельности. <code>MAPE</code> может быть более интуитивно понятной метрикой для бизнеса, так как она выражена в процентах и позволяет оценить ошибку относительно размера фактических значений. Однако в некоторых случаях более прямолинейное представление <code>MAE</code> может быть также полезным.

:::note[Ссылки для изучения]

1. [MAE и MAPE: абсолютная ошибка и относительная ошибка прогноза](https://education.yandex.ru/handbook/ml/article/linear-models)
   :::

---

## Как оптимизировать MAE, если она недифференцируема в нуле? [#q-transfer-0063]

MAE дифференцируема везде, кроме нулевой ошибки. Там существует множество субградиентов от -1 до 1, и фреймворк выбирает один из допустимых вариантов, обычно 0. Поэтому SGD и его варианты могут оптимизировать MAE. Практическая проблема шире: градиент почти везде имеет постоянный модуль, из-за чего сходимость около минимума может колебаться. Если нужна гладкость, используют Huber loss: квадратичную около нуля и линейную для больших ошибок.

:::note[Ссылки для изучения]

1. [Субградиент вместо производной: абсолютное значение в нуле и негладкая оптимизация](https://contest.yandex.ru/tracks/ml/online-learning-and-stochastic-optimization/introduction-to-online-learning#subdifferencial-i-subgradientnye-metody)
   :::

---

## Когда использовать weighted BCE и focal loss вместо обычной BCE? [#q-transfer-0064]

Weighted BCE задает большую цену ошибкам редкого или важного класса и полезна, когда важна явная cost-sensitive постановка. Focal loss дополнительно уменьшает вклад уже легких примеров множителем вида `(1-p_t)^gamma`, концентрируя обучение на трудных объектах; `alpha` может балансировать классы. Она особенно популярна при плотном детектировании, где фон доминирует. Обе loss считают по logits численно устойчивой функцией. Веса, `alpha`, `gamma` и порог выбирают по validation с целевой метрикой, потому что loss может ухудшить calibration.

:::note[Ссылки для изучения]

1. [Focal loss: уменьшение вклада лёгких примеров и балансировка классов на примере RetinaNet](https://deepmachinelearning.ru/docs/Neural-networks/Object-detection/RetinaNet#focal-loss)
   :::

---

## <strong>Что такое методы оптимизации в машинном обучении?</strong> [#q-14bee738d69b8113ad27fc8f8797d5c6]

Методы оптимизации в машинном обучении - это алгоритмы, которые используются для настройки параметров моделей с целью минимизации функции потерь. Они определяют способ обновления параметров модели на каждом шаге обучения, направляя его к оптимальным значениям. Примеры методов оптимизации включают градиентный спуск, стохастический градиентный спуск, методы второго порядка и адаптивные методы оптимизации, такие как <code>Adam</code> и <code>RMSProp</code>.

:::note[Ссылки для изучения]

1. [Методы оптимизации ML](https://education.yandex.ru/handbook/ml/article/optimizaciya-v-ml)
   :::

---

## <strong>Как применяют оптимизацию по числам Фибоначчи?</strong> [#q-14bee738d69b81ad88bce9f245d92f42]

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

:::note[Ссылки для изучения]

1. [Метод Фибоначчи для унимодальной функции: §3.1.4](https://pureportal.spbu.ru/files/100739584/_.pdf)
   :::

---

## <strong>Написать формулу кросс-энтропии. Как происходит минимизация ошибки?</strong> [#q-14bee738d69b813db9aec62b7e1bf27a]

Формула кросс-энтропии для бинарной классификации&#58;

<InlineMath
  tex={
    "J(\\theta) = -\\frac{1}{m} \\sum_{i=1}^{m} [y^{(i)} \\log(h_{\\theta}(x^{(i)})) + (1 - y^{(i)}) \\log(1 - h_{\\theta}(x^{(i)}))]"
  }
/>

где&#58;

- <InlineMath tex={"J(\\theta)"} /> - функция потерь (кросс-энтропия),

- <InlineMath tex={"m"} /> - количество примеров в обучающем наборе,

- <InlineMath tex={"y^{(i)}"} /> - истинное значение (0 или 1) целевой
  переменной для <InlineMath tex={"i"} />
  -го примера,

- <InlineMath tex={"h_{\\theta}(x^{(i)})"} /> - предсказанная вероятность
  принадлежности к классу 1 для <InlineMath tex={"i"} />
  -го примера при параметрах модели <InlineMath tex={"\\theta"} />.

Минимизация ошибки (и, соответственно, минимизация функции потерь) происходит с помощью методов оптимизации, таких как градиентный спуск. Модель обновляет свои параметры <InlineMath tex={"\\theta"} /> в направлении, противоположном градиенту функции потерь, с целью нахождения минимума функции потерь. Этот процесс повторяется до тех пор, пока не будет достигнута сходимость или другое условие останова.

:::note[Ссылки для изучения]

1. [Кросс-энтропия истинного и предсказанного распределений](https://education.yandex.ru/handbook/ml/article/entropiya-i-semejstvo-eksponencialnyh-raspredelenij)
1. [Минимизация функции потерь градиентным спуском](https://education.yandex.ru/handbook/ml/article/optimizaciya-v-ml)
   :::
