Люди не вникают в подробности, когда дело доходит до расчета градиентов во время обратного распространения с использованием векторного исчисления. Обычно есть некоторые упрощения, которые выполняют работу за счет глубокого концептуального понимания.

Предположим, у нас есть простая нейронная сеть, уравнения которой имеют вид:

Где (в порядке переменная: имя, форма):

x: входной вектор, m x 1

W: матрица весов, n x m

b: вектор смещения, n x 1

σ : функция активации, скажем, сигмоид.

a: вектор активации, n x 1

y: метка достоверности, n x 1

C: функция стоимости, 1 x 1

Это довольно простая модель, вот выражение grad(W)

Форма градиента (W) будет n x m

Большинство учебных пособий в Интернете используют приемы и ярлыки, чтобы найти отдельные элементы приведенного выше выражения, здесь мы собираемся использовать стандартные операции векторного исчисления для получения grad (W).

C — это функция, отображающая вектор a формы 1 x n в скалярное значение, поэтому dC/da будет вектором Якоби формы 1 x n

Что касается da/dz, то и a, и z являются векторами формы n x 1, поэтому это будет матрица формы n x n:

К dz/dW z подходит вектор формы n x 1, а W - матрица формы n x m, поэтому он переходит в тензор формы n x (n x m)

Мы знаем это,

Приведенный выше тензор содержит n матриц формы n x m, каждая из которых получена путем дифференцирования соответствующей строки вектора z по каждому элементу W.

Итак, теперь у нас есть:

dC/da формы 1 x n

da/dz формы n x n

dz/dW формы n x (n x m)

Мы должны умножить каждый из трех вышеупомянутых градиентов, чтобы получить grad(W), обратите внимание, что da/dz и dz/dW являются 2D и 3D соответственно. Как нам умножить 2D-матрицу на 3D-матрицу?

Ответ заключается в изоморфизме векторного пространства:

Следовательно, мы можем преобразовать нашу матрицу n x (n x m) в матрицу n x nm, и как только мы закончим с нашим умножением, мы изменим результирующую матрицу в n x m.

dC/da * da/dz * dz/dW = 1 x n * n x n * n x nm

=> 1 x nm => n x m

Это довольно простой пример, мы можем распространить идею на более сложные случаи. Вот замечательная книга по математике для машинного обучения, попробуйте: https://mml-book.github.io/