Линейный слой (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.
