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

Включение узлов смещения в вашу нейронную сеть

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

Добро пожаловать в серию статей о нейронных сетях All About Circuits, созданную техническим директором Робертом Кеймом. Прежде чем продолжить этот урок, посвященный узлам смещения, подумайте о том, чтобы наверстать упущенное из оставшейся части следующей серии:

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

<час />

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

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

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

Включение смещения через электронную таблицу

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

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

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

Теперь все, что вам нужно сделать, это увеличить размерность входного слоя на единицу:

Включение предвзятости в код

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

Предположим, мы хотим добавить узел смещения как к входному, так и к скрытому слою. Во-первых, нам нужно увеличить I_dim и H_dim , поскольку наша цель - интегрировать узлы смещения таким образом, чтобы они функционировали как обычные узлы, но с предварительно взвешенным значением, которое выбирается разработчиком и никогда не изменяется.

Я сделаю это следующим образом:


Создание узла смещения входного слоя

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

После этих операторов количество столбцов в двумерном массиве training_data будет равно количеству входных столбцов в электронной таблице. Нам нужно увеличить количество столбцов на один, чтобы учесть узел смещения во входном слое, и пока мы на нем, мы можем заполнить этот дополнительный столбец желаемым значением смещения.

В следующем коде показано, как это можно сделать.


np.ones () функция создает массив из одного столбца, количество строк которого равно training_count , и он присваивает значение +1 каждому элементу в этом массиве. Затем мы используем np.hstack () функция для добавления массива из одного столбца справа от исходного training_data массив.

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

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

Создание узла смещения скрытого слоя

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

Первая модификация показана ниже:


Если в сети не настроен узел смещения скрытого уровня, hidden_bias равно 0, и выполнение цикла for не изменилось.

Если, с другой стороны, мы решили включить узел смещения скрытого уровня, цикл for не будет вычислять значение постактивации для последнего узла в слое (т. Е. Узла смещения).

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

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

Значения смещения, отличные от +1

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

Однако, если вы хотите поэкспериментировать с другими значениями смещения, вы можете легко это сделать. Для скрытого смещения вы просто измените номер, присвоенный postActivation_H [node] . Для смещения ввода вы можете умножить new_column массив (который изначально имеет +1 для каждого элемента) на желаемое значение смещения.

Проверка эффекта смещения

Если вы читали Часть 16, то знаете, что моему Персептрону было трудно классифицировать образцы в Эксперименте 3, что было проблемой «высокой сложности».

Посмотрим, дает ли добавление одного или нескольких узлов смещения последовательное и значительное улучшение.

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

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

Заключение

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

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

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


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

  1. Переосмысление плана игры для мониторинга сети
  2. Как усилить защиту ваших устройств для предотвращения кибератак
  3. Создание сети беспроводных датчиков в вашем доме
  4. Понимание локальных минимумов в обучении нейронной сети
  5. Как повысить точность нейронной сети скрытого слоя
  6. Как интегрировать управление запасными частями в вашу CMMS
  7. [Интервью] Отраслевые эксперты по выбору вашей сети IoT
  8. Как успешно интегрировать робототехнику в свое предприятие
  9. Преобразование цепочки поставок в центр возможностей
  10. Насколько безопасна сеть вашего цеха?