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

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

Раздел: [Нейронные сети](https://ml-book.com/s/neural-nets/) · Страница темы: https://ml-book.com/t/perceptron-mlp/ · Обновлено: 2026-07-07 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

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

`a = σ(w_1x_1 + w_2x_2 + … + w_nx_n + b)`

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

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

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

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

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

`h = σ(W_1x + b_1), ŷ = σ(W_2h + b_2)`

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

> **💡 Ключевая мысль**
>
> Без нелинейности стопка любых линейных слоёв схлопывается в один линейный слой: W_2(W_1x + b_1) + b_2 = (W_2W_1)x + const. Вся выразительность глубоких сетей рождается на стыке «линейный слой + активация».

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/perceptron-mlp/

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

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

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

> **⚠️ Подводный камень**
>
> Нельзя инициализировать все веса нулями (или любыми одинаковыми числами): нейроны одного слоя получат одинаковые градиенты и навсегда останутся копиями друг друга — это называется проблемой симметрии (symmetry breaking). Инициализация обязана быть случайной, причём правильного масштаба (Xavier/He).

> **🎤 На собеседовании**
>
> - «Почему перцептрон не решает XOR?» — его граница решения — гиперплоскость, а классы XOR линейно неразделимы; нужен скрытый слой, который перестраивает пространство признаков.
> - «Что будет, если убрать активации из 10-слойной сети?» — произведение линейных отображений линейно, сеть эквивалентна одному линейному слою.
> - «Что гарантирует теорема об универсальной аппроксимации?» — существование приближения непрерывной функции широким MLP; она не гарантирует ни разумный размер сети, ни то, что градиентный спуск эти веса найдёт.
> - «Зачем bias?» — без него граница решения обязана проходить через начало координат.

## Связанные темы

- [Логистическая регрессия и классификация](https://ml-book.com/t/logistic-regression/)
- [Градиентный спуск](https://ml-book.com/t/gradient-descent/)
- [Функции активации](https://ml-book.com/t/activations/)
- [Обратное распространение ошибки](https://ml-book.com/t/backprop/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/perceptron-mlp/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
