Перцептрон и полносвязная сеть
Линейные комбинации и нелинейности.
Что такое перцептрон
Перцептрон – это одна из самых простых моделей машинного обучения и одновременно фундаментальный строительный блок нейронных сетей. Несмотря на то что современные архитектуры выглядят невероятно сложными, в их основе по-прежнему лежит та же идея, что и в перцептроне: взвешенная сумма входов и принятие решения на основе порога.
Если убрать всю математику, перцептрон отвечает на очень простой вопрос:
"Если я сложу все аргументы с учетом их важности – достаточно ли их, чтобы принять решение?"
Представьте, что банк решает, выдавать ли кредит. Он учитывает:
доход клиента
стаж работы
кредитную историю
текущую долговую нагрузку
Каждый фактор имеет свою "важность". Доход может быть важнее стажа, просрочки – сильным отрицательным фактором. Все эти факторы складываются, и если итоговый "балл" превышает некоторый порог – кредит одобряется.
Перцептрон делает ровно это же, только в математической форме.
Исторический контекст
Перцептрон был предложен в 1957 году Фрэнком Розенблаттом. Это была одна из первых моделей, вдохновленных нейронами мозга.
Идея была простой: нейрон получает сигналы от других нейронов, суммирует их, и если сигнал превышает определенный порог – "выстреливает". В противном случае – молчит.
Математический нейрон делает то же самое:
Получает входы
Умножает каждый вход на вес
Складывает
Сравнивает с порогом
Если сумма достаточно велика – выдает 1. Если нет – выдает 0.
Это и есть вся логика. Но в этой простоте скрыта огромная сила.
Формальное определение
Пусть есть входной вектор:
У перцептрона есть параметры:
веса w1,w2,...,wn
смещение b
Он вычисляет:
Это линейная комбинация признаков.
После этого применяется пороговая функция:
Геометрическая интерпретация
Очень важно понять, что перцептрон – это не просто формула, а геометрический объект.
Когда он складывает признаки и сравнивает результат с нулем, он фактически строит границу в пространстве признаков.
В двумерном случае это прямая.
В трехмерном – плоскость.
В n-мерном – гиперплоскость.
Эта граница делит пространство на две части:
по одну сторону – класс 1
по другую сторону – класс 0
Перцептрон не "угадывает" ответ. Он проводит разделяющую поверхность.
И если данные можно разделить одной плоской границей – перцептрон способен это сделать.

Почему это линейный классификатор
Если переписать условие:
это означает: мы делим пространство линейной границей.
Никакой кривизны.
Никаких сложных форм.
Только плоская поверхность.
Поэтому перцептрон может решить:
AND
OR
простую линейную классификацию
Но не может решить XOR.
Перцептрон как алгоритм обучения
Важно понимать: перцептрон – это не только формула, но и правило обновления весов.
Если модель ошиблась:
где:
η – learning rate
y – правильный ответ
y^ – предсказание
Если предсказание верное – веса не меняются.
Если ошибка – веса сдвигаются в сторону правильного класса.
Интуитивно это похоже на корректировку линии на графике так, чтобы она лучше разделяла точки разных классов.
С каждым проходом по данным граница постепенно "подстраивается".
Линейная комбинация – фундамент
Пусть у нас есть объект с признаками:
Перцептрон сначала вычисляет линейную комбинацию:
или в векторной форме:
где:
w – вектор весов
b – bias (смещение)
x – входной вектор
Это обычная гиперплоскость в n-мерном пространстве.
Если же у нас два признака, то это просто прямая:

Линейная комбинация – это та же идея, что и в линейной регрессии и логистической регрессии. Разница начинается дальше.
Перцептрон
Классический перцептрон использует ступенчатую функцию:
То есть:
Считаем линейную комбинацию
Применяем порог
Геометрически – разделяем пространство гиперплоскостью.
Ограничение
Перцептрон умеет решать только линейно разделимые задачи.
Например, XOR (как было упомянуть выше) он решить не может.

XOR требует нелинейности. И здесь начинается история многослойных сетей.
Перцептрон на чистом PHP
Для начала, для более полного понимания, давайте реализуем перцептрон в минимальной форме:
Это реализация классического правила обучения Розенблатта.
Почему нужна нелинейность
Представим, что мы делаем два слоя:
Если нет активации, то:
Это снова линейная модель.
Следовательно:
Несколько линейных слоев без нелинейности эквивалентны одному линейному слою.
Именно поэтому активация – не "декорация", а математическая необходимость.
Функции активации
Самые распространенные:
1. Sigmoid
Диапазон: (0, 1)
2. ReLU
3. Hyperbolic Tangent

ReLU стал стандартом в глубоких сетях благодаря простоте и отсутствию насыщения на положительной части.
Полносвязная сеть (MLP)
MLP (Multi-Layer Perceptron) – это несколько слоев перцептронов:
Каждый нейрон связан со всеми нейронами предыдущего слоя – отсюда "полносвязная".

Один скрытый слой может всё
Теорема универсальной аппроксимации утверждает:
Сеть с одним скрытым слоем и нелинейной активацией может аппроксимировать любую непрерывную функцию с произвольной точностью.
Это фундаментальная причина, почему MLP – не просто игрушка.
Минимальный MLP на PHP
Пример с одним скрытым слоем:
Это только forward-pass. Для обучения нужен backpropagation – мы разберем его в следующей главе.
Геометрическая интуиция MLP
Скрытый слой делает следующее:
Берет линейные комбинации
Применяет нелинейность
Создает новые признаки
Каждый нейрон – это новая проекция пространства.
Композиция таких преобразований позволяет:
"сгибать" пространство
строить сложные границы решений
разделять нелинейные классы
Связь с логистической регрессией
Логистическая регрессия – это перцептрон с sigmoid и обучением по log loss.
То есть:
Перцептрон – исторический предок логистической регрессии.
Главная идея главы и итог
Вся современная нейросетевая архитектура строится на трех вещах:
Линейная комбинация
Нелинейная активация
Композиция слоев
Глубина – это повторение этих трех шагов.
Итого, перцептрон – это:
линейная модель
с пороговой функцией
способная разделять только линейные классы
MLP – это:
композиция линейных преобразований
с обязательной нелинейностью
способная строить сложные поверхности решений
Именно добавление нелинейности превращает простую линейную алгебру в универсальный аппроксиматор.
В следующей главе мы подробно разберем backpropagation – механизм, который позволяет этим сетям обучаться эффективно.
Last updated