Машинное обучение

Перцептрон и искусственный нейрон

В 1958 году газета New York Times вышла с заголовком: военно-морской флот США создал электронный мозг, который учится сам. Речь шла о машине Mark I Perceptron, созданной психологом Фрэнком Розенблаттом. Это устройство размером со шкаф принимало сигналы от 400 фотоэлементов и само училось отличать треугольники от квадратов. Никто не программировал правила вручную - машина корректировала свои внутренние параметры после каждой ошибки и постепенно становилась точнее. Шестьдесят лет спустя тот же принцип лежит в основе ChatGPT, распознавания лиц и самоуправляемых автомобилей. Только вместо 400 фотоэлементов - миллиарды параметров, а вместо треугольников - человеческий язык. Как работает этот фундаментальный строительный блок всего искусственного интеллекта?

  • **Классификация электронных писем** - перцептрон лёг в основу первых спам-фильтров: каждое слово в письме является входом, вес показывает насколько слово указывает на спам, а модель учится на отмеченных пользователем примерах
  • **Распознавание символов** - от Mark I до современных OCR-систем: перцептрон обрабатывает пиксели изображения и определяет какая буква или цифра на нём изображена, этот принцип масштабировался до глубоких свёрточных сетей
  • **Медицинская диагностика** - перцептрон может принять бинарное решение (болен/здоров) на основе взвешенной комбинации симптомов и анализов, каждый с разной диагностической значимостью, что используется в системах поддержки врачебных решений

Электронный мозг и первая зима ИИ

В 1958 году психолог Фрэнк Розенблатт из Корнеллского университета построил Mark I Perceptron - первую обучаемую модель, физически реализованную в железе: устройство получало сигналы с 400 фотоэлементов и само настраивало веса, чтобы различать простые образы. Пресса писала об «электронном мозге», и ожидания были огромными. В 1969 году Марвин Минский и Сеймур Пейперт опубликовали книгу «Perceptrons», где математически строго показали фундаментальное ограничение однослойного перцептрона: он не способен решить даже простую задачу XOR, потому что разделяет классы лишь одной прямой. Книга охладила энтузиазм и стала одной из причин первой «зимы ИИ» - периода резкого сокращения финансирования нейросетевых исследований. Ограничение снимут лишь многослойные сети, но для этого потребуется ещё почти два десятилетия.

Предварительные знания

  • Stacking and Model Blending

Веса и взвешенная сумма

Биологический нейрон получает сигналы от тысяч других нейронов через дендриты. Каждый входящий сигнал имеет разную силу - одни связи сильные и важные, другие слабые и незначительные. Нейрон суммирует все входящие сигналы с учётом их силы, и если суммарный сигнал превышает порог - нейрон «срабатывает» и передаёт импульс дальше. Искусственный нейрон (перцептрон) работает по тому же принципу: каждый вход умножается на свой **вес (weight)**, результаты складываются, и если сумма превышает порог - выход равен 1, иначе 0.

Вес определяет, насколько важен конкретный вход для решения. Если вес большой и положительный - этот вход сильно влияет на решение «да». Если вес отрицательный - вход подталкивает к решению «нет». Если вес близок к нулю - вход почти не влияет на результат. Аналогия: представьте, что вы решаете, пойти ли на прогулку. Факторы: солнечная погода (важно, вес +0.8), выходной день (средне, вес +0.4), болит голова (отрицательно, вес -0.9). Взвешенная сумма покажет итоговое «настроение» для решения.

**Формула взвешенной суммы:** Для n входов x1, x2, ..., xn с весами w1, w2, ..., wn: `z = w1*x1 + w2*x2 + ... + wn*xn` В векторной записи: `z = w^T * x` (скалярное произведение вектора весов и вектора входов). Вес wi показывает, насколько i-й вход влияет на решение: - wi > 0: вход xi увеличивает z (толкает к "да") - wi < 0: вход xi уменьшает z (толкает к "нет") - wi = 0: вход xi не влияет на решение

Ключевой вопрос: **откуда берутся правильные веса?** В нашем примере мы их задали вручную, но в реальных задачах с тысячами входов это невозможно. Именно здесь начинается обучение - перцептрон сам подбирает веса на основе примеров с правильными ответами. Но прежде чем перейти к обучению, нам нужны ещё два компонента: bias (смещение) и функция активации.

Перцептрон имеет входы x1=3, x2=2 с весами w1=0.5, w2=-1.0. Чему равна взвешенная сумма z?

Bias - смещение нейрона

Представьте, что вы проводите прямую линию на графике, чтобы разделить два класса точек. Если у вас есть только веса (w1, w2), линия **всегда проходит через начало координат** (точку 0,0). Это серьёзное ограничение - данные редко бывают так удачно расположены. Bias (смещение) - это дополнительный параметр `b`, который позволяет сдвинуть разделяющую линию в любое место. Формула становится: `z = w1*x1 + w2*x2 + b`.

Можно думать о bias как о **пороге срабатывания** нейрона. Без bias нейрон срабатывает, когда взвешенная сумма входов больше нуля. С bias порог сдвигается: при b = -3 нейрон сработает, только когда взвешенная сумма входов превысит 3. При b = +2 нейрон сработает даже при слабых входах, потому что bias уже «подталкивает» его к активации.

**Bias как дополнительный вход:** Математический трюк - bias можно представить как ещё один вход, который всегда равен 1: `z = w1*x1 + w2*x2 + b*1` Это позволяет записать формулу единообразно: - Вектор входов: x = [x1, x2, 1] - Вектор весов: w = [w1, w2, b] - Результат: z = w^T * x Такой трюк упрощает код - bias обрабатывается так же, как обычный вес, и обновляется тем же правилом обучения.

**Не путайте bias нейрона с bias в контексте bias-variance tradeoff!** Bias перцептрона - это числовой параметр (смещение), часть формулы `z = w*x + b`. Это обучаемый параметр модели. Bias в bias-variance - это систематическая ошибка модели из-за упрощённых предположений. Это свойство класса моделей. Одинаковое слово, совершенно разные концепции.

Перцептрон с весами w1=1, w2=1 и bias b=-3 вычисляет z = x1 + x2 - 3. Для точки (2, 2) чему равно z и какой будет выход (при пороге 0)?

Функция активации перцептрона

Взвешенная сумма z может быть любым числом: -100, 0.3, 42.7. Но для задачи классификации нам нужен чёткий ответ: «да» или «нет», класс 0 или класс 1. Функция активации преобразует непрерывное значение z в дискретный выход. В классическом перцептроне используется **ступенчатая функция (step function, или функция Хевисайда)**: если z >= 0, выход = 1, иначе выход = 0.

Зачем нужна нелинейность? Без функции активации перцептрон вычисляет линейную комбинацию входов - просто взвешенную сумму. Если соединить два таких «линейных нейрона» последовательно, результат будет эквивалентен одному линейному нейрону (сумма линейных функций - линейная функция). Функция активации разрывает линейность, позволяя моделировать сложные зависимости. Ступенчатая функция - простейший вариант нелинейности.

**Перцептрон как линейный классификатор:** Перцептрон разделяет пространство признаков прямой линией (в 2D), плоскостью (в 3D) или гиперплоскостью (в n-мерном пространстве). Граница решений - это множество точек, где z = w^T * x + b = 0. Все точки по одну сторону получают метку 1, по другую - 0. Это означает, что перцептрон может решить задачу, только если классы **линейно разделимы** - то есть между ними можно провести прямую линию (или гиперплоскость).

Ограничение XOR - историческая причина, по которой интерес к нейронным сетям угас в 1970-х (так называемая «зима AI»). Марвин Минский и Сеймур Паперт в книге «Perceptrons» (1969) формально доказали, что **один перцептрон не может решить XOR**. Многие восприняли это как приговор всему направлению нейросетей. Решение нашлось позже - многослойный перцептрон (MLP) с промежуточным «скрытым» слоем решает XOR и любую другую задачу. Но это уже тема следующего урока.

Почему один перцептрон не может решить задачу XOR?

Правило обучения перцептрона

Как перцептрон находит правильные веса? Через итеративное обучение на примерах. Алгоритм прост: показываем перцептрону пример, получаем предсказание. Если предсказание правильное - ничего не меняем. Если ошибочное - корректируем веса в направлении, которое уменьшает ошибку. Формула обновления весов: **w_new = w_old + lr * (y_true - y_pred) * x**, где lr - learning rate (скорость обучения).

**Правило обучения перцептрона (Perceptron Learning Rule):** Для каждого обучающего примера (x, y_true): 1. Вычислить предсказание: y_pred = step(w^T * x + b) 2. Вычислить ошибку: error = y_true - y_pred 3. Обновить веса: w = w + lr * error * x 4. Обновить bias: b = b + lr * error **Три случая:** - error = 0 (правильно): ничего не меняется - error = +1 (предсказано 0, нужно 1): веса увеличиваются в направлении x - error = -1 (предсказано 1, нужно 0): веса уменьшаются в направлении x **Теорема о сходимости:** если данные линейно разделимы, перцептрон гарантированно найдёт разделяющие веса за конечное число шагов.

  • **Функция потерь:** перцептрон минимизирует количество ошибок (0/1 loss), Logistic Regression - log loss (cross-entropy)
  • **Выход:** перцептрон даёт жёсткое решение (0 или 1), Logistic Regression - вероятность от 0 до 1
  • **Граница решений:** перцептрон находит любую разделяющую гиперплоскость, Logistic Regression - оптимальную по правдоподобию
  • **Сходимость:** перцептрон гарантированно сходится ТОЛЬКО на линейно разделимых данных, Logistic Regression сходится всегда
  • **Историческое значение:** перцептрон (1958) - первая обучаемая модель, Logistic Regression пришла позже с более строгой математической основой

Перцептрон - исторически первый алгоритм машинного обучения с формальным доказательством сходимости. Теорема Новикова (1962) гарантирует: если данные линейно разделимы с margin gamma и все точки лежат внутри сферы радиуса R, то перцептрон сойдётся не более чем за (R / gamma)^2 обновлений. Это не зависит от размерности данных - замечательное свойство, которое сделало перцептрон первым надёжным алгоритмом обучения.

Перцептрон устарел и бесполезен - нейросети полностью его заменили

Перцептрон - фундамент всех нейронных сетей. Каждый нейрон в глубокой сети работает по принципу перцептрона: взвешенная сумма + bias + функция активации. Правило обучения перцептрона - предок backpropagation

Современный нейрон отличается от перцептрона только функцией активации (ReLU/sigmoid вместо ступенчатой) и способом обучения (gradient descent вместо правила перцептрона). Но базовая архитектура та же: z = w^T * x + b, y = f(z). Понимание перцептрона - ключ к пониманию всего deep learning. Как говорят: кто не понял перцептрон, тот не поймёт Transformer.

Перцептрон предсказал y_pred = 0, а правильный ответ y_true = 1. Вход x = [2, 1], learning rate = 0.5. Как изменятся веса?

Ключевые идеи

  • **Взвешенная сумма:** каждый вход перцептрона умножается на свой вес (важность), результаты складываются: z = w1*x1 + w2*x2 + ... + wn*xn. Положительные веса усиливают вход, отрицательные - подавляют
  • **Bias (смещение):** дополнительный параметр b, который сдвигает порог срабатывания нейрона. Без bias граница решений проходит через начало координат, с bias - в любом месте пространства
  • **Функция активации:** ступенчатая функция превращает непрерывную сумму z в бинарный ответ (0 или 1). Один перцептрон - линейный классификатор, неспособный решить нелинейные задачи вроде XOR
  • **Правило обучения:** w_new = w_old + lr * (y_true - y_pred) * x - простое, но гарантированно сходится на линейно разделимых данных (теорема Новикова)
  • **От Розенблатта к глубокому обучению:** тот электронный мозг из заголовков 1958 года содержал единственный нейрон с 400 входами. Сегодня GPT содержит миллиарды таких нейронов, но каждый из них работает по тому же принципу: взвешенная сумма, bias, функция активации

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

Перцептрон стоит на стыке линейных моделей и нейросетей, соединяя классическое ML с deep learning:

  • Нейронные сети (MLP) — Многослойный перцептрон решает проблему XOR и линейной ограниченности: несколько слоёв перцептронов с нелинейной активацией могут аппроксимировать любую функцию
  • Logistic Regression — Развитие идеи перцептрона: заменяет ступенчатую функцию на sigmoid, что даёт вероятности и позволяет использовать gradient descent вместо правила перцептрона

Вопросы для размышления

  • Перцептрон гарантированно сходится на линейно разделимых данных, но не на XOR. Как бы вы определили, являются ли ваши реальные данные линейно разделимыми, прежде чем применять перцептрон?
  • Правило обучения перцептрона обновляет веса только при ошибках. Logistic Regression обновляет веса на каждом примере через gradient descent. Какой подход эффективнее и почему?
  • Розенблатт показал перцептрон в 1958 году, а в 1969 Минский и Паперт доказали его ограниченность (XOR). Почему это открытие привело к "зиме AI" на целое десятилетие, хотя решение (многослойные сети) было уже известно?

Связанные уроки

  • ml-10-logistic-regression — Перцептрон и логистическая регрессия имеют линейное ядро
  • ml-25-neural-networks — Стек перцептронов строит многослойные сети
  • ml-09-gradient-descent — Правило обновления - градиентный спуск по ошибкам
  • la-02-dot-product — Нейрон вычисляет взвешенное скалярное произведение
  • mm-02-first-principles
Перцептрон и искусственный нейрон

0

1

Войти