---
title: Обучение нейронных сетей
questionDates:
  q-transfer-0059: '2026-10-01'
seo:
  description: >-
    Тема «Обучение нейронных сетей» для собеседования Data Scientist. Что такое
    перцептрон? Как работает Back Propagation?
  title: Обучение нейронных сетей — Data Scientist
---

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

Подтемы:

- [Перцептрон](#q-14bee738d69b81cbb2eac28b3438e17c)
- [Back Propagation](#q-14bee738d69b810c90b4ef9a122e58f7)
- [Функция активации](#q-14bee738d69b81d19a86e702f91faa5e)
- [ReLU](#q-14bee738d69b81a6aff1f63b3c22ad40)
- [Оптимизаторы](#q-14bee738d69b81e99702c64c2c98337c)
- [Batch-Size](#q-14bee738d69b816e8118e9350c555fa4)
- [Методы регуляризации](#q-14bee738d69b81d5a546c55fabb95e5c)

## <strong>Что такое перцептрон?</strong> [#q-14bee738d69b81cbb2eac28b3438e17c]

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

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

1. [Нейронные сети. Перцептрон](https://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B5%D1%82%D0%B8,_%D0%BF%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD)
   :::

---

## <strong>Как работает Back Propagation?</strong> [#q-14bee738d69b810c90b4ef9a122e58f7]

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

1. Прямое распространение&#58; Входные данные проходят через нейронную сеть, и каждый нейрон вычисляет свой выход на основе текущих весовых коэффициентов и функции активации.

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

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

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

1. [Backpropagation: правило цепочки, градиенты по слоям и обновление весов — Michael Nielsen](https://habr.com/ru/articles/457980/)
2. [Обратное распространение ошибки. machine learrrning, с 0:06](https://www.youtube.com/watch?v=EuhoXsuu8SQ&t=6s)

:::

---

## Зачем нейросети функции активации? [#q-14bee738d69b81d19a86e702f91faa5e]

<span id="q-14bee738d69b816ea7d2ea1010e8f53c"></span>

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

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

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

1. [Зачем нелинейность между слоями: композиция линейных функций при identity-активации](https://deepmachinelearning.ru/docs/Neural-networks/MLP/Activation-functions#тождественная-функция-активации-identity)
   :::

---

## <strong>Что такое функция активации?</strong> [#q-14bee738d69b8134be1eda8e757566d5]

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

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

1. [Первое знакомство с полносвязными нейронными сетями](https://education.yandex.ru/handbook/ml/article/pervoe-znakomstvo-s-polnosvyaznymi-nejrosetyami#populyarnye-funkczii-aktivaczii)
   :::

---

## <strong>Какие вы знаете функции активации?</strong> [#q-14bee738d69b81c9a0e0ce0b8a66062f]

Некоторые из наиболее популярных функций активации включают в себя&#58;

1. <code>ReLU</code> (Rectified Linear Activation)&#58; Простая и широко
   используемая функция, которая возвращает ноль для всех отрицательных входов и
   сам вход для всех неотрицательных входов.

1. <code>Sigmoid</code>&#58; Функция, которая преобразует вход в диапазоне от 0
   до 1, полезная для бинарной классификации.

1. <code>Tanh</code> (гиперболический тангенс)&#58; Похожа на сигмоид, но
   преобразует вход в диапазоне от -1 до 1, что может помочь в центрировании
   данных.

1. <code>Leaky ReLU</code>&#58; Вариант ReLU, который позволяет небольшим
   отрицательным входам пропускать небольшой сигнал, чтобы избежать "мертвых"
   нейронов.

1. <code>Softmax</code>&#58; Функция активации, используемая для многоклассовой
   классификации, которая преобразует выходы в вероятности, сумма которых равна
   1.

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

1. [Первое знакомство с полносвязными нейронными сетями](https://education.yandex.ru/handbook/ml/article/pervoe-znakomstvo-s-polnosvyaznymi-nejrosetyami#populyarnye-funkczii-aktivaczii)
   :::

---

## <strong>Приведите формулы функции активации.</strong> [#q-14bee738d69b8159bfedfbe12018f1c4]

Формулы некоторых из наиболее распостраненных функций активации&#58;

- <code>ReLU</code>

$$
f(x) = max(0, x)
$$

- <code>Sigmoid</code>

$$
f(x) = \frac{1}{1+e^{-x}}
$$

- <code>Tanh</code>

$$
f(x) = tanh(x) = \frac{e^x-e^{-x}}{e^x + e^{-x}}
$$

- <code>Leaky ReLU</code>

$$
\begin{equation*}
f(x) =
\left\{
\begin{array}{lr}
x & \text{ if x > 0 } \\
\alpha x & \text{ otherwise }
\end{array}
\right.
\end{equation*}
$$

- <code>Softmax</code> (для многоклассовой классификации)

$$
f(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}
$$

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

1. [Первое знакомство с полносвязными нейронными сетями](https://education.yandex.ru/handbook/ml/article/pervoe-znakomstvo-s-polnosvyaznymi-nejrosetyami#populyarnye-funkczii-aktivaczii)
   :::

---

## Почему несколько линейных слоев без нелинейности равны одному? [#q-transfer-0059]

Линейный слой с bias выполняет аффинное преобразование `Wx + b`. Композиция двух таких слоев снова аффинна: `W2(W1x + b1) + b2 = W'x + b'`. Поэтому сколько бы линейных слоев без нелинейности ни поставить, граница останется линейной, и кубическую зависимость они не представят. Промежуточная размерность может ограничить ранг преобразования, но не добавит нелинейность. Нужна нелинейная activation, например ReLU, tanh или GELU.

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

1. [Композиция линейных функций и identity-активация: почему глубина не добавляет нелинейность](https://deepmachinelearning.ru/docs/Neural-networks/MLP/Activation-functions#тождественная-функция-активации-identity)
   :::

---

## <strong>Формула ReLU.</strong> [#q-14bee738d69b81a6aff1f63b3c22ad40]

Формула функции активации <code>ReLU &#40;Rectified Linear Unit&#41;</code> выглядит следующим образом&#58;

$$
f(x) = \max(0, x)
$$

Это означает, что функция <code>ReLU</code> возвращает <InlineMath tex={"x"} />, если <InlineMath tex={"x"} /> положительно, и возвращает 0, если <InlineMath tex={"x"} /> отрицательно или равно нулю.

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

1. [Слои активации в нейронных сетях](https://habr.com/ru/articles/727506/)
   :::

---

## <strong>Какие есть оптимизаторы в нейронных сетях?</strong> [#q-14bee738d69b81e99702c64c2c98337c]

В нейронных сетях оптимизаторы используются для обновления весов сети на основе данных и функции потерь. Вот несколько наиболее распространенных оптимизаторов&#58;

1. <code>SGD &#40;Stochastic Gradient Descent&#41;</code>&#58; Классический
   метод, который обновляет параметры в направлении антиградиента текущей оценки
   градиента функции потерь.

1. <code>Momentum</code>&#58; Вариант SGD, который добавляет понятие инерции в
   обновления параметров, тем самым ускоряя сходимость.

1. <code>Nesterov Accelerated Gradient &#40;NAG&#41;</code>&#58;
   Усовершенствование Momentum, где корректировка параметров происходит более
   предсказуемо.

1. <code>Adagrad</code>&#58; Адаптирует скорость обучения к параметрам,
   увеличивая эффективность для разреженных данных.

1. <code>RMSprop</code>&#58; Изменяет метод Adagrad для борьбы с его
   агрессивным, монотонно уменьшающимся скоростям обучения.

1. <code>Adam &#40;Adaptive Moment Estimation&#41;</code>&#58; Сочетает идеи
   Momentum и RMSprop, поддерживая оценки первого и второго моментов градиента.

1. <code>Adamax</code>&#58; Вариант Adam, основанный на норме L-infinity.

1. <code>
     Nadam &#40;Nesterov&#45;accelerated Adaptive Moment Estimation&#41;
   </code>
   &#58; Интегрирует Nesterov Momentum в Adam.

Эти оптимизаторы позволяют настроить процесс обучения, улучшить скорость сходимости и повысить точность модели на разнообразных задачах.

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

1. [SGD, momentum, Nesterov, AdaGrad, RMSProp и Adam](https://education.yandex.ru/handbook/ml/article/optimizaciya-v-ml)
   :::

---

## <strong>Как определить размер пакета</strong> <code>&#40;batch_size&#41;</code><strong>?</strong> [#q-14bee738d69b816e8118e9350c555fa4]

Размер батча выбирают с учётом памяти, скорости обработки и качества на валидации. Большие батчи часто лучше загружают оборудование и уменьшают шум градиента, но требуют настройки learning rate. Малые экономят память и дают больше обновлений за эпоху; их преимущество по качеству не гарантировано.

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

1. [Выбор размера мини-батча: скорость обучения, learning rate и валидация](https://habr.com/ru/articles/460711/)
1. [Мини-батчи SGD: память и число обновлений за эпоху](https://education.yandex.ru/handbook/ml/article/linear-models)
   :::

---

## <strong>Как изменяются свойства пакета в зависимости от размера пакета</strong> <code>&#40;batch_size&#41;</code><strong>?</strong> [#q-14bee738d69b816f97b7df3c4cd60fce]

Большой батч даёт менее шумную оценку градиента, но требует больше памяти и уменьшает число обновлений за эпоху. Малый батч обычно даёт более шумный градиент; это иногда помогает обобщению, но не гарантирует стабильность или лучшее качество. Размер выбирают вместе с learning rate по валидации и замерам скорости.

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

1. [SGD: размер батча, шум градиента и дисперсия оценки](https://education.yandex.ru/handbook/ml/article/optimizaciya-v-ml)
1. [Мини-батчи: память, скорость и количество обновлений](https://education.yandex.ru/handbook/ml/article/linear-models)
   :::

---

## <strong>Какие методы регуляризации существуют для нейросетей?</strong> [#q-14bee738d69b81d5a546c55fabb95e5c]

Для регуляризации нейронных сетей существуют следующие методы&#58;

1. <code>L1</code> и <code>L2</code> регуляризация&#58; Добавление штрафа на
   веса в функцию потерь для сокращения их значений и предотвращения
   переобучения.

1. <code>Dropout</code>&#58; Случайное исключение некоторых нейронов во время
   обучения для уменьшения зависимости между нейронами и предотвращения
   переобучения.

1. <code>Early stopping</code>&#58; Остановка обучения, когда производительность
   на валидационном наборе данных перестает улучшаться, чтобы избежать
   переобучения.

1. <code>Batch Normalization</code>&#58; Нормализация активаций между слоями для
   ускорения обучения и уменьшения переобучения.

Эти методы помогают сделать нейронные сети более устойчивыми к переобучению и улучшить их обобщающую способность.

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

1. [Тонкости обучения нейросети](https://education.yandex.ru/handbook/ml/article/tonkosti-obucheniya)
   :::

---

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

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

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

1. [Тонкости обучения нейросети](https://education.yandex.ru/handbook/ml/article/tonkosti-obucheniya)
   :::
