Часть 1 показывает подробности об искусственном узле. Теперь давайте разберемся в простой структуре нейронной сети и реализуем ее с помощью Python.

Простая нейронная сеть состоит из 3 слоев: входного слоя, скрытого слоя и выходного слоя.

Мы будем использовать следующие обозначения…

Выходы от каждого узла в прямом распространении

функция f() относится к функции активации (здесь мы используем сигмовидную функцию). На уровне 2 h1, h2, h3 являются выходными переменными, которые действуют как входные данные для узла на уровне 3. Подробности о сигмовидной функции можно найти в части 1.

Реализация функции прямой связи…

В приведенной выше программе мы использовали циклы for для вычислений. Ну, для небольшого количества входных значений подходят, что, если есть более 10 входных значений, т.е. 10 входных узлов и более 2 скрытых слоев?

Векторизация

Векторизация — это не что иное, как скалярное произведение между двумя числовыми матрицами. В приведенном выше коде мы использовали циклы for для умножения весов и входных значений. Это можно изменить, выполнив скалярное произведение между матрицей весов и входной матрицей.

Таким образом, приведенные выше уравнения можно заменить следующими

Сокращенное уравнение для трехслойной сети. W представляет собой матрицу весов, z представляет собой суммированный входной вектор, b представляет веса смещения, а h представляет выходные данные узла. Таким образом, мы можем обобщить все уравнения в более простой форме для лучшего понимания.

Понимание векторизации путем наблюдения за умножением матриц.

Таким образом, приведенный выше код можно упростить как

В части 3 мы обсудим функции потерь и стоимости, а также градиентный спуск.