Как выполнить классификацию с помощью нейронной сети: что такое перцептрон?
Данная статья исследует основы теории и структуру известной топологии нейронной сети.
Это первая из серии статей, которая послужит длинным введением в проектирование, обучение и оценку нейронных сетей. Цель состоит в том, чтобы выполнить сложную классификацию, используя компьютерную программу на Python, которая реализует архитектуру нейронной сети, известную как многослойный перцептрон.
Остальную часть серии статей про перцептрон вы можете найти в меню с содержанием в начале статьи.
Что такое нейронная сеть?
Нейронные сети – это инструменты обработки сигналов, которые в значительной степени основаны на структуре человеческого мозга. Они обычно ассоциируются с искусственным интеллектом (ИИ, или AI, «artificial intelligence»). Мне не нравится термин «искусственный интеллект», потому что он неточный и упрощенный. Если вы определяете «интеллект» как способность быстро выполнять численные вычисления, то нейронные сети – это определенно ИИ. Но интеллект, на мой взгляд, это гораздо большее – это такая вещь, которая проектирует систему, которая быстро выполняет численные вычисления, затем пишет статью об этом, затем обдумывает значение слова «интеллект», и затем задается вопросом, зачем люди создают нейронные сети и пишут о них статьи.
Кроме того, искусственный интеллект не является искусственным. Это очень реальный интеллект, потому что это математическая система, которая работает в соответствии с интеллектом людей, которые ее разработали.
Нейронные сети – это программные процедуры, которые могут «извлекать уроки» из существующих данных и эффективно решать сложные проблемы обработки сигналов. Они интересны для изучения и экспериментов, а в некоторых случаях они намного превосходят возможности «обычных» алгоритмов. Тем не менее, они не избавят мир от голода, не смогут написать хорошую поэзию, и я сомневаюсь, что они когда-нибудь будут водить машину так же безопасно, как человек, который трезв и не пишет сообщения в чате или SMS.
Что такое перцептрон?
Базовая нейронная сеть перцептрон, в принципе, проста. Он может состоять из двух входных узлов и одного выходного узла, объединенных взвешенными соединениями:
Размерность входных данных должна соответствовать размерности входного слоя. Термин «размерность» может быть здесь немного запутанным, потому что большинство людей не могут визуализировать что-то более чем в трех измерениях. Всё это на самом деле означает, что ваши входные данные (например, шаблон, который вы хотите классифицировать) это вектор с заданной длиной, и ваш входной слой должен иметь узел для каждого элемента в векторе. Поэтому, если вы пытаетесь классифицировать шаблон, представленный последовательностью из 20 точек данных, у вас есть вектор из 20 элементов и вам нужно 20 входных узлов.
Выходной узел генерирует данные, которые представляют интерес для разработчика. Количество выходных узлов зависит от приложения. Если вы хотите принять решение о классификации да/нет, вам нужен только один выходной узел, даже если есть сотни входных узлов. С другой стороны, если цель состоит в том, чтобы поместить входной вектор в одну из нескольких возможных категорий, у вас будет несколько выходных узлов.
Данные, которые перемещаются от одного узла к другому, умножаются на веса. Эти обычные скалярные значения на самом деле являются ключом к работе перцептрона: веса изменяются во время процесса обучения, и благодаря автоматической настройке весов в соответствии с шаблонами, содержащимися в данных обучения, сеть приобретает способность создавать полезные выходные данные.
Что происходит внутри узла? (Или как работают нейронные сети?)
Узлы во входном слое – это просто точки подключения; они не изменяют входные данные. Выходной слой, а также любые дополнительные слои между входным и выходным содержат вычислительные узлы сети. Когда числовые данные поступают в вычислительные узлы, сначала они суммируются, а затем они подвергаются функции «активации»:
Концепция активации восходит к поведению (биологических) нейронов, которые взаимодействуют черезпотенциалы действия, которые либо активны, либо неактивны; это больше похоже на цифровую систему включено/выключено, чем на аналоговую систему. В контексте (искусственных) нейронных сетей узлы, которые также называются (искусственными) нейронами, могут имитировать поведение нейронов, применяя пороговую функцию, которая выводит 1, когда входной сигнал больше, чем пороговое значение, и 0 в противном случае.
На следующем графике показана взаимосвязь входа и выхода базовой единичной ступенчатой функции активации.
Вставляя это пороговое преобразование в распространение данных от узла к узлу, мы вводим в систему нелинейность, а без этой нелинейности функциональность нейронной сети очень ограничена. Теория здесь сложна, но общая идея (я думаю) состоит в том, что комбинации линейных преобразований, даже если эти линейные преобразования происходят много раз, никогда не смогут приблизиться к отношениям, которые характеризуют сложные природные явления и сложные задачи обработки сигналов.
Несмотря на то, что реальные нейроны работают по некоторой модели включено/выключено, пороговый подход к (искусственной) активации нейронной сети не является оптимальным. Мы вернемся к этой теме в следующей статье.
Заключение
Мы рассмотрели самые основные элементы перцептрона, и в следующей статье мы соберем эти кусочки и посмотрим, как работает элементарная система.
Нейронные сети – это обширная тема, и я честно предупреждаю вас, что это может быть длинная серия статей. Но я думаю, что она будет неплохой.