Обучение нейронных сетей с Excel: построение и валидация Python многослойного перцептрона
В этой статье мы покажем, как генерировать обучающие данные в Excel, обучать многослойный перцептрон в Python и валидировать его производительность.
Если вы хотите разработать Python нейронную сеть, вы в правильном месте. Перед погружением в Excel-ориентированную подготовку данных, рассмотрите остальную серию ниже для фундаментального контекста:
- Как выполнять классификацию с нейронной сетью: что такое перцептрон?
- Как использовать простой пример перцептрона для классификации данных
- Как обучать базовый перцептрон
- Понимание простого обучения нейронных сетей
- Введение в теорию обучения для нейронных сетей
- Понимание скорости обучения в нейронных сетях
- Продвинутое машинное обучение с многослойным перцептроном
- Сигмоидная функция активации: активация в многослойных перцептронах
- Как обучать многослойный перцептрон
- Понимание формул обучения и обратного распространения для многослойных перцептронов
- Архитектура нейронной сети для Python-реализации
- Как создать многослойный перцептрон на Python
- Обработка сигналов с нейронными сетями: валидация в дизайне нейронных сетей
- Обучающие наборы данных для нейронных сетей: как обучать и валидировать Python нейронную сеть
Что такое обучающие данные?
В реальных приложениях обучающие сэмплы состоят из измеренных входов, парных с известными целями, позволяющими нейронной сети учить согласованное вход-выход отображение. Например, предположим, вы хотите, чтобы сеть предсказывала вкусовые качества помидора на основе цвета, формы и плотности. Собрав тысячи помидоров, записав их физические атрибуты, пробовав каждый и скомпилировав результаты в таблицу, вы создадите датасет, который сеть будет использовать для изучения отношения между атрибутами и качеством.
Каждая строка представляет один обучающий сэмпл с тремя входными колонками (цвет, форма, плотность) и одной целевой выходной колонкой.

Во время обучения нейронная сеть выявит лежащий в основе паттерн — если он существует — между тремя входными значениями и выходным значением.
Квантификация обучающих данных
Все входы и выходы должны быть числовыми. Строки вроде «сливовидная» или «восхитительная» не могут быть поданы напрямую в сеть. Квантизация конвертирует качественные дескрипторы в числовые шкалы. Например, форма может быть закодирована от –1 (идеальная сфера) до +1 (экстремально вытянутая). Вкусовое качество может быть оценено по пятибалльной шкале и затем one-hot закодировано в пятиэлементный выходной вектор.
Следующая диаграмма иллюстрирует one-hot кодирование для пятиклассовой классификации.

One-hot кодирование хорошо согласуется с логистической сигмоидной активацией, производящей значения близкие к 0 или 1 вне узкой переходной зоны. Использование единственного выходного узла с целевыми значениями 0–4 сместило бы сеть к экстремумам и привело к бессмысленным предсказаниям.

Создание обучающего датасета
Python нейронная сеть, упомянутая в части 12, импортирует сэмплы из Excel-файла. Данные, используемые здесь, расположены так:

Поскольку наша перцептрон-реализация поддерживает только один выходной узел, мы выполняем бинарную классификацию. Входные значения — случайные числа между –5 и +5, генерируемые этой Excel-формулой:
=RANDBETWEEN(-10, 10)/2
Выход выводится из следующего правила:
=IF(AND(A2>0, B2>0, C2<0), 1, 0)
Таким образом, сеть учится, что сэмпл помечается 1 только когда input_0 > 0, input_1 > 0 и input_2 < 0; иначе он получает 0.
Для этой простой проблемы 5 000 случайно сгенерированных сэмплов и одна эпоха достаточно для достижения высокой классификационной точности.
Обучение сети
Настройте сеть с входной размерностью три (I_dim = 3), четырьмя скрытыми узлами (H_dim = 4) и скоростью обучения 0,1 (LR = 0.1). Замените строку training_data = pandas.read_excel(...) на путь к вашей таблице. Если у вас нет Excel, Pandas также читает ODS файлы.
Запуск обучающего скрипта на ноутбуке 2,5 GHz Windows с 5 000 сэмплами завершается за несколько секунд. Если вы используете полный скрипт MLP_v1.py, валидация автоматически начнётся после обучения.
Валидация сети
Валидация требует вторую таблицу, сгенерированную теми же формулами. Импортируйте эти данные так же, как обучающие:

Следующий фрагмент демонстрирует простую рутину валидации:
# Прямой проход для получения пост-активационного значения output = sigmoid(np.dot(W_out, hidden_output)) # Порог для получения бинарного предсказания prediction = 1 if output > 0.5 else 0 # Сравнение с целью и накопление правильных предсказаний
Точность классификации вычисляется делением числа правильных предсказаний на общее число валидационных сэмплов.
Если np.random.seed(1) опущен, инициализация весов будет варьироваться между запусками, вызывая флуктуации точности. За 15 запусков с указанными параметрами (5 000 обучающих, 1 000 валидационных сэмплов) точность варьировалась от 88,5% до 98,1%, в среднем 94,4%.
Заключение
Мы исследовали ключевые концепции за нейронными-сетевыми обучающими данными, реализовали Python многослойный перцептрон и оценили его производительность с Excel-генерированными датасетами. Серия значительно продвинулась от своего зарождения, и многие продвинутые темы ждут в следующих постах.
Промышленный робот
- Получение текущей даты и времени в Python: практическое руководство
- Innatera представила первые нейроморфные AI чипы для ультра-низкоэнергопотребляющих пограничных приложений
- Бесплатный симулятор и редактор VHDL: руководство для студентов
- Локальные минимумы в обучении нейронных сетей: миф или реальность?
- Оптимизация размера скрытого слоя для повышения точности нейронной сети
- Выбор правильного числа скрытых слоёв и узлов в нейронной сети
- Топ-5 вызовов 5G: навигация по спектру, стоимости, покрытию, устройствам и безопасности
- Развертывание и управление беспроводными сенсорными сетями в 엔терпрайзе
- Повышение экспертизы с экспертным обучением по вакуумным насосам BECKER
- Ускорение обучения робототехнической сварке: сократите время, повысьте эффективность