Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Equipment >> Промышленный робот

Как повысить точность нейронной сети скрытого слоя

В этой статье мы проведем несколько классификационных экспериментов и соберем данные о взаимосвязи между размерностью скрытого слоя и производительностью сети.

В этой статье вы узнаете, как изменить скрытый слой для повышения точности нейронной сети, используя реализацию Python и примеры задач.

Однако, прежде чем мы перейдем к этой теме, подумайте о том, чтобы наверстать упущенное из предыдущих статей этой серии о нейронных сетях:

  1. Как выполнить классификацию с помощью нейронной сети:что такое перцептрон?
  2. Как использовать простой пример нейронной сети персептрона для классификации данных
  3. Как обучить базовую нейронную сеть персептрона
  4. Общие сведения об обучении простой нейронной сети
  5. Введение в теорию обучения нейронных сетей.
  6. Скорость обучения в нейронных сетях
  7. Расширенное машинное обучение с многоуровневым персептроном
  8. Функция активации сигмовидной кишки:активация в многослойных перцептронных нейронных сетях.
  9. Как обучить многослойную нейронную сеть персептрона
  10. Понимание формул обучения и обратного распространения ошибки для многослойных персептронов
  11. Архитектура нейронной сети для реализации Python
  12. Как создать многослойную нейронную сеть персептрона на Python.
  13. Обработка сигналов с использованием нейронных сетей:проверка при проектировании нейронных сетей
  14. Обучающие наборы данных для нейронных сетей:как обучить и проверить нейронную сеть Python
  15. Сколько скрытых слоев и скрытых узлов нужно нейронной сети?
  16. Как повысить точность нейронной сети скрытого уровня

Количество узлов, включенных в скрытый слой, влияет на способность классификации и скорость нейронной сети Perceptron. Мы собираемся провести эксперименты, которые помогут нам сформулировать некоторую зарождающуюся интуицию о том, как размерность скрытого уровня вписывается в попытку спроектировать сеть, которая обучается в течение разумного промежутка времени, выдает выходные значения с приемлемой задержкой и отвечает требованиям точности .

Бенчмаркинг в Python

Код нейронной сети Python, представленный в Части 12, уже включает раздел, который вычисляет точность, используя обученную сеть для классификации выборок из набора данных проверки. Таким образом, все, что нам нужно сделать, это добавить некоторый код, который будет сообщать время выполнения для обучения (которое включает в себя операцию прямого распространения и обратное распространение) и для фактической функциональности классификации (которая включает только операцию прямого распространения). Мы будем использовать time.perf_counter () функция для этого.

Так я отмечаю начало и конец тренировки:

Время начала и окончания валидации генерируется одинаково:


Два измерения времени обработки представлены следующим образом:


Тренировочные данные и процедура измерения

Нейронная сеть будет выполнять классификацию «истинно / ложно» для входных выборок, состоящих из четырех числовых значений от –20 до +20.

Таким образом, у нас есть четыре входных узла и один выходной узел, а входные значения генерируются с помощью уравнения Excel, показанного ниже.


Мой набор обучающих данных состоит из 40 000 образцов, а набор для проверки - 5000 образцов. Скорость обучения 0,1, и я прохожу только одну эпоху обучения.

Мы проведем три эксперимента, представляющих отношения ввода-вывода разной степени сложности. np.random.seed (1) закомментировано, поэтому начальные значения веса будут отличаться, а значит, и точность классификации.

В каждом эксперименте программа будет выполняться пять раз (с одними и теми же данными обучения и проверки) для каждой размерности скрытого слоя, а окончательные измерения точности и времени обработки будут представлять собой среднее арифметическое результатов, полученных в ходе пяти отдельных прогонов. .

Эксперимент 1. Задача низкой сложности

В этом эксперименте выходные данные верны, только если первые три входа больше нуля, как показано на снимке экрана Excel ниже (обратите внимание, что четвертый вход не влияет на выходное значение).

Я думаю, что это можно рассматривать как довольно простую взаимосвязь ввода-вывода для многослойного персептрона.

Основываясь на рекомендациях, которые я дал в части 15 относительно того, сколько слоев и узлов необходимо нейронной сети, я бы начал с размерности скрытого слоя, равной двум третям входной размерности.

Поскольку у меня не может быть скрытого слоя с долей узла, я начну с H_dim =2 . В таблице ниже представлены результаты.


Мы видим улучшение классификации вплоть до пяти скрытых узлов. Однако я думаю, что эти числа преувеличивают преимущество увеличения с четырех до пяти узлов, потому что точность одного из прогонов с четырьмя скрытыми узлами составила 88,6%, а это снизило среднее значение.

Если я исключу этот прогон с низкой точностью, средняя точность для четырех скрытых узлов на самом деле будет немного выше, чем средняя для пяти скрытых узлов. Я подозреваю, что в этом случае четыре скрытых узла обеспечат лучший баланс точности и скорости.

Еще одна важная вещь, на которую следует обратить внимание в этих результатах, - это различие в том, как размерность скрытого слоя влияет на время обучения и время обработки. Переход от двух до четырех скрытых узлов увеличивает время проверки в 1,3 раза, но увеличивает время обучения в 1,9 раза.

Обучение требует значительно больших вычислительных ресурсов, чем обработка с прямой связью, поэтому нам нужно особенно внимательно относиться к тому, как конфигурация сети влияет на нашу способность обучать сеть в разумные сроки.

Эксперимент 2:проблема средней сложности

На снимке экрана Excel показаны отношения ввода-вывода для этого эксперимента. Все четыре входа теперь влияют на выходное значение, и сравнение стало менее простым, чем в эксперименте 1.

Я начал с трех скрытых узлов. Вот результаты:

В этом случае я подозреваю, что пять скрытых узлов дадут нам наилучшее сочетание точности и скорости, хотя снова прогоны с четырьмя скрытыми узлами дали одно значение точности, которое было значительно ниже, чем другие. Если вы проигнорируете этот выброс, результаты для четырех скрытых узлов, пяти скрытых узлов и шести скрытых узлов будут очень похожими.

Тот факт, что прогоны с пятью скрытыми и шестью скрытыми узлами не генерировали каких-либо выбросов, приводит нас к интересному возможному выводу:возможно, увеличение размерности скрытого слоя делает сеть более устойчивой к условиям, которые по какой-то причине заставляют обучение быть особенно трудным.

Эксперимент 3:задача высокой сложности

Как показано ниже, новые отношения ввода-вывода снова включают все четыре входных значения, и мы ввели нелинейность, возведя один из входов в квадрат и извлекая квадратный корень из другого.


Вот результаты:


У сети определенно было больше трудностей с этим математическим соотношением более высокой сложности; даже с семью скрытыми узлами точность была ниже, чем та, которую мы достигли только с тремя скрытыми узлами в задаче низкой сложности. Я уверен, что мы могли бы улучшить характеристики высокой сложности, изменив другие аспекты сети, например, включая смещение (см. Часть 11) или снижение скорости обучения (см. Часть 6).

Тем не менее, я бы оставил размерность скрытого слоя равной семи, пока я не был полностью убежден, что другие улучшения могут позволить сети поддерживать адекватную производительность с меньшим скрытым слоем.

Заключение

Мы видели несколько интересных измерений, которые рисуют довольно четкую картину взаимосвязи между размерностью скрытого слоя и производительностью персептрона. Конечно, есть еще много деталей, которые мы могли бы изучить, но я думаю, что это дает вам основательную информацию, на которую вы можете опираться, когда экспериментируете с дизайном и обучением нейронных сетей.


Промышленный робот

  1. Сколько скрытых слоев и скрытых узлов нужно нейронной сети?
  2. Обучающие наборы данных для нейронных сетей:как обучить и проверить нейронную сеть Python
  3. Как создать многослойную нейронную сеть персептрона в Python
  4. Архитектура нейронной сети для реализации Python
  5. Как обучить нейронную сеть многослойного персептрона
  6. Как сетевая экосистема меняет будущее фермы
  7. Защита Интернета вещей от сетевого уровня до уровня приложения
  8. Чем Thomas WebTrax отличается от Google Analytics, Thomas Network и др.
  9. Как сетевые датчики 0G защищают холодовую цепь вакцины
  10. Как правильно выбрать систему лазерной резки для максимальной производительности и точности