Обучение базового перцептрона на Python: пошаговое руководство
Обучение базового перцептрона на Python
Это руководство проводит вас через полностью прокомментированную Python-реализацию, автоматически обучающую веса однослойного перцептрона. Код готов к копированию, запуску и адаптации под ваши данные.
Изучите серию AAC о перцептроне
Для более глубокого контекста или перехода к продвинутым темам проверьте остальные статьи:
- Как выполнять классификацию с нейронной сетью: что такое перцептрон?
- Как использовать простой пример перцептрона для классификации данных
- Как обучать базовый перцептрон
- Понимание простого обучения нейронных сетей
- Введение в теорию обучения для нейронных сетей
- Понимание скорости обучения в нейронных сетях
- Продвинутое машинное обучение с многослойным перцептроном
- Сигмоидная функция активации: активация в многослойных перцептронах
- Как обучать многослойный перцептрон
- Понимание формул обучения и обратного распространения для многослойных перцептронов
- Архитектура нейронной сети для Python-реализации
- Как создать многослойный перцептрон на Python
- Обработка сигналов с нейронными сетями: валидация в дизайне нейронных сетей
- Обучающие наборы данных для нейронных сетей: как обучать и валидировать Python нейронную сеть
Классификация с однослойным перцептроном
Мы начинаем с классической задачи бинарной классификации в 3D-пространстве. Архитектура сети — один скрытый слой с тремя входными узлами и одним выходным узлом, использующим функцию активации unit-step.

Выходной узел применяет следующую unit-step функцию:
\[f(x)=\begin{cases}0 & x < 0\\1 & x \ge 0\end{cases}\]
Для иллюстрации обучения мы расширяем архитектуру для автоматической настройки весов через простой обучающий цикл:

Python-реализация
Следующий скрипт читает обучающие данные из Excel-файла, инициализирует веса случайно и итеративно обновляет их с использованием правила обучения перцептрона.
import pandas
import numpy as np
# Размерность входного пространства (x, y, z)
input_dim = 3
# Скорость обучения контролирует величину корректировки весов
learning_rate = 0.01
# Случайные начальные веса; можно задать фиксированные для воспроизводимости
Weights = np.random.rand(input_dim)
# Weights = np.array([0.5, 0.5, 0.5])
# Загрузка датасета: лист с колонками для каждого признака и колонкой 'output'
Training_Data = pandas.read_excel("3D_data.xlsx")
# Разделение ожидаемых выходов от матрицы признаков
Expected_Output = Training_Data.output
Training_Data = Training_Data.drop(["output"], axis=1)
# Конвертация в NumPy массив для векторизованных операций
Training_Data = np.asarray(Training_Data)
training_count = len(Training_Data[:, 0])
# Обучение за несколько эпох
for epoch in range(5):
for datum in range(training_count):
# Взвешенная сумма входов
Output_Sum = np.sum(np.multiply(Training_Data[datum, :], Weights))
# Применение unit-step активации
Output_Value = 0 if Output_Sum < 0 else 1
# Вычисление ошибки между ожидаемым и фактическим выходом
error = Expected_Output[datum] - Output_Value
# Обновление каждого веса согласно обучающему правилу
for n in range(input_dim):
Weights[n] += learning_rate * error * Training_Data[datum, n]
print(f"w_0 = {Weights[0]:.3f}")
print(f"w_1 = {Weights[1]:.3f}")
print(f"w_2 = {Weights[2]:.3f}")
Ключевые концепции объяснены
Настройка сети и организация данных
Сеть имеет три входных узла для соответствия 3D-координатам. Скорость обучения 0.01 — стандартная отправная точка; вы можете скорректировать её после экспериментов. Веса инициализируются случайно для избежания симметрии, но вы можете установить их в фиксированное значение для детерминированного поведения.
Обучающие данные читаются из Excel-файла, разделяются на входы и ожидаемые выходы, затем конвертируются в NumPy массив для эффективных вычислений.
Вычисление выходных значений
Каждая эпоха итерируется по всем обучающим сэмплам. Для каждого сэмпла вычисляется взвешенная сумма входов. Функция unit-step затем отображает эту сумму в бинарный выход: 0 если сумма отрицательна, 1 иначе.
Обновление весов
Когда предсказанный выход отличается от ожидаемого, правило обучения перцептрона корректирует каждый вес пропорционально значению входа, ошибке и скорости обучения:
\[w_{new} = w + (\alpha \times \delta \times input)\]
где \(\delta = \text{output}_{expected} - \text{output}_{calculated}\) и \(\alpha\) — скорость обучения.
Заключение
Вы увидели полную, аннотированную реализацию однослойного перцептрона на Python. Код служит твёрдой основой для экспериментов с разными датасетами, скоростями обучения или даже расширения сети до множественных выходов в будущих проектах.
Встроенный
- Системы обнаружения вторжений (IDS): защита сети с умными алертами
- Как стать автоэлектриком: обучение, обязанности и карьерные перспективы
- Укрепление промышленных IoT устройств для предотвращения кибератак
- Создание автономной ИИ-модели для обнаружения стадий диабетической ретинопатии с Edge Impulse
- CEVA представляет NeuPro‑S:.next‑gen AI процессор для edge‑выводов глубоких нейросетей
- Raspberry Pi и HDC2010: полное руководство по настройке I2C датчика температуры и влажности
- Узнайте свой ключ безопасности сети: простые шаги для поиска и защиты Wi‑Fi
- 5 основных стратегий сетевой безопасности для малого бизнеса
- Оценка безопасности сети цеха: готовы ли вы?
- Подготовка рабочей силы завтрашнего дня к Industry 4.0: стратегии обучения для цифровой фабрики