Полносвязный слой П

Слой нейросети, в котором каждый нейрон соединён со всеми нейронами предыдущего слоя. Используется для финальной классификации и объединения признаков.

English Fully-Connected Layer, Dense Layer, FC Layer
Синонимы FC-слой, плотный слой, Dense, линейный слой, полносвязная сеть
Полносвязный слой (Fully-Connected, FC или Dense) — это тип слоя нейронной сети, в котором каждый нейрон получает сигнал от всех нейронов предыдущего слоя. В отличие от свёрточных слоёв, где нейрон связан лишь с локальной областью входа, полносвязный слой устанавливает глобальные связи между признаками.

Как это работает

Математически операция полносвязного слоя описывается формулой: y = f(Wx + b), где x — входной вектор, W — матрица весов, b — вектор смещения, f — функция активации. Каждый элемент выходного вектора вычисляется как взвешенная сумма всех входных сигналов плюс сдвиг. Размер матрицы весов определяется как N × M, где N — число входных нейронов, M — число выходных.

Если слой содержит 784 входа и 256 нейронов, число обучаемых параметров составит 784 × 256 + 256 = 200 960. Именно из-за плотности связей FC-слои содержат основную массу параметров модели.

Зачем это нужно

В архитектурах свёрточных сетей FC-слои ставятся в конце для финальной классификации. После того как свёрточные слои извлекли локальные признаки (края, текстуры, формы), полносвязные слои объединяют их в глобальное представление и выдают вероятности классов. В сетях для табличных данных FC-слои могут использоваться как основные, поскольку каждый признак здесь независим.

Примеры

  • VGG16: первый полносвязный слой имеет 4096 нейронов, на вход получает 25 088 значений (7×7×512). Число весов — 4096 × 25 088 = свыше 100 млн параметров.
  • Простая CNN для MNIST: после свёрточных слоёв идёт FC-слой на 256 нейронов, затем выходной слой на 10 классов (цифры 0–9) с softmax.
  • Классификация трёх классов: входной FC-слой на 128 нейронов с ReLU, dropout 0.5, выходной FC-слой на 3 нейрона с softmax.

Формула или метрика

Для одного нейрона: yᵢ = f(Σⱼ wᵢⱼxⱼ + bᵢ).

В матричном виде: y = f(Wx + b).

Число параметров слоя: N × M + M, где N — входная размерность, M — число нейронов слоя.

Типичные ошибки

  • Ставить FC-слой после свёрточного без Flatten: перед подачей в полносвязный слой многомерный тензор нужно развернуть в одномерный вектор.
  • Использовать FC-слои для обработки изображений без свёрток: полносвязная сеть на полном изображении 224×224×3 будет содержать миллионы параметров уже в первом слое и почти наверняка переобучится.
  • Забывать про dropout: FC-слои с большим числом параметров склонны к переобучению, особенно на малых датасетах. Dropout с коэффициентом 0.5 обнуляет половину активаций при обучении.
  • Использовать FC-слой без функции активации между слоями: без нелинейности два FC-слоя эквивалентны одному линейному преобразованию.

Как улучшить

  • Применяйте dropout между FC-слоями с коэффициентом 0.3–0.5, если данных для обучения немного.
  • Используйте ReLU или её варианты (Leaky ReLU, ELU) в скрытых FC-слоях — они вычислительно эффективны и решают проблему затухания градиента.
  • Ставьте softmax на выходном слое для многоклассовой классификации и сигмоиду — для бинарной.
  • Сокращайте число FC-слоёв: современные архитектуры (ResNet, EfficientNet) обходятся одним FC-слоем в конце или используют глобальный average pooling вместо FC.
  • Регуляризуйте через weight decay (L2-регуляризацию) — штраф за большие веса снижает переобучение.

Источники

Гусаков и др. — «Ускорение многослойных полносвязных сетей», Журнал вычислительной математики и математической физики (DOI: 10.31857/S0044466921050100)

Deep Neural Networks — arXiv:1710.09302 (раздел Fully-Connected Layer)

Копылов — «Свёрточные нейронные сети», РУДН (ВКР, esystem.rudn.ru)

科普中国 — «全连接层» (kepuchina.cn)