Создаем свою нейросеть с перцептроном и синапсами: разбираемся в теории

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

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

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

Нейронная сеть и нейрон

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

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

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

Устройство нейрона

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

Уже несколько заметок на канале были посвящены нейросетям и тому, как они активно проникают в нашу жизнь.-2

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

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

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

Перцептрон и его устройство

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

Уже несколько заметок на канале были посвящены нейросетям и тому, как они активно проникают в нашу жизнь.-3

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

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

Уже несколько заметок на канале были посвящены нейросетям и тому, как они активно проникают в нашу жизнь.-4

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

Добавляем немного математики

Ошибочно господствует мнение, что программистам математика не нужна (скажем спасибо большому количеству инфоцыганских школ, которые такое мнение сформировали). Математика при работе в IT не нужна ровно до того момента, пока она не понадобится. Мы до такого момента дошли.

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

Уже несколько заметок на канале были посвящены нейросетям и тому, как они активно проникают в нашу жизнь.-5

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

Подведем итог

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

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