На этом шаге мы рассмотрим организацию вычислений для второго слоя.
Далее мы должны заняться вторым слоем, в котором потребуется выполнить некоторые вычисления. Нам предстоит определить входной сигнал для каждого узла в этом слое. Помните сигмоиду
1 y = --------- ? 1 + e-x
Для начала сосредоточим внимание на узле 1 слоя 2. С ним связаны оба узла первого, входного слоя. Исходные значения на этих входных узлах равны 1,0 и 0,5. Связи первого узла назначен весовой коэффициент 0,9, связи второго - 0,3. Поэтому сглаженный входной сигнал вычисляется с помощью следующего выражения:
х = (выход первого узла * вес связи) + + (выход второго узла * вес связи) х = (1,0 * 0,9) + (0,5 * 0,3) х = 0, 9 + 0,15 х = 1,05
Без сглаживания сигналов мы просто получили бы их сумму 1,0 + 0,5, но мы этого не хотим. Именно с весовыми коэффициентами будет связан процесс обучения нейронной сети по мере того, как они будут итеративно уточняться для получения все лучшего и лучшего результата.
Итак, мы уже имеем значение х=1,05 для комбинированного сглаженного входного сигнала первого узла второго слоя и теперь располагаем всеми необходимыми данными, чтобы рассчитать для этого узла выходной сигнал с помощью функции активации
1 y = --------- . 1 + e-x
Отличная работа! Мы рассчитали фактический выходной сигнал для одного из двух выходных узлов сети.
Повторим те же вычисления для оставшегося узла - узла 2 второго слоя, т.е. вновь вычислим сглаженный входной сигнал с помощью следующего выражения:
х = (выход первого узла * вес связи) + + (выход второго узла * вес связи) х = (1,0 * 0,2) + (0,5 * 0,8) х = 0,2 + 0,4 х = 0,6
Располагая значением х, можно рассчитать выходной сигнал узла с помощью функции активации: у = 1 / (1 + 0,5488) =1 / 1,5488. Таким образом, у=0,6457.
Рассчитанные нами выходные сигналы сети представлены на приведенной ниже диаграмме.
Как видите, чтобы получить всего лишь два выходных сигнала для весьма простой нейронной сети, нам пришлось хорошо потрудиться. Понятно, что не вызывает восторга необходимость проведения аналогичных расчетов вручную в случае более крупных сетей! К счастью, для выполнения подобных вычислений идеально подходят компьютеры, которые могут быстро справиться с этой работой, избавив вас от лишних хлопот.
Однако даже с учетом нет большого желания выписывать соответствующие программные инструкции для сети, насчитывающей более двух слоев, каждый из которых может включать 4, 8 или даже 100 узлов. Стоит ли говорить о том, насколько это утомительное занятие, к тому же оно чревато большим количеством ошибок и опечаток, что вообще может сделать выполнение расчетов практически невозможным.
Но нам повезло. Математики разработали чрезвычайно компактный способ записи операций того типа, которые приходится выполнять для вычисления выходного сигнала нейронной сети, даже если она содержит множество слоев и узлов. Эта компактность благоприятна не только для людей, которые выписывают или читают соответствующие формулы, но и для компьютеров, поскольку программные инструкции получаются более короткими и выполняются намного быстрее.
В этом компактном подходе предполагается использование матриц, к рассмотрению которых мы сейчас и приступим.
На следующем шаге мы рассмотрим умножение матриц.