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

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

Как видите, наша входная размерность равна трем. Мы можем думать об этом персептроне как о средстве решения задач в трехмерном пространстве. Например, давайте предложим следующую проблему: если точка в трехмерном пространстве расположена ниже оси X, она соответствует недействительной точке отсчета. Если точка находится на оси X или выше, она соответствует действительным данным, которые необходимо сохранить для дальнейшего анализа. Нам нужна эта нейронная сеть, чтобы классифицировать наши данные, с выходным значением 1, указывающим на действительный набор данных, и значением 0, указывающим на неверный набор данных.
Во-первых, мы должны отобразить наши трехмерные координаты на входной вектор. В этом примере Вход0 – это компонент x, Вход1 – компонент y, а Вход2 – компонент z. Далее нам нужно определить вес. Этот пример настолько прост, что нам не нужно обучать сеть. Мы можем просто придумать необходимые веса и назначить их.

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

Персептрон работает следующим образом: когда w1 = 0 и w2 = 0, компоненты y и z не вносят вклад в суммирование, генерируемое выходным узлом. Единственным входным значением, которое влияет на суммирование, является компонент x, который доставляется на выходной узел без изменений, потому что w0 = 1. Если точка в трехмерном пространстве находится ниже оси x, суммирование выходного узла будет отрицательным, и функция активации преобразует это отрицательное значение в Выход0 = 0. Если точка в трехмерном пространстве находится на оси X или выше, сумма будет равна или больше нуля, а функция активации преобразует это значение в Выход0 = 1.
В предыдущем материале мы описали наш персептрон как инструмент для решения проблем. Вы, возможно, заметили, однако, что персептрон не очень много решал проблемы – мы решили проблему и дали решение персептрону, назначив необходимые веса. К этому моменту мы достигли ключевой концепции нейронной сети: мы смогли быстро решить проблему классификации действительного/недействительного, потому что связь между входными данными и желаемыми выходными значениями очень проста. Однако во многих реальных ситуациях человеку было бы чрезвычайно трудно сформулировать математическую связь между входными данными и выходными значениями. Мы можем получать входные данные и записывать или производить соответствующие выходные значения, но у нас нет математического маршрута от входа к выходу.
Полезным примером является распознавание рукописного ввода. Допустим, у нас есть изображения рукописных символов, и мы хотим классифицировать эти изображения как «а», «б», «в» и т. д., чтобы мы могли преобразовать рукописный текст в обычный компьютерный текст. Любой, кто знает, как писать и читать, сможет генерировать входные изображения и затем назначать правильные категории для каждого изображения. Таким образом, сбор входных данных и соответствующих выходных данных не представляет трудностей. С другой стороны, было бы чрезвычайно сложно взглянуть на пары ввода-вывода и сформулировать математическое выражение или алгоритм, который бы правильно преобразовывал входные изображения в выходную категорию.
Таким образом, распознавание почерка и многие другие задачи обработки сигналов представляют собой математические проблемы, которые люди не могут решить без помощи сложных инструментов. Несмотря на то, что нейронные сети не могут думать, анализировать и создавать реальные новшества, они позволяют нам решать эти сложные проблемы, потому что они могут делать то, чего не могут делать люди, то есть быстро и многократно выполнять вычисления с использованием потенциально огромного количества числовых данных.
Процесс, который позволяет нейронной сети создавать математический путь от входа к выходу, называется обучением. Мы даем данные обучения сети, состоящие из входных значений и соответствующих выходных значений, и к этим значениям применяется фиксированная математическая процедура. Целью этой процедуры является постепенное изменение весов сети таким образом, чтобы сеть могла рассчитывать правильные выходные значения даже с входными данными, которые она никогда раньше не видела. По сути, это поиск шаблонов в обучающих данных и генерация весов, которые позволят получить полезный результат путем применения этих шаблонов к новым данным.
На следующем изображении показан рассмотренный выше классификатор, но веса различаются. Это веса, которые мы сгенерировали, тренируя персептрон с 1000 точками данных. Как видите, тренировочный процесс позволил персептрону автоматически аппроксимировать математические отношения, которые мы определили с помощью критического мышления в человеческом стиле.

© digitrode.ru