Алгоритм увеличения точности нейронных сетей и его приложения
![]()
|
𝜗 max , которое во всех случаях не превышало 10 −5 . Для нейронных сетей в схожих обстоятельствах справедлива оценка 𝜗 max ∼ 10𝜗 median . Это означает, что для предыдущих работ 𝜗 max ∼ 10 −3 . Такое отклонение уже может оказаться слишком большим для некоторых приложений, ведь для нейронных се- тей 𝜗 нельзя уменьшить путём измельчения сетки. Что касается скорости решения, то здесь за счёт относительно большого шага, допустимого только при обучении с дополнительными производными, решение нейронной сетью впервые было получено за меньшее время, чем требовалось бы при использовании конечных разностей. Получить такое преимущество по времени одновременно с высокой точностью невозможно путём изменения архитектуры сети, настроек параметров обучения или сменой градиентного метода. Более того, точность поряд- ка 10 −4 характерна и для других применений многослойных нейронных сетей. В этой работе её удалось увеличить на два порядка за счет минимизации высших производных ошибки в совокупности с уменьшением сложности алгоритма за счет дифференцирования по случай- ным направлениям. Например, в пятимерном случае минимизация 𝐸 4 для двух случайных направлений требует вычисления 99 различных производных, тогда как полный набор про- изводных включал бы 462. Замедление в 4.6 раза уже не позволило бы обогнать конечные разности в пятимерном случае, с другой стороны, этот множитель растёт как куб размер- ности пространства. Отдельно стоит отметить успешное масштабирование всех параметров обучения на большие размерности. Так, шаг сетки и все параметры, указанные в Таблице 3 были подобраны и протестированы в двумерном случае, а обучение при больших размер- ностях показало практически идентичный результат. Также заметим, что нейронная сеть, полученная при решении пятимерного уравнения, занимает менее 6 · 10 5 байт, тогда как в случае конечных разностей массив значений функции занимает 6.4 · 10 11 байт. Выводы к Главе 3 Необходимым условием для использования большого шага сетки при решении диффе- ренциального уравнения с помощью нейронной сети является малость всевозможных част- ных производных невязки во всех точках сетки. В двумерном случае, рассмотренном в Главе 2, малость всех производных невязки вплоть до 3 порядка обеспечивалась их включением в минимизируемое выражение. Однако, при увеличении размерности пространства, коли- чество таких производных растет пропорционально кубу размерности, что приводит к до- полнительному усложнению задачи. Для уменьшения сложности алгоритма был разработан метод случайных направлений, суть которого заключается в том, что в каждой точке сетки минимизируется несколько производных по взаимно ортогональным направлениям, кото- рые случайно меняются от точки к точке. Численные эксперименты показали, что метод обеспечивает качество решения сравнимое с тренировкой всех производных, но при этом дополнительная сложность растет линейно по числу измерений. В совокупности с эффек- тивным алгоритмом обучения производных, описанным в следующей главе, это позволило 84 обогнать метод конечных разностей при решении краевой задачи для уравнения Пуассона внутри пятимерной сферы – время решения было уменьшено с 3000 секунд (оценка снизу) до 1280 секунд, требования по памяти снижены c 6.4 · 10 11 байт (оценка снизу) до 1 · 10 9 байт, а объем памяти для хранения решения уменьшен с 6.4 · 10 11 до 6 · 10 5 байт. Впервые решение с относительной точностью порядка 10 −6 было получено нейронной сетью быстрее, чем конечно-разностным методом. 85 Глава 4 Алгоритм дифференцирования 4.1. Прямое распространение В данном параграфе описывается вычисление производных выхода нейронной сети по компонентам входа 𝑥 𝛼 = (𝑥 1 , . . . , 𝑥 𝑁 ) . Идея, как и в случае классического прямого распро- странения, состоит в том, чтобы определить все необходимые величины на входном слое, а затем распространить до выходного. Выражения для распространения производных будут выведены из классических формул прямого распространения (1.2.2), (1.2.3), (1.2.4). Так как алгоритм должен быть реализован на GPU, сперва перепишем (1.2.2) в матричном виде. Для этого вместо входного вектора 𝑥 𝛼 рассмотрим набор из 𝑎 таких векторов, собранных матрицу 𝑥 𝛼𝑎 . Для первого скрытого слоя имеем 𝑧 𝛽𝑎 = 𝑡 𝛽 + ∑︁ 𝛼 𝑊 𝛽𝛼 𝑥 𝛼𝑎 = 𝑡 𝛽 + 𝑊 𝛽𝛼 × 𝑥 𝛼𝑎 , (4.1.1) где крестом обозначено матричное умножение. Под прибавлением 𝑡 𝛽 к матрице подразумева- ется прибавление к каждому столбцу. Теперь вперед по сети передается матрица активностей нейронов. Для второго скрытого слоя имеем 𝑧 𝛾𝑎 = 𝑡 𝛾 + 𝑊 𝛾𝛽 × 𝜎 (︀𝑧 𝛽𝑎 )︀ . (4.1.2) Для выходного слоя 𝑣 𝜔𝑎 = 𝑡 𝜔 + 𝑊 𝜔𝜓 × 𝜎 (︀𝑧 𝜓𝑎 )︀ . (4.1.3) Для общего случая можно записать рекуррентное соотношение, связывающее активности двух смежных слоёв 𝜅 и 𝜃 𝑧 𝜃𝑎 = 𝑡 𝜃 + 𝑊 𝜃𝜅 × 𝜎 (𝑧 𝜅𝑎 ) , (4.1.4) формулы (4.1.1), ( 4.1.2 ) и ( 4.1.3 ) являются его частными случаями. Перейдем к дифференцированию матриц активностей нейронов по компонентам входа (𝑥 1 , 𝑥 2 , . . . ) . Напомним, что для производных введено мульти-индексное обозначение, то есть они представляются набором целых неотрицательных чисел 𝑠 = (𝑠 1 , 𝑠 2 , . . . ) , где каждая компонента есть порядок дифференцирования по соответствующей переменной: 𝜕 𝑠 ≡ 𝜕 |𝑠| 𝜕𝑥 𝑠 1 1 𝜕𝑥 𝑠 2 2 , |𝑠| = ∑︁ 𝑠 𝑖 Процедура прямого распространения, наряду с активностями нейронов 𝑧 𝜅𝑎 , должна переда- вать от слоя к слою также производные этих активностей 𝜕 𝑠 𝑧 𝜅𝑎 для заранее определённого 86 набора мульти-индексов 𝑠 . Весь набор сперва нужно вычислить на входном слое, то есть найти 𝜕 𝑠 𝑥 𝛼𝑎 . Это достаточно просто – первая производная 𝑥 𝛼𝑎 по 𝑥 𝑖 это матрица, где на 𝑖− й строке стоят единицы, на на всех остальных нули 𝜕 𝜕𝑥 𝑖 𝑥 𝛼𝑎 = 𝛿 𝛼𝑖 Любая высшая производная есть нулевая матрица 𝜕 𝑠 𝑥 𝛼𝑎 = 0, |𝑠| ≥ 2. Итак, мы установили вид 𝜕 𝑠 𝑥 𝛼𝑎 . Чтобы определить формулы, с помощью которых этот набор матриц распространяется вперед по сети, применим 𝜕 𝑠 к выражению (4.1.4). Учитывая, что 𝑡 𝜃 и 𝑊 𝜃𝜅 – постоянные величины, имеем 𝜕 𝑠 𝑧 𝜃𝑎 = 𝜕 𝑠 [︀𝑡 𝜃 + 𝑊 𝜃𝜅 × 𝜎 (𝑧 𝜅𝑎 ) ]︀ = 𝑊 𝜃𝜅 × 𝜕 𝑠 𝜎 (𝑧 𝜅𝑎 ) . (4.1.5) Выражение 𝜕 𝑠 𝜎 (𝑧 𝜅𝑎 ) раскрывается по обычным правилам дифференцирования. Первая про- изводная имеет вид 𝜕𝑧 𝜃𝑎 𝜕𝑥 1 = 𝑊 𝜃𝜅 × [︂ 𝜕𝑧 𝜅𝑎 𝜕𝑥 1 · 𝜎 ′ (𝑧 𝜅𝑎 ) ]︂ , (4.1.6) разумеется, 𝑥 1 можно заменить на любую другую компоненту вектора входа. Знаком « · » обозначено поэлементное умножение матриц. Рекурсивно применяя (4.1.6), можно дойти до выходного слоя и вычислить 𝜕𝑣 𝜔𝑎 /𝜕𝑥 1 . Вторая производная в общем случае имеет вид 𝜕 2 𝑧 𝜃𝑎 𝜕𝑥 1 𝜕𝑥 2 = 𝜕 𝜕𝑥 1 𝑊 𝜃𝜅 × [𝑧 𝜅𝑎 2 · 𝜎 ′ (𝑧 𝜅𝑎 )] = = 𝑊 𝜃𝜅 × [𝑧 𝜅𝑎 1 · 𝑧 𝜅𝑎 2 · 𝜎 ′′ (𝑧 𝜅𝑎 ) + 𝑧 𝜅𝑎 12 · 𝜎 ′ (𝑧 𝜅𝑎 )] . (4.1.7) Для удобства, сократим обозначения следующим образом 𝜕𝑧 𝜃𝑎 𝜕𝑥 1 ≡ 𝑧 𝜃𝑎 𝑥 1 ≡ 𝑧 𝜃𝑎 1 Теперь формулы (4.1.6) и (4.1.7) имеют вид: 𝑧 𝜃𝑎 1 = 𝑊 𝜃𝜅 × [𝑧 𝜅𝑎 1 · 𝜎 ′ (𝑧 𝜅𝑎 )] , 𝑧 𝜃𝑎 12 = 𝑊 𝜃𝜅 × [𝑧 𝜅𝑎 1 · 𝑧 𝜅𝑎 2 · 𝜎 ′′ (𝑧 𝜅𝑎 ) + 𝑧 𝜅𝑎 12 · 𝜎 ′ (𝑧 𝜅𝑎 )] . В случае совпадения переменных, вторую производную можно упростить 𝑧 𝜃𝑎 11 = 𝑊 𝜃𝜅 × [︁ [𝑧 𝜅𝑎 1 ] 2 · 𝜎 ′′ (𝑧 𝜅𝑎 ) + 𝑧 𝜅𝑎 11 · 𝜎 ′ (𝑧 𝜅𝑎 ) ]︁ , 87 однако, удобнее поступить следующим образом. Выражение (4.1.7) имеет вид 𝑧 𝜃𝑎 12 = 𝐹 (𝑧 𝜅𝑎 1 , 𝑧 𝜅𝑎 2 , 𝑧 𝜅𝑎 12 ) , (4.1.8) но если вычислить 𝐹 (𝑧 1 , 𝑧 1 , 𝑧 11 ) , то результатом будет 𝑧 𝜃𝑎 11 . Таким образом, одной формулы для разных переменных достаточно для вычисления всех производных заданного поряд- ка. Нужно только единообразно располагать аргументы 𝐹 . Для краткости, в последующих формулах не будем писать аргумент у 𝜎 и использовать знаки « · », подразумевая, что все операции в квадратных скобках выполняются поэлементно. Так, (4.1.6), (4.1.7) имеют вид: 𝑧 𝜃𝑎 1 = 𝑊 𝜃𝜅 × [𝑧 𝜅𝑎 1 ] , 𝑧 𝜃𝑎 12 = 𝑊 𝜃𝜅 × [𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 2 𝜎 ′′ + 𝑧 𝜅𝑎 12 𝜎 ′ ] . Третьи и четвертые производные имеют вид: 𝑧 𝜃𝑎 123 = 𝑊 𝜃𝜅 × [︁ 𝜎 ′′′ 𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 3 + 𝜎 ′′ (𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 3 + 𝑧 𝜅𝑎 13 𝑧 𝜅𝑎 2 + 𝑧 𝜅𝑎 23 𝑧 𝜅𝑎 1 ) + 𝜎 ′ 𝑧 𝜅𝑎 123 ]︁ , (4.1.9) 𝑧 𝜃𝑎 1234 = 𝑊 𝜃𝜅 × [︁ 𝜎 𝐼𝑉 𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 3 𝑧 𝜅𝑎 4 + 𝜎 ′′′ (︁ 𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 3 𝑧 𝜅𝑎 4 + 𝑧 𝜅𝑎 13 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 4 + 𝑧 𝜅𝑎 14 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 3 + 𝑧 𝜅𝑎 23 𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 4 + 𝑧 𝜅𝑎 24 𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 3 + 𝑧 𝜅𝑎 34 𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 2 )︁ + 𝜎 ′′ (︁ 𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 234 + 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 134 + 𝑧 𝜅𝑎 3 𝑧 𝜅𝑎 124 + 𝑧 𝜅𝑎 4 𝑧 𝜅𝑎 123 + +𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 34 + 𝑧 𝜅𝑎 13 𝑧 𝜅𝑎 24 + 𝑧 𝜅𝑎 14 𝑧 𝜅𝑎 23 )︁ + 𝜎 ′ 𝑧 𝜅𝑎 1234 ]︁ (4.1.10) Ради универсальности формул мы предположили, что все переменные дифференцирования различны. В некоторых случаях удобно привести подобные слагаемые, чтобы избавиться от лишних арифметических операций. Выражения для пятых производных, необходимые для решения задач из Главы 2, после упрощения имеют вид: 𝑧 𝜃𝑎 11111 = 𝑊 𝜃𝜅 × [︁ 𝜎 𝑉 [𝑧 𝜅𝑎 1 ] 5 + 𝜎 𝐼𝑉 10 [𝑧 𝜅𝑎 1 ] 3 𝑧 𝜅𝑎 11 + 𝜎 ′′′ (︁ 15𝑧 𝜅𝑎 1 [𝑧 𝜅𝑎 11 ] 2 + 10 [𝑧 𝜅𝑎 1 ] 2 𝑧 𝜅𝑎 111 )︁ + + 𝜎 ′′ (10𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 111 + 5𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 1111 ) + 𝜎 ′ 𝑧 𝜅𝑎 11111 ]︁ , (4.1.11) 𝑧 𝜃𝑎 11112 = 𝑊 𝜃𝜅 × [︁ 𝜎 𝑉 [𝑧 𝜅𝑎 1 ] 4 𝑧 𝜅𝑎 2 + 𝜎 𝐼𝑉 (︁ 4 [𝑧 𝜅𝑎 1 ] 3 𝑧 𝜅𝑎 12 + 6 [𝑧 𝜅𝑎 1 ] 2 𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 2 )︁ + + 𝜎 ′′′ (︁ 6 [𝑧 𝜅𝑎 1 ] 2 𝑧 𝜅𝑎 112 + 3 [𝑧 𝜅𝑎 11 ] 2 𝑧 𝜅𝑎 2 + 12𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 12 + 4𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 111 )︁ + + 𝜎 ′′ (︁ 4𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 1112 + 6𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 112 + 4𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 111 + 𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 1111 )︁ + 𝜎 ′ 𝑧 𝜅𝑎 11112 ]︁ , (4.1.12) 88 𝑧 𝜃𝑎 11122 = 𝑊 𝜃𝜅 × [︁ 𝜎 𝑉 [𝑧 𝜅𝑎 1 ] 3 [𝑧 𝜅𝑎 2 ] 2 + 𝜎 𝐼𝑉 (︁ 3𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 11 [𝑧 𝜅𝑎 2 ] 2 + 6 [𝑧 𝜅𝑎 1 ] 2 𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 2 + + [𝑧 𝜅𝑎 1 ] 3 𝑧 𝜅𝑎 22 )︁ + 𝜎 ′′′ (︁ 3𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 22 + 3 [𝑧 𝜅𝑎 1 ] 2 𝑧 𝜅𝑎 122 + 6𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 112 𝑧 𝜅𝑎 2 + + 6𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 2 + 𝑧 𝜅𝑎 111 [𝑧 𝜅𝑎 2 ] 2 + 6𝑧 𝜅𝑎 1 [𝑧 𝜅𝑎 12 ] 2 )︁ + 𝜎 ′′ (︁ 𝑧 𝜅𝑎 22 𝑧 𝜅𝑎 111 + + 6𝑧 𝜅𝑎 12 𝑧 𝜅𝑎 112 + 3𝑧 𝜅𝑎 11 𝑧 𝜅𝑎 122 + 2𝑧 𝜅𝑎 2 𝑧 𝜅𝑎 1112 + 3𝑧 𝜅𝑎 1 𝑧 𝜅𝑎 1122 )︁ + 𝜎 ′ 𝑧 𝜅𝑎 11122 ]︁ (4.1.13) Для установления общих закономерностей подобных выражений сформулируем вспомога- тельное утверждение 1 Лемма 2. Выражение для производной на последующем слое 𝜕 𝑠 𝑧 𝜃𝑎 будет зависеть от двух производных на предыдущем слое 𝜕 𝑝 𝑧 𝜅𝑎 и 𝜕 𝑞 𝑧 𝜅𝑎 если, и только если 𝜕 𝑠 = 𝜕 𝑝 𝜕 𝑞 Доказательство. Нам понадобится комбинаторный вид формулы Фаа-ди-Бруно [125] 𝜕 𝑛 𝜕𝑥 1 . . . 𝜕𝑥 𝑛 𝜎 (𝑧) = ∑︁ 𝜋∈𝑃 𝜎 (|𝜋|) (𝑧) ∏︁ 𝐵∈𝜋 𝜕 |𝐵| 𝑧 ∏︀ 𝑗∈𝐵 𝜕𝑥 𝑗 (4.1.14) В левой части стоит производная сложной функции 𝜎 (𝑧) где 𝑧 зависит от 𝑥 1 , . . . , 𝑥 𝑛 (так как матрица 𝑧 𝜃𝑎 дифференцируются поэлементно, её индексы можно опустить). Все пере- менные, по которым идёт дифференцирование считаются различными. В правой части: 𝜋 есть разбиение множества 𝐷 = {1, . . . , 𝑛} 𝜋 = {𝐵 𝑘 } : 𝐵 𝑖 ⋂︁ 𝐵 𝑗 = ∅, ⋃︁ 𝑘 𝐵 𝑘 = 𝐷. 𝑃 есть множество всех возможных разбиений 𝑃 = {𝜋 𝑙 } . Под знаком суммы 𝜋 пробегает через множество 𝑃 . Под знаком произведения 𝐵 пробегает через все блоки разбиения 𝜋 Величина |𝜋| обозначает количество блоков в разбиении 𝜋 , а |𝐵| – количество элементов в соответствующем блоке. Сперва рассмотрим случай, когда все компоненты мульти-индекса 𝑠 не превосходят 1. Входы сети переставим так, чтобы все ненулевые компоненты 𝑠 оказались вначале, а за 𝑛 возьмем их число, теперь левая часть формулы (4.1.14) совпадает с 𝜕 𝑠 𝜎 (𝑧) Рассмотрим подмножество разбиений 𝑃 2 = {𝜋 𝑘 } , состоящих из двух блоков, то есть 𝜋 𝑘 = {𝐵 𝑘,1 , 𝐵 𝑘,2 } , 𝐵 𝑘,1 ∪ 𝐵 𝑘,2 = 𝐷 . Очевидно, что для любого блока 𝐵 из любого разбиения 𝜋 найдется блок 𝐵 ′ (возможно пустой), который дополняет его до множества 𝐷 ∀𝜋, 𝐵 ∈ 𝜋 ∃ , 𝐵 ′ : {𝐵, 𝐵 ′ } = ˜ 𝜋 ∈ 𝑃 2 Каждому блоку 𝐵 соответствует мульти-индекс 𝑝 (возможно нулевой) у которого на 𝑗 ∈ 𝐵 местах стоят единицы: 𝐵 → 𝜕 𝑝 . Если блок 𝐵 ′ дополняет 𝐵 до 𝐷 , и 𝐵 ′ → 𝜕 𝑞 то очевидно, что 𝑝+𝑞 = 𝑠 . Согласно формуле (4.1.14), разбиение {𝐵, 𝐵 ′ } будет порождать в правой части 1 оно достаточно очевидно, тем не менее в процессе доказательства мы введем полезные для дальнейшего изложения конструкции 89 слагаемое с произведением 𝜕 |𝐵| 𝑧 ∏︀ 𝑗∈𝐵 𝜕𝑥 𝑗 𝜕 |𝐵 ′ | 𝑧 ∏︀ 𝑖∈𝐵 ′ 𝜕𝑥 𝑖 = 𝜕 𝑝 𝑧 · 𝜕 𝑞 𝑧, (4.1.15) которое и означает зависимость 𝜕 𝑠 𝜎 (𝑧) от 𝜕 𝑝 𝑧 и 𝜕 𝑞 𝑧 при условии 𝑠 = 𝑝 + 𝑞 . Так как лю- бому мульти-индексу можно поставить в соответствие ровно один блок, а для любых 𝑝 и 𝑞 удовлетворяющих 𝑝 + 𝑞 = 𝑠 найдутся блоки 𝐵 и 𝐵 ′ , то верно и обратное. Случай, когда компоненты 𝑠 больше 1, сводится к уже рассмотренному. Действительно, так как в формулы для производных по разным переменным можно подставлять и одинаковые, то достаточно вместо каждой 𝑖 -й переменной с 𝑠 𝑖 > 1 ввести ровно 𝑠 𝑖 вспомогательных переменных, а затем в полученных формулах заменить их все на исходную. Мульти-индексы в таком вспо- могательном наборе переменных будем обозначать тильдой. У ˜ 𝑠 по построению на первых |𝑠| местах стоят единицы. В силу однозначности соответствия ˜ 𝑝 → 𝑝 , ˜ 𝑞 → 𝑞 из соотношения ˜ 𝑝 + ˜ 𝑞 = ˜ 𝑠 следует 𝑝 + 𝑞 = 𝑠 . С другой стороны, так как каждому 𝑠 соответствует хотя бы один ˜ 𝑠 , то для любых троек 𝑝 + 𝑞 = 𝑠 можно найти вспомогательные мульти-индексы так, чтобы ˜ 𝑝 + ˜ 𝑞 = ˜ 𝑠 С помощью Леммы 2 можно определить, какие производные следует распространять вперед по сети. Пусть локальная ошибка содержит набор производных, задаваемых мульти- индексами 𝑠 [1] , . . . 𝑠 [𝑘] : 𝑒 𝑎 = 𝑒 (︁ 𝑥 𝛼𝑎 , 𝑣 𝜔𝑎 , 𝜕 𝑠[1] 𝑣 𝜔𝑎 , . . . , 𝜕 𝑠[𝑘] 𝑣 𝜔𝑎 )︁ Процедуру прямого распространения нужно будет проводить для всех мульти-индексов 𝑝 [𝑗] для которых ∃𝑘 : 𝑝 [𝑗] − 𝑠 [𝑘] ≥ 0 4.1.1. Случайные направления. Модификация начальных условий, которая потребу- ется для метода случайных направлений, изложенного в Пункте 3.2.3, довольно проста. Все необходимые производные, которые нужно получить на выходе, должны быть вычислены от матрицы входа 𝑥 𝛼𝑎 . Согласно выражению (3.1.1), первая производная вектора входа 𝑥 𝛼 по направлению ⃗𝑗 есть просто столбец вектора ⃗𝑗 в базисе 𝑥 𝛼 , а все высшие производные равны нулю. Матрица 𝜕𝑥 𝛼𝑎 /𝜕⃗𝑗 будет состоять из одинаковых столбцов ⃗𝑗 , но так как проце- дура прямого распространения работает независимо на разных столбцах, то их все можно выбрать разными. Для каждой точки сетки будет создано 𝐿 случайных ортонормированных векторов, каждый из которых будет записан в соответствующую матрицу 𝜕𝑥 𝛼𝑎 /𝜕⃗𝑗 𝑙 4.2. Обратное распространение После того как прямой проход выполнен, можно вычислить локальную ошибку, зави- сящую от производных выхода 𝑒 𝑎 = 𝑒 (︁ 𝑥 𝛼𝑎 , 𝑣 𝜔𝑎 , 𝜕 𝑠[1] 𝑣 𝜔𝑎 , . . . , 𝜕 𝑠[𝑘] 𝑣 𝜔𝑎 )︁ , 90 а глобальную ошибку задать как сумму локальных 𝐸 (︁ 𝑥 𝛼𝑎 , 𝑣 𝜔𝑎 , 𝜕 𝑠[1] 𝑣 𝜔𝑎 , . . . , 𝜕 𝑠[𝑘] 𝑣 𝜔𝑎 )︁ = ∑︁ 𝑒 𝑎 Далее, пользуясь явным видом 𝐸 , нужно вычислить её градиент по всем выходным матрицам 𝜕𝐸 𝜕 (𝜕 𝑠 𝑣 𝜔𝑎 ) Он имеет индексы 𝑠 , 𝜔 и 𝑎 , а значит аналогично разбивается на 𝑘 матриц размера |𝜔| × |𝑎| Для обратного распространения 𝐸 нужно записать замену переменного |