Архитектура нейронной сети для реализации Python
В этой статье обсуждается конфигурация персептрона, которую мы будем использовать в наших экспериментах с обучением и классификацией нейронных сетей, а также мы рассмотрим связанную тему узлов смещения.
Добро пожаловать в серию технических статей о нейронных сетях All About Circuits. В этой серии статей, ссылки на которые приведены ниже, мы рассмотрели довольно много теории, связанной с нейронными сетями.
- Как выполнить классификацию с помощью нейронной сети:что такое перцептрон?
- Как использовать простой пример нейронной сети персептрона для классификации данных
- Как обучить базовую нейронную сеть персептрона
- Общие сведения об обучении простой нейронной сети
- Введение в теорию обучения нейронных сетей.
- Скорость обучения в нейронных сетях
- Расширенное машинное обучение с многоуровневым персептроном
- Функция активации сигмовидной кишки:активация в многослойных перцептронных нейронных сетях.
- Как обучить многослойную нейронную сеть персептрона
- Понимание формул обучения и обратного распространения ошибки для многослойных персептронов
- Архитектура нейронной сети для реализации Python
- Как создать многослойную нейронную сеть персептрона на Python.
- Обработка сигналов с использованием нейронных сетей:проверка при проектировании нейронных сетей
- Обучающие наборы данных для нейронных сетей:как обучить и проверить нейронную сеть Python
Теперь мы готовы начать преобразование этих теоретических знаний в функциональную систему классификации персептронов.
Сначала я хочу представить общие характеристики сети, которую мы будем реализовывать на языке программирования высокого уровня; Я использую Python, но код будет написан таким образом, чтобы облегчить перевод на другие языки, такие как C. В следующей статье представлен подробный обзор кода Python, а после этого мы рассмотрим различные способы обучения. , используя и оценивая эту сеть.
Архитектура нейронной сети Python
Программное обеспечение соответствует Perceptron, изображенному на следующей диаграмме.
Вот основные характеристики сети:
- Количество входных узлов варьируется. Это важно, если нам нужна сеть, обладающая значительной степенью гибкости, поскольку входная размерность должна соответствовать размерности выборок, которые мы хотим классифицировать.
- Код не поддерживает несколько скрытых слоев. На этом этапе в этом нет необходимости - одного скрытого слоя достаточно для чрезвычайно мощной классификации.
- Количество узлов в одном скрытом слое может меняться. Поиск оптимального количества скрытых узлов требует некоторых проб и ошибок, хотя есть рекомендации, которые могут помочь нам выбрать разумную отправную точку. В одной из следующих статей мы рассмотрим вопрос о размерности скрытых слоев.
- Количество выходных узлов в настоящее время зафиксировано на одном уровне. Это ограничение сделает нашу исходную программу немного проще, и мы сможем включить переменную выходную размерность в улучшенную версию.
- Функция активации как для скрытых, так и для выходных узлов будет стандартной логистической сигмоидной связью:
\ [f (x) =\ frac {1} {1 + e ^ {- x}} \]
Что такое узел смещения? (Смещение - это хорошо, если вы перцептрон)
Пока мы обсуждаем сетевую архитектуру, я должен отметить, что нейронные сети часто включают в себя нечто, называемое узлом смещения (или вы можете назвать это просто «смещением» без «узла»). Числовое значение, связанное с узлом смещения, является константой, выбранной разработчиком. Например:
Узлы смещения могут быть включены во входной или скрытый слой, или в оба. Их веса аналогичны любым другим весам и обновляются с использованием той же процедуры обратного распространения ошибки.
Использование узлов смещения является важной причиной для написания кода нейронной сети, который позволяет вам легко изменять количество входных узлов или скрытых узлов - даже если вас интересует только одна конкретная задача классификации, переменная размерность входного и скрытого слоя. гарантирует, что вы можете удобно экспериментировать с использованием узлов смещения.
В части 10 я указал, что сигнал предварительной активации узла вычисляется путем скалярного произведения, то есть вы умножаете соответствующие элементы двух массивов (или векторов, если хотите), а затем складываете все отдельные продукты. Первый массив содержит значения постактивации из предыдущего слоя, а второй массив содержит веса, которые соединяют предыдущий слой с текущим слоем. Таким образом, если массив постактивации предыдущего уровня обозначен x, а вектор весов обозначен w, значение предварительной активации вычисляется следующим образом:
\ [S_ {preA} =w \ cdot x =sum (w_1x_1 + w_2x_2 + \ cdots + w_nx_n) \]
Вам может быть интересно, какое отношение это имеет к узлам смещения. Что ж, смещение (обозначенное буквой b) изменяет эту процедуру следующим образом:
\ [S_ {preA} =(w \ cdot x) + b =sum (w_1x_1 + w_2x_2 + \ cdots + w_nx_n) + b \]
Смещение сдвигает сигнал, который обрабатывается функцией активации, и тем самым может сделать сеть более гибкой и надежной. Использование буквы b для обозначения значения смещения напоминает «точку пересечения оси y» в стандартном уравнении для прямой линии:y =mx + b . И это не праздное совпадение. Смещение действительно похоже на точку пересечения по оси Y, и вы также могли заметить, что массив весов эквивалентен наклону:
\ [S_ {preA} =(w \ cdot x) + b \]
\ [y =mx + b \]
Вес, смещение и активация
Если мы подумаем о числовых значениях, переданных функции активации узла во время обучения, веса увеличивают или уменьшают наклон входных данных, а смещение сдвигает входные данные по вертикали. Но как это повлияет на вывод узла? Что ж, предположим, что мы используем стандартную логистическую функцию для активации:
Переход от f A (x) =от 0 до f A (x) =1 центрируется на входном значении x =0. Таким образом, используя смещение для увеличения или уменьшения сигнала предварительной активации, мы можем повлиять на возникновение перехода и тем самым сместить функцию активации влево или вправо. . Веса, с другой стороны, определяют, насколько «быстро» входное значение проходит через x =0, и это влияет на крутизну перехода в функции активации.
Заключение
Мы обсудили узлы смещения и основные характеристики первой нейронной сети, которую мы реализуем в программном обеспечении. Теперь мы готовы взглянуть на реальный код, и именно этим мы займемся в следующей статье.
Промышленный робот
- 5 сетевых показателей для облачного мира
- Введение в сетевую архитектуру в облаке AWS
- Python для цикла
- Анализ архитектуры NB-IoT для архитекторов IoT
- Ищете альтернативу Z-Wave?
- CEVA:AI-процессор второго поколения для глубоких рабочих нагрузок нейронных сетей
- Сетевая инфраструктура - ключ к беспилотным автомобилям
- Python — сетевое программирование
- 5 основных советов по сетевой безопасности для малого бизнеса
- Объяснение:почему 5G так важен для Интернета вещей?