Приветствуем вас, юные IT магнаты! Сегодня речь пойдёт про искусственные нейронные сети. А именно про то, что это такое и с чем это едят. Причём сначала опишем искусственные нейронные сети простыми словами и в общих чертах, а потом подробно разберём их архитектуру и виды. Кроме того, вы узнаете, где их можно применять, и почему современные нейронные сети так же далеки от искусственного интеллекта, как мушкет от атомной бомбы. Так что, если вы искали, с чего начать изучение нейронных сетей, то вы попали куда надо. Итак, поехали!
Искусственные нейронные сети – это математическая симуляция биологического мозга . Собственно, поэтому они так и называются. Ведь мозг и представляет собой нейронную сеть . И далее вы увидите, что работа и обучение искусственных нейронных сетей идентична обучению и работе нашего мозга. Вот почему структурные элементы их архитектуры и называются подобно структурным элементам головного мозга. Но ошибкой было бы думать, что искусственные нейронные сети подобны искусственному интеллекту. Это не так! Для создания искусственного интеллекта недостаточно компьютерного кода. Для него нужно особое «железо».
Современные искусственные нейронные сети могут распознавать изображения , классифицировать данные , принимать управленческие решения , распознавать голос , играть в компьютерные игры и, вообще, способны на многое! И, конечно, в каком-то зачаточном виде они являются искусственным интеллектом. Но если вы хотите получить настоящий аналог человеческого сознания, то вам нужны физические искусственные нейроны . Просто потому, что мощная искусственная нейронная сеть на обычном «железе» будет потреблять чрезмерно много энергии . Хотя принцип их работы идентичен. Вот давайте разберёмся, в чём он состоит!
Архитектура нейронных сетей
- Нейрон – это блок обработки информации, являющийся структурной единицей нейронной сети. Каждый нейрон может принимать входной сигнал, обрабатывать сигналы, придавая им «вес», и, наконец, выдавать выходные данные.
- Простейший и наиболее распространённый тип архитектуры нейрона называется «сетью прямого распространения» (FFNN). Структурно он состоит из: входного нейрона, скрытого нейрона и выходного нейрона. На рисунке ниже (рис. 1) нейроны представлены в виде кружков. Жёлтые кружки – это входные нейроны (x). Зелёные кружки – это скрытые нейроны. Красные кружки – это выходные нейроны (y). А стрелочками между ними обозначены синапсы (w), которым может быть задан разный «вес». И от него зависит удельный вес влияния каждого входного нейрона на значение выходного нейрона.
- В общем виде так работают все искусственные нейронные сети. Но в данном случае этот процесс наиболее нагляден, потому что все расчёты идут в одном направлении: от входного нейрона через скрытые нейроны к выходному нейрону . А в архитектуру более сложных нейронных сетей так же входят другие виды нейронов, но о них мы говорить сегодня не будем.
Зачем нейронам нужен вес?
Искусственные нейронные сети оперируют числами в диапазоне [0, 1] или [-1, 1]. Поэтому для расчёта степени влияния каждого отдельного фактора нужно провести процесс нормализации . Нормализация – это и есть процесс присваивания «веса» каждому нейрону. Посредством чего в скрытых нейронах удаётся рассчитать влияние каждого параметра. Но итоговые значения входных и выходных нейронов находятся в диапазоне [0, 1] или [-1, 1]. А математическая формула, через которую можно выразить искусственную нейронную сеть, в общем виде выглядит так: y=f(s), где s=∑Nj=1wjxj, где
N – это количество вводных данных
f() – это функция активации процесса обработки данных, включающая в себя лимит итераций. То есть лимит количества обучающих циклов искусственной нейронной сети.
∑ – это суммирование значений входных нейронов, умноженных на значения синапсов.
Wj – это значение каждого синапса (w1, w2, w3,… wN)
Xj – это значение каждого входного нейрона (x1, x2, x3,… xN)
y – значение выходного нейрона
Пример нейронной сети
Допустим, что нам нужно решить, чем заняться вечером. Сами мы никак не можем принять решение, поэтому решили создать нейронную сеть, которая сделает это за нас. Допустим, что мы исходим из 3 параметров: (1) желания встретиться с друзьями [1], (2) нежелания тратить деньги [-1] и (3) нежелания ссориться со своей девушкой [-1]. Соответственно, решение о том, идти пить пиво [1] или остаться дома [-1], зависит от веса параметров. Например, если у параметра 1 вес будет больше, чем в сумме у параметров 2 и 3, то мы пойдём пить пиво [1]. А если вес 1 будет меньше, чем в сумме у 2 и 3 параметра, то мы останемся дома с девушкой [-1].
Обучение искусственной нейронной сети
Настройка нейронных сетей осуществляется так же, как и обучение человека – через опыт . В случае с искусственными нейронными сетями наиболее популярным методом обучения является метод обратного распространения (backpropagation) . Он предполагает вычисление градиента функции по всем весам, с последующей их оптимизацией. Каждый такой «тренировочный подход» называется эпохой или итерацией. И, соответственно, чем выше эпоха, тем лучше натренирована сеть. Но если тренировать её слишком долго, то она может «сойти с ума». Например, если ей долго показывать красные яблоки, то она может начать считать все красные круглые предметы яблоками.
Градиент функции – это вектор, определяющий направление на графике или поверхности. Соответственно, нашей целью является найти такой градиент, который будет выдавать всё более и более низкий процент ошибок с каждой последующей эпохой. Хотя это и не линейный процесс. Представьте себе американские горки. Там есть локальные максимумы и минимумы. И если вы в низине, то это не значит, что вам не следует подниматься на гору, чтобы достичь ещё более глубокой низины. Но на наших «американских горках» есть горы, идущие только вверх. Поэтому «тележке» нужно задать оптимальный импульс (momentum). И если всё сделано правильно, то, в итоге, удаётся найти такое значение «весов», которое, в идеале, выдаёт 0% ошибок.
Соответственно, искусственные нейронные сети, как правило, обучают «с учителем». То есть программист задаёт результат, к которому в итоге должна научиться приходить нейронная сеть. Но так же есть методология обучения «без учителя» и обучение «с поощрением». Первый способ, как правило, используется в самых простых задачах типа группировки данных, а второй – в наиболее сложных задачах. Суть второго способа в поощрении нейронной сети при достижении желаемого вами результата. При этом способ получения результата искусственной нейронной сетью вы не контролируете. Ну а подробности обучения нейронных сетей давайте оставим на следующий раз! Потому что моя сеть начинает «закипать».