Диагностика Mock-интервью
Главная · Нейронные сети

От нейрона к многослойному перцептрону

Один искусственный нейрон умеет проводить только прямую линию. Но стоит поставить нейроны в несколько слоёв и добавить нелинейность — и получается конструктор, способный приблизить почти любую функцию. Это и есть переход от перцептрона к MLP.

Интуиция

Биологическая метафора проста: нейрон в мозге собирает сигналы от соседей через синапсы, каждый вход «весит» по-разному, и если суммарное возбуждение переходит порог — нейрон срабатывает. Искусственный нейрон (artificial neuron) — карикатура на эту идею: он берёт входы, умножает каждый на свой вес (weight), складывает, добавляет сдвиг (bias) и пропускает результат через функцию активации (activation function):

a = σ(w1x1 + w2x2 + … + wnxn + b)

Больше в нём ничего нет. Вся магия нейросетей — в том, что происходит, когда таких элементарных блоков много и они соединены слоями.

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

Перцептрон (perceptron) Розенблатта — один нейрон с пороговой активацией. Геометрически он проводит в пространстве признаков гиперплоскость: всё по одну сторону — класс 0, по другую — класс 1. Отсюда его фундаментальное ограничение: он решает только линейно разделимые (linearly separable) задачи.

Классический контрпример — XOR: четыре точки (0,0)→0, (1,0)→1, (0,1)→1, (1,1)→0. Никакая одна прямая не отделит два «единичных» угла от двух «нулевых» — попробуй сам в интерактиве ниже. Именно этот пример в книге Минского и Пейперта «Perceptrons» (1969) охладил интерес к нейросетям на годы.

Решение — скрытый слой (hidden layer). Первый слой нейронов строит новые признаки (например, «x1 ИЛИ x2» и «x1 И x2»), а выходной нейрон комбинирует их. В новом пространстве признаков XOR уже линейно разделим. Многослойный перцептрон (MLP, multilayer perceptron) — это просто чередование линейных слоёв и нелинейностей:

h = σ(W1x + b1),   ŷ = σ(W2h + b2)

Теорема об универсальной аппроксимации (universal approximation theorem) говорит: MLP даже с одним скрытым слоем, если он достаточно широк, может приблизить любую непрерывную функцию с любой точностью. Интуиция: каждый нейрон с нелинейностью — «ступенька» или «изгиб», а из большого набора ступенек можно сложить сколь угодно сложный рельеф. Важно: теорема ничего не говорит о том, как найти такие веса и сколько нейронов понадобится — это вопрос обучения и практики.

💡 Ключевая мысль Без нелинейности стопка любых линейных слоёв схлопывается в один линейный слой: W2(W1x + b1) + b2 = (W2W1)x + const. Вся выразительность глубоких сетей рождается на стыке «линейный слой + активация».

Почему нужна глубина, а не только ширина

Раз одного широкого слоя теоретически достаточно, зачем строить глубокие сети? Потому что глубина даёт композицию: первый слой учит простые признаки, второй комбинирует их в более сложные, и так далее. Для многих функций глубокая сеть требует экспоненциально меньше нейронов, чем эквивалентная «плоская». Именно иерархия признаков — края → узоры → объекты — сделала глубокое обучение (deep learning) практичным.

Число параметров растёт быстро: даже крошечная сеть 2-2-1 имеет 9 обучаемых параметров (4 веса + 2 bias в скрытом слое, 2 веса + 1 bias на выходе). Учат их градиентным спуском, а градиенты считает обратное распространение ошибки. В интерактиве выше это можно увидеть вживую: кнопка «Обучить» запускает честный градиентный спуск по девяти параметрам, и на глазах граница решения из прямой превращается в изогнутую «полосу», отделяющую диагональные углы XOR.

⚠️ Подводный камень Нельзя инициализировать все веса нулями (или любыми одинаковыми числами): нейроны одного слоя получат одинаковые градиенты и навсегда останутся копиями друг друга — это называется проблемой симметрии (symmetry breaking). Инициализация обязана быть случайной, причём правильного масштаба (Xavier/He).
🎤 На собеседовании
  • «Почему перцептрон не решает XOR?» — его граница решения — гиперплоскость, а классы XOR линейно неразделимы; нужен скрытый слой, который перестраивает пространство признаков.
  • «Что будет, если убрать активации из 10-слойной сети?» — произведение линейных отображений линейно, сеть эквивалентна одному линейному слою.
  • «Что гарантирует теорема об универсальной аппроксимации?» — существование приближения непрерывной функции широким MLP; она не гарантирует ни разумный размер сети, ни то, что градиентный спуск эти веса найдёт.
  • «Зачем bias?» — без него граница решения обязана проходить через начало координат.