Нейронные сети
September 24, 2019

Введение

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

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

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

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

Нейрон

Для начала, прежде чем приступать к самой нейронной сети, сети из нейронов, узнаем врага в лицо. Кто такой нейрон?

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

В программировании нейрон – то же что и в биологии, только, разумеется, в компьютерном обличии. Нейрон в программировании - это такая часть кода, которая способна самостоятельно принять, обработать и передать другим нейронам какие-то значения.

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

В обычном состоянии нейрон находится в покое.

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

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

На выходе функции активации получается какое-то число, которое нейрон передаёт дальше своим соседям.

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

То, насколько он ослабел будет определять то, насколько слабо он влияет на своего соседа-нейрона, по сравнению с другими соседями-нейронами. Чем меньше рассеялся сигнал – тем больше его влияние, вес в сравнении с другими приходящими сигналами.

В реальном мозгу вес приходящего к нейрону сигнала зависит в большей степени от расстояния от нейрона-отправителя к нейрону-приёмнику. Чем оно больше – тем большее сигнала рассеялось – тем меньше вес пришедшего сигнала.

В компьютерном же мозгу такого понятия как «расстояние между нейронами» нет, ведь нейроны - это просто куски кода. Вместо расстояния, теперь степень рассеивания сигнала определяет так называемый вес связи между нейронами.

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

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