3 Перцептрон
Контекст
Фрэнк Розенблатт (Корнелл) хочет не просто вычисляющую сеть, а самообучающуюся машину распознавания образов. «Mark I Perceptron» был железом: «сетчатка» из 400 фотоэлементов, веса — моторизованные потенциометры, обучение крутило ручки. Презентация 1958-го породила волну хайпа (пресса со слов ВМС писала о машине, которая «осознает своё существование»).
Идея и механизм
Перцептрон считает взвешенную сумму и применяет знак:
Принципиально новое — правило обучения. Показываем примеры с меткой t ∈ {−1, +1}; при ошибке сдвигаем веса к правильному ответу:
Геометрически w — нормаль к разделяющей гиперплоскости; на ошибке мы прибавляем сам входной вектор, поворачивая плоскость к неправильно классифицированной точке.
линейная алгебра Теорема сходимости: почему ошибок не больше (R/γ)²
Пусть данные разделимы единичным w* (‖w*‖ = 1) с зазором γ, то есть ti(w*·xi) ≥ γ для всех точек, и все ‖xi‖ ≤ R. Стартуем с w = 0. Оценим норму w после k ошибок с двух сторон.
Снизу. Каждая ошибка двигает w ← w + tixi, и проекция на w* растёт минимум на γ:
Сверху. На ошибке ti(w·xi) ≤ 0, поэтому норма растёт не больше чем на R²:
Совмещаем. kγ ≤ ‖wk‖ ≤ √ k R, откуда √ k ≤ R/γ и финально:
Число ошибок конечно и не зависит от размерности — только от геометрии (радиус данных / зазор). Это ранний образец margin-based обобщения, идея которого расцветёт в SVM (#10).
NumPy Реализация: обучение перцептрона
import numpy as np
def perceptron(X, y, eta=1.0, epochs=100):
w = np.zeros(X.shape[1]); b = 0.0
for _ in range(epochs):
errors = 0
for xi, ti in zip(X, y): # ti ∈ {−1, +1}
if ti * (w @ xi + b) <= 0: # ошибка классификации
w += eta * ti * xi # поворот плоскости к точке
b += eta * ti
errors += 1
if errors == 0: # разделимо → сошлось
break
return w, b
Почему это важно
Перцептрон — прямой предок современного искусственного нейрона: линейная комбинация → нелинейность → обновление весов градиентного типа. Вся глубокая сеть — многослойная конструкция из таких элементов. И это первый случай доказуемого машинного обучения. Обратная сторона — назидательная: завышенные ожидания и реальное ограничение (только линейно разделимое) столкнутся в книге Минского и Паперта.
Связи
Тот же пороговый нейрон, но теперь с обучаемыми весами и алгоритмом, который настраивает их из размеченных примеров. Перцептрон — это МП-нейрон, которого научили учиться.
Теорема сходимости работает только для линейно разделимых данных. Минский и Паперт строго показывают, что XOR в этот класс не входит — и обрывают теорему ровно там, где кончается линейная разделимость.
Ограничение снимается добавлением скрытых слоёв — но их нужно уметь обучать. Backprop обобщает «двигай веса по ошибке» на многослойный случай через цепное правило, и XOR падает.
Оба — линейные разделители, и оба завязаны на зазор γ. Но перцептрон зазор лишь использует (для гарантии сходимости), а SVM его максимизирует — выбирает не любую разделяющую плоскость, а самую устойчивую.
Вопросы пытливого ума
Теорема гарантирует сходимость — а если данные НЕ линейно разделимы?
Тогда гарантии нет: алгоритм будет вечно колебаться, перепрыгивая между весами, и никогда не остановится. На практике берут «pocket»-вариант (хранить лучшие встреченные веса) или переходят к методам, терпящим ошибки (логрег, SVM с мягким зазором). Сам этот провал на неразделимых данных — и есть то, что вскроют Минский и Паперт на примере XOR.
Граница (R/γ)² не зависит от размерности — разве это не странно?
Наоборот, это глубокий результат. Число ошибок определяется геометрией (радиус данных и зазор), а не числом признаков — можно работать в миллионмерном пространстве, и оценка та же. Это ранний пример margin-based анализа обобщения: «качество зависит от зазора, не от размерности». Та же философия лежит в основе SVM и теории Вапника.
Чем правило перцептрона отличается от градиентного спуска и логистической регрессии?
Правило перцептрона — это субградиент кусочной (hinge-подобной) потери, который срабатывает только на ошибках и не даёт вероятностей. Логистическая регрессия минимизирует гладкую вероятностную потерю и обновляется на каждом примере. Перцептрон — жёсткий частный предок этого семейства; SGD и логрег — его сглаженные, вероятностные потомки.
Что читать в оригинале
Читать выборочно: модель и правило обновления. Психологическое обрамление можно пролистать. А вот теорему сходимости (роль отношения R/γ) стоит понять — это первый мостик к идее зазора, которая станет ядром SVM и теории обобщения.