В чем идея полносвязной нейронной сети и почему она работает
Что проверяют
Понимаете ли вы, откуда у сети выразительность, а не только знаете слова «слой» и «нейрон». Следом обычно спрашивают, что будет без функции активации и почему для изображений полносвязную сеть не используют. В задачах на код могут попросить написать прямой проход на NumPy.
Как отвечать
Полносвязный слой делает аффинное преобразование и нелинейность: h = relu(x @ W + b). Каждый выход зависит от всех входов, отсюда название. Сеть это композиция таких слоёв, на выходе softmax для классификации или линейный выход для регрессии.
Почему это работает:
- нелинейность: без неё стек из десяти слоёв схлопывается в одно линейное преобразование. ReLU и её варианты делают функцию кусочно-линейной, и сеть может аппроксимировать сложные зависимости;
- теорема об универсальной аппроксимации: сеть с одним скрытым слоем достаточной ширины приближает любую непрерывную функцию на ограниченной области. Это теорема о существовании, а не обещание, что такие веса найдутся обучением. Глубина на практике даёт тот же результат гораздо меньшим числом параметров;
- обучение: backpropagation считает градиент потерь по всем весам через цепное правило, оптимизатор (SGD, Adam) их обновляет;
- устойчивость: инициализация He для ReLU и Xavier для tanh, нормализация, dropout и weight decay.
Ограничение называйте с цифрой. Слой 784 на 512 для MNIST это уже 401 920 параметров. Картинка 224×224×3 даёт 150 528 входов, и один слой на 1000 нейронов требует около 150 млн весов. Сеть не знает, что соседние пиксели связаны, поэтому для изображений берут свёртки с общими весами, для последовательностей трансформеры. При этом полносвязные блоки есть везде: классификационная голова и FFN внутри каждого слоя трансформера.
Где спотыкаются
Приводят в пример выделение краёв и текстур на изображениях. Это заслуга свёрточных сетей, у полносвязной нет понятия соседства пикселей.
Пересказывают теорему об аппроксимации как доказательство того, что сеть всегда обучится. Она ничего не говорит о сходимости и нужном объёме данных.
Не могут объяснить затухание градиента с сигмоидой в глубокой сети и почему ReLU и residual-связи эту проблему смягчают.