Построение многослойного перцептрона на Python: практическое руководство
Эта статья проводит вас через Python-программу, обучающую нейронную сеть для продвинутой классификации.
Это 12-я запись в серии разработки нейронных сетей AAC. Посмотрите, что ещё предлагает серия ниже:
- Как выполнять классификацию с нейронной сетью: что такое перцептрон?
- Как использовать простой пример перцептрона для классификации данных
- Как обучать базовый перцептрон
- Понимание простого обучения нейронных сетей
- Введение в теорию обучения для нейронных сетей
- Понимание скорости обучения в нейронных сетях
- Продвинутое машинное обучение с многослойным перцептроном
- Сигмоидная функция активации: активация в многослойных перцептронах
- Как обучать многослойный перцептрон
- Понимание формул обучения и обратного распространения для многослойных перцептронов
- Архитектура нейронной сети для Python-реализации
- Как создать многослойный перцептрон на Python
- Обработка сигналов с нейронными сетями: валидация в дизайне нейронных сетей
- Обучающие наборы данных для нейронных сетей: как обучать и валидировать Python нейронную сеть
В этой статье мы построим на нашей работе с простыми перцептронными сетями и расширим её до полностью функционального многослойного перцептрона (MLP), реализованного на Python.
Разработка понятного Python-кода для нейронных сетей
После просмотра множества онлайн-ресурсов я обнаружил, что многие реализации либо чрезмерно сложны, либо лишены ясности. Моя цель — создать программу, которая одновременно обучающая и интуитивная, позволяя читателям видеть, как теория переводится в код.
Хотя этот скрипт приоритизирует читаемость над сырой производительностью, он остаётся твёрдой базой для экспериментов. Реальные приложения часто требуют оптимизированного кода для обработки больших датасетов, но для обучения и малых проектов ясность ценнее.
Полный Python-источник доступен как изображение ниже и может быть скачан как MLP_v1.py. Код выполняет обучение и валидацию, с фокусом этого поста на процессе обучения.

Подготовка функций и переменных

Библиотека NumPy обрабатывает все числовые операции, в то время как Pandas облегчает импорт обучающих данных из Excel. Мы используем логистическую сигмоиду для активации и её производную для обратного распространения. Скорость обучения, входная размерность, размер скрытого слоя и число эпох устанавливаются здесь. Случайные начальные веса генерируются с np.random.uniform(-1, 1), фиксированный seed обеспечивает воспроизводимость. Пустые массивы для скрытых pre-activation и post-activation значений также инициализируются.
Импорт обучающих данных

Следуя процедуре из части 4, мы читаем датасет из Excel, отделяем целевую колонку, удаляем её из матрицы признаков, конвертируем оставшиеся данные в NumPy массив и сохраняем количество сэмплов в training_count.
Прямой проход (Feedforward)
Фаза прямого прохода вычисляет выход сети, пропагируя входы через скрытый слой к выходному узлу. Код ниже демонстрирует многопочный цикл, расчёты на сэмпл, скрытый слой pre-activation и activation, и финальное вычисление выхода.

Внутри каждой эпохи мы итерируем по всем сэмплам. Для каждого сэмпла вычисляем активации скрытых узлов через скалярные произведения, применяем сигмоиду, затем вычисляем выходной узел pre-activation и post-activation. Ошибка — разница между целью и выходом.
Обратное распространение (Backpropagation)
После прямого прохода обратное распространение корректирует веса в обратном порядке, пропагируя сигналы ошибки от выхода обратно через скрытый слой. Следующее изображение иллюстрирует вложенные циклы и обновления весов.

Сначала вычисляем термин ошибки выхода S_ERROR, затем обновляем веса скрытый-выход. Последовательно, для каждого скрытого узла, вычисляем его вклад в обновления весов вход-скрытый, используя текущий вес скрытый-выход. Этот порядок сохраняет корректные градиентные расчёты.

Заключение
Этот лаконичный скрипт инкапсулирует основные принципы MLP: приём данных, прямое распространение, вычисление ошибки и корректировку весов через обратное распространение. Надеюсь, он служит ясным мостом между теорией нейронных сетей и практической реализацией.
Ниже приведён полный код для справки:

Скачать код
Промышленный робот
- Создайте свой первый шаблон AWS CloudFormation — практическое руководство
- Строительство Cloud Center of Excellence: стратегии успешной миграции и успеха клиентов
- Создание бесшовного пользовательского опыта: чертеж UX-дизайна
- Создание списков строк в VHDL: лучшие практики и пример
- Как создать самопроверяющийся тестбенч в VHDL — практическое руководство
- Построение надежного таймера в VHDL: подсчет тактовых циклов до часов
- Создание тактированного процесса в VHDL: практическое руководство
- Локальные минимумы в обучении нейронных сетей: миф или реальность?
- Создание массива объектов в Java: пошаговое руководство
- Сетевое программирование в Python: сокеты и продвинутые протоколы