Линейный слой (Linear Layer)

Что такое Линейный слой (Linear Layer)?

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

Линейный слой (также известный как полносвязный, или dense layer) — один из базовых строительных блоков в нейронных сетях. Его работа сводится к следующей математической операции:

$$ y = Wx + b, $$

где:

  • $x$ — входной вектор (данные, поступающие в слой);
  • $W$ — матрица весов (параметры, которые модель настраивает в процессе обучения);
  • $b$ — вектор смещений (bias);
  • $y$ — выходной вектор (результат преобразования).

Представьте, что линейный слой — это кухонный комбайн, который берёт набор ингредиентов ($x$), применяет к ним фиксированный набор операций (умножение на $W$ и добавление $b$) и выдаёт новый продукт ($y$). Например, вы кладёте в комбайн овощи, а на выходе получаете овощной суп — ингредиенты изменились, но без «творческой» обработки (нелинейности), только за счёт механического смешивания и взвешивания.

Исторический контекст

Линейные слои — одни из первых элементов, использованных в искусственных нейронных сетях. Они лежат в основе перцептрона, предложенного Фрэнком Розенблаттом в 1958 году. Хотя перцептрон был довольно простой моделью, именно он заложил основы для дальнейшего развития многослойных нейронных сетей. В современных архитектурах линейные слои часто комбинируются с нелинейными функциями активации (например, ReLU), что позволяет моделям обучаться более сложным зависимостям.

Смежные понятия

  • Свёрточный слой (convolutional layer) — в отличие от линейного, применяет операцию свёртки, что позволяет эффективно обрабатывать пространственные данные (изображения). Свёрточные слои сохраняют топологию входных данных, тогда как линейные «сплющивают» их в вектор.
  • Рекуррентный слой (recurrent layer) — предназначен для работы с последовательными данными (текст, временные ряды). В отличие от линейного слоя, учитывает предыдущие входные данные через скрытые состояния.
  • Нормализационный слой (например, BatchNorm) — не выполняет линейное преобразование, а нормализует входные данные для ускорения обучения.

Примеры использования

  • В полносвязных нейронных сетях (Fully Connected Networks, FCN) линейные слои составляют основу архитектуры.
  • В свёрточных нейронных сетях (CNN) линейные слои часто используются на финальных этапах для классификации (например, после свёрточных и пулинговых слоёв).
  • В трансформерах (Transformer) линейные слои применяются в механизмах внимания (attention) и в полносвязных блоках (feed-forward networks).

Популярные реализации

  • В библиотеке PyTorch линейный слой реализуется через класс torch.nn.Linear.
  • В TensorFlow/Keras — через tf.keras.layers.Dense.

Авторизация