Перейти к основному содержимому
Informatik.uz
Магистратура · 1-й курсГлава 2. Нейронные сети

Перцептрон и многослойная сеть

Искусственный нейрон, перцептрон Розенблатта и его предел — задача XOR. Вы узнаете, как скрытые слои, функции активации и обратное распространение ошибки позволяют обучать многослойную сеть.

Тема 3 из 3Чтение: 3 минОбновлено: 27 октября 2026 г.
Список тем (3 из 3)

Искусственный нейрон умножает входные значения x1, x2, ..., xn на соответствующие веса w1, w2, ..., wn, суммирует их, добавляет смещение (bias) b и пропускает результат через функцию активации f: y = f(w1 * x1 + ... + wn * xn + b). В перцептроне, предложенном Фрэнком Розенблаттом в 1958 году, f — ступенчатая функция: если сумма больше нуля, выход равен 1, иначе 0. Перцептрон делит пространство входов гиперплоскостью на две части, поэтому может разделять только линейно разделимые классы.

Правило обучения перцептрона просто: если на примере предсказание ошибочно, веса корректируются по формуле w = w + lr * (y - yhat) * x, а смещение — по формуле b = b + lr * (y - yhat). На линейно разделимых данных (например, логические функции И и ИЛИ) алгоритм за конечное число шагов находит решение. А вот классы функции XOR одной прямой разделить нельзя; Марвин Минский и Сеймур Пейперт доказали это ограничение в 1969 году, что на время снизило интерес к нейронным сетям.

Многослойный перцептрон (MLP) состоит из входного слоя, одного или нескольких скрытых слоёв и выходного слоя; каждый нейрон слоя связан со всеми нейронами следующего. Нелинейные функции активации скрытых слоёв (sigmoid, tanh, ReLU = max(0, z)) позволяют сети изучать криволинейные границы: сеть с двумя скрытыми нейронами способна решить XOR. Без нелинейности любое число слоёв было бы равно одному линейному преобразованию. По универсальной теореме аппроксимации даже один скрытый слой с достаточным числом нейронов может приблизить любую непрерывную функцию с любой точностью, но на практике более глубокие сети эффективнее.

Многослойную сеть обучают алгоритмом обратного распространения ошибки (backpropagation): при прямом проходе сеть вычисляет предсказание и ошибку, а при обратном с помощью цепного правила находится градиент ошибки по каждому весу. Затем веса обновляются градиентным спуском или его усовершенствованными вариантами (например, Adam). Этот процесс повторяется на протяжении эпох, а чтобы вовремя заметить переобучение, следят и за ошибкой на валидационной выборке.

Главное

  • Нейрон берёт взвешенную сумму входов, добавляет смещение и пропускает результат через функцию активации.
  • Перцептрон разделяет только линейно разделимые классы; XOR ему не по силам.
  • Скрытые слои и нелинейная активация (ReLU, tanh, sigmoid) расширяют возможности сети.
  • Обратное распространение вычисляет градиент по всем весам с помощью цепного правила.
  • Размер сети, скорость обучения и число эпох влияют на риск переобучения.

Практические задания

  1. Проверьте вручную: что выдаст перцептрон с двумя входами при w1 = 1, w2 = 1 и b = -1.5 на четырёх комбинациях входов и какую логическую функцию он вычисляет?
  2. Напишите перцептрон на NumPy: при ошибке обновляйте w и b по приведённым формулам; обучите его функциям И и ИЛИ, затем попробуйте на XOR и объясните, почему он не обучается.
  3. В scikit-learn обучите XOR с помощью MLPClassifier(hidden_layer_sizes=(4,), activation="tanh", solver="lbfgs", max_iter=2000) (если точность не равна 1.0, измените random_state), затем уменьшите число скрытых нейронов до 1 и посмотрите, как изменится результат.

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

Проверьте себя: сначала подумайте, потом откройте ответ.

  1. 1Почему один перцептрон не может выучить функцию XOR?
    Два класса XOR нельзя разделить одной прямой (они не являются линейно разделимыми), а перцептрон строит только линейную границу.
  2. 2Что произойдёт в многослойной сети, если все функции активации линейны?
    Композиция линейных преобразований снова линейна, поэтому сеть становится эквивалентной одному слою.
  3. 3Что вычисляет алгоритм обратного распространения?
    С помощью цепного правила — градиент функции ошибки по каждому весу и смещению; затем этот градиент используется для обновления весов.

Пройдено тем: 0 из 3

Войти и отметить