Введение
В последнее время в программировании очень популярной темой считается тема нейронных сетей. Ото всюду льются фразы о инновационности и универсальности данного подхода в решении многих программных задач. И эта популярность оправдана.
Каждый программист хоть раз мечтал о том, чтобы программы писались и разрабатывались сами собой, о том чтобы можно было просто подождать пока код сам напишется и закомпилится. Как будто это не код, а джин, что всё делает за тебя. К счастью, такой джин существует не только в сказках, и имя ему – нейронная сеть
Правда, как и в сказках, чтобы выпустить джина из лампы нужно пройти через череду опасных приключений (вроде математического анализа, горы книжек по теории алгоритмов, скучных лекций и непонятных статей).
Страх перед ними может отпугнуть юного junior-девелопера от поставленной цели. Мы с нашей командой решили сделать серию статей, призванных помочь всем и каждому окончательно разобраться в нейросетях быстро и безболезненно. Начнём!
Нейрон
Для начала, прежде чем приступать к самой нейронной сети, сети из нейронов, узнаем врага в лицо. Кто такой нейрон?
В биологии нейроном называют такою клетку в мозге, которая способна принимать, обрабатывать и передавать электрические импульсы, после чего эти импульсы идут к следующим нейронам.
В программировании нейрон – то же что и в биологии, только, разумеется, в компьютерном обличии. Нейрон в программировании - это такая часть кода, которая способна самостоятельно принять, обработать и передать другим нейронам какие-то значения.
При этом, как и нейроны в биологии, компьютерные нейроны делятся на разные по функционалу части: принимающую(дендриты), обрабатывающую(головку) и передающую(аксоны).
В обычном состоянии нейрон находится в покое.
Когда приходит сигнал от соседних нейронов, принимающая часть считывает все приходящие значения и обрабатывает их, используя специальную математическую функцию, называемую функцией приёма.
Полученное после этого значение нейрон начинает обрабатывать, используя функцию, называемую функцией активации.
На выходе функции активации получается какое-то число, которое нейрон передаёт дальше своим соседям.
Также важно отметить, что как и в реальном мозгу, тот импульс что нейрон отправил соседям, дойдёт до них немного исказившись, рассеявшись, ослабев.
То, насколько он ослабел будет определять то, насколько слабо он влияет на своего соседа-нейрона, по сравнению с другими соседями-нейронами. Чем меньше рассеялся сигнал – тем больше его влияние, вес в сравнении с другими приходящими сигналами.
В реальном мозгу вес приходящего к нейрону сигнала зависит в большей степени от расстояния от нейрона-отправителя к нейрону-приёмнику. Чем оно больше – тем большее сигнала рассеялось – тем меньше вес пришедшего сигнала.
В компьютерном же мозгу такого понятия как «расстояние между нейронами» нет, ведь нейроны - это просто куски кода. Вместо расстояния, теперь степень рассеивания сигнала определяет так называемый вес связи между нейронами.
Вес связи – это просто число, которое характеризует то, насколько важнее сигнал, идущий конкретно по этой связи, чем остальные сигналы. Это число очень важно в нейронных сетях, ведь именно благодаря нему и возможен такой процесс как обучение нейросети, о котором мы расскажем в следующей статье.
Мы хотим понять, интересна ли вам эта серия статей как мы думали. Поэтому, чтобы проверить ваш интерес, следующая статья выйдет только когда пост наберёт 4 лайка.