Искусственная нейронная сеть — компьютерная модель, созданная на основании биологической модели мозга.
На рисунке 1 изображена простая нейронная сеть с тремя входными нейронами, шестью скрытыми нейронами и одним выходным нейроном. Информация течет слева направо. То есть начинается с трех входных нейронов, дальше переходит в шесть скрытых нейронов и приходит к концу в последнем выходном нейроне. Хотелось бы отметить, что это очень простая нейронная сеть, с одним скрытым слоем, состоящем из шести скрытых нейронов или одного слоя.
Скрытых слоев, может бы сколько угодно. Если количество скрытых слоев больше чем три, то такая нейронная сеть считается глубокой и мы, в этом случае, занимаемся глубоким обучением.
Давайте детально проанализируем нашу нейронную сеть, изображенную на рисунке 1. В начале (слева направо) мы имеем три входных нейрона через которые мы получаем начальную информацию. Эту информацию мы подгружаем сами. Стрелочки обозначают веса нейронов, то есть какой вклад каждый нейрон делает в результирующий скрытый нейрон, которые следует за входными нейронами. Существует специальный алгоритм инициализации весов нейронов. Веса инициализируются случайным образом.
Давайте проанализируем, как происходит математический расчет первого нейрона в скрытом слое. Остальные нейроны в скрытом слое, считаются таким же образом. Проанализируем первый нейрон. К первому нейрону в скрытом слое идут стрелочки это веса со значениями 0.1, 0.7 и 0.3, каждый нейрон входного слоя имеет вес 0.5, 0.3 и 0.7. Чтобы рассчитать значение первого нейрона в скрытом слое, нам нужно просто умножить веса на значения нейрона каждой связи. То есть получается 0.5 * 0.1, 0.3 * 0.7 и 0.7 * 0.3. Полученные числа складываем и прибавляем смещение, по-английски, bias. Смещение нужно для того, чтобы избежать случаев, когда веса нулевые и нейрон выбывает из строя. Этот эффект называется мертвым нейроном, а проблема называется по английский dying neuron problem.
После этого применяется функция активации, которая равна полученному значению, если число положительное и нулю, если число отрицательное (см. Рисунок 2).
Несмотря на свою простоту ReLU считается одной из лучших функций активации.
Выходной нейрон считаем, использую ту же самую логику. Вычисления приведены на Рисунке 1. Только, очень важно, мы не применяем функцию активации к выходному нейрону.
Процесс, который мы описали, называется прямое распространение или Forward Propagation. Но нейронная сеть делает еще один очень важный шаг — это обратное распространение или Backward Propagation.
Для того, чтобы понять этот процесс, нужно разобрать в двух терминах это потеря и функция оптимизации.
Что такое потеря или loss – это разница между предсказанным значением в выходном нейроне и реальной информацией. Существует много функций потерь, но самая распространенная — это MSE (Mean Squared Error) или среднеквадратичная ошибка. Она вычисляется по следующей формуле:
$$MSE = \frac{1}{n}\sum\limits_{i=1}^n (Y_{i}-{\hat {Y_{i}}})^{2} $$
То есть мы получаем разницу между предсказанными данными и ошибкой, далее, очень грубо говоря, на число этой ошибки изменяются веса в нашей нейронной сети. Таким образом, получается, что нейронная сеть обучилась нашим данным. Процесс подстройки весов делает функция оптимизации.
Теперь мы понимаем как работает нейронная сеть. Что важно запомнить из этой статьи:
1. Прямое распространение в линейном слое — умножение весов на значения нейронов, суммирование полученных чисел, далее прибавление смещения или bias и, в конце, применение функции активации.
2. Обратное распространение — вычисление потерь с помощью MSE и оптимизации весов нейронной сети на основании функции потерь с использованием правила цепи и частных деривативов.