Главная страница

Алгоритм увеличения точности нейронных сетей и его приложения


Скачать 3.63 Mb.
НазваниеАлгоритм увеличения точности нейронных сетей и его приложения
Дата24.06.2022
Размер3.63 Mb.
Формат файлаpdf
Имя файлаdiss_avrutskiy.pdf
ТипДиссертация
#613262
страница5 из 13
1   2   3   4   5   6   7   8   9   ...   13
10
−3
∼ 10
−4
. При достижении этой величины ни измельчение сетки, ни увеличение числа нейронов, ни чис- ла шагов обучения не способны существенно улучшить результат. Таким образом, ситуация оказалась хуже чем в конечно-разностном случае, где ошибка была уменьшаема. Для зада- чи аппроксимации ситуация аналогична – мы можем задать значения функции на сетке с машинной точностью, тогда как нейронную сеть не удастся настолько же хорошо обучить повторять требуемые значения. Обстоятельство недостаточной точности сводит на нет боль- шинство преимуществ нейронных сетей в малоразмерных задачах. Конечно же, для размер- ностей
𝑁 > 10
представление функций с помощью значений на сетке попросту невозможно,
и в таких ситуациях многослойные персептроны выходят победителями.
Для того, чтобы решение уравнений с помощью глубоких нейронных сетей имело больше практических преимуществ, требовался метод увеличения их точности. Это также

35
позволило бы сделать нейронные сети более удобным инструментом для численного моде- лирования. Такой способ был найден в 2015 году в результате численного эксперимента по верификации кода. Изложим кратко его предпосылки.
После появления языка программирования CUDA
1
С/C++ в 2007 году, и первых сов- местимых видеокарт в 2008 году, доступность параллельных вычислений значительно воз- росла. Изначально созданные для геометрических расчетов, которые сводятся к матричным операциям над трехмерными векторами, видеокарты отлично подходили для реализации матричных вычислений любой размерности. С другой стороны, матричные операции состав- ляют основную часть алгоритма обратного распространения ошибки. Примеры C/C++ кода,
входящие в состав первого релиза CUDA, содержали реализацию матричных умножений с внушительным уровнем производительности порядка
70%
от теоретически возможной. Так как средняя видеокарта того времени NVIDIA 9600 GT согласно спецификациям была спо- собна выполнять
209 · 10 9
операций с плавающей точкой в секунду, а средний CPU
2
Intel
Core 2 Duo E7500 лишь
30 · 10 9
(при условии использования всех ядер), применение GPU
для обучения нейронных сетей выглядело чрезвычайно перспективным
3
. В то же время не существовало готовых программных комплексов, которые могли бы целиком реализовать вычислительное преимущество GPU. Те редкие реализации, что были доступны, имели эф- фективность гораздо ниже 70%. Это обстоятельство заставило автора написать CUDA C код,
реализующий вычисление градиента ошибки для нейронной сети с произвольным числом слоев, фактически исполняющий формулы (1.2.14), (1.2.15), (1.2.16), (1.2.17). Персептроны,
обученные с помощью этого кода, составляли главный результат магистерской диссерта- ции, защищенной автором в 2012 году. Они решали задачу о быстрой оценке аэродинами- ческих характеристик компоновки самолёта в трехмерном случае. Работа была выполнена под руководством Е. А. Дорофеева и являлась продолжением ряда схожих задач [88–94], в которых использовались персептроны с размерностью входа порядка 100. Для аппроксима- ции распределения давления по трехмерному крылу требовалось порядка 700 входов, и этот вычислительный разрыв был преодолен с помощью GPU. Также стоит отметить, что про- изводительность широкодоступных прикладных пакетов сравнялась с уровнем авторского кода лишь в 2015 году.
После 2012 года значительно возрос интерес к глубоким нейронным сетям. В то же время существовала область деятельности, связанная с решением уравнений в частных про- изводных при помощи нейронных сетей. Основополагающие статьи [23,95–97] по этой теме были написаны в девяностых годах двадцатого века, и в силу отсутствия дешевых параллель- ных вычислений все используемые сети имели один скрытый слой и весьма небольшое число нейронов. В сложившейся ситуации казалось перспективным заново повторить их резуль- таты, с использованием значительно больших вычислительных ресурсов. Однако, в статьях по этой теме не содержалось алгоритмов, пригодных для вычисления невязки уравнения и
1
Compute Unified Device Architecture
2
Central Processing Unit
3
производительность GPU и по сей день примерно на порядок выше, чем CPU

36
её градиентной минимизации для сетей произвольной глубины. Были описаны лишь част- ные случаи, например вычисление всех производных для одного скрытого слоя [23], либо только первых производных для произвольного числа слоёв [98]. В некоторых статьях [97]
использовались стандартные способы численной минимизации, крайне неэффективные для нейронных сетей
4
. Разумеется, существовали и алгоритмы автоматического дифференциро- вания [86], а позже появились и программы на их основе [99], которые позволяли вычислять необходимые градиенты. Однако, их реализация для CUDA отсутствовала, а в силу общ- ности алгоритма, её адаптация под GPU требовала бы значительно больше затрат, нежели решение более узкой задачи о дифференцировании многослойного персептрона. В резуль- тате, автором был сформулирован алгоритм
5
[100], позволяющий вычислять производные выхода персептрона по входам, что позволяло «подставлять» нейронные сети в дифферен- циальные уравнения, а также находить градиент этих производных по весам, что позволяло минимизировать невязку уравнений. Матричный вид алгоритма позволил реализовать его на GPU с максимальной эффективностью [101]. Таким образом, было получено техническое преимущество перед существующими работами, где для решения уравнений использовались крайне небольшие сети. Теперь результаты применения глубоких сетей могли быть тщатель- но исследованы.
Первая версия алгоритма, который был реализован на GPU, позволяла вычислять и минимизировать производные от персептрона до второго порядка, так как решать уравнения выше второго порядка не планировалось. На этой же версии был впервые замечен эффект от обучения производных. Суть его состоит в том, что ошибка после обучения уменьшалась примерно на порядок, если к минимизируемому выражению
(𝑣 − 𝑓 )
2
добавить члены вида
(︂ 𝜕𝑣
𝜕𝑥

𝜕𝑓
𝜕𝑥
)︂
2
Была реализована попытка получить аналогичный результат при минимизации невязки уравнения. Так как максимальный порядок был равен двум, была выбрана краевая зада- ча для уравнения первого порядка:
(︂ 𝜕𝑢
𝜕𝑥
1
)︂
2
+
(︂ 𝜕𝑢
𝜕𝑥
2
)︂
2
= 1,
Γ : 𝑥
2 1
+ 𝑥
2 2
< 1,
𝑢|
𝜕Γ
= 1.
Точное решение которой есть конус
𝑢 =
√︁
𝑥
2 1
+ 𝑥
2 2
,
4
из личной переписки автору было известно о многочасовом решении двумерной краевой задачи при мини- мизации ошибки с помощью matlab. Получение новых результатов в таких условиях весьма затруднительно.
5
подробно изложенный в Главе 4

37
однако, из-за его особенности вблизи нуля, область решения была модифицирована
Γ : 0.1 < 𝑥
2 1
+ 𝑥
2 2
< 1.
Вместо «классической» невязки
𝑒 = 𝑉
2
=
[︃
(︂ 𝜕𝑢
𝜕𝑥
1
)︂
2
+
(︂ 𝜕𝑢
𝜕𝑥
2
)︂
2
− 1
]︃
2
,
минимизировалось выражение
𝑒 = 𝑉
2
+ (𝜕𝑉 /𝜕𝑥
1
)
2
+ (𝜕𝑉 /𝜕𝑥
2
)
2
В результате этого конечное значение
𝑉
действительно уменьшалось приблизительно на по- рядок, что соответствовало эффекту от добавления к ошибке
𝑒 = (𝑣 − 𝑓 )
2
членов вида
(𝜕𝑣/𝜕𝑥 − 𝜕𝑓 /𝜕𝑥)
2
. Однако, в данном случае, этот метод не требовал никакой дополнитель- ной информации о решении.
2.2. Аппроксимация функций
Далее следует описание численных экспериментов, демонстрирующих вклад от вклю- чения производных в процесс градиентного обучения многослойных персептронов. Алгоритм применим для задач аппроксимации, однако имеет наибольшую практическую ценность при решении уравнений в частных производных (Параграф 2.3).
2.2.1. Обозначения производных. Для обозначения производных воспользуемся мульти- индексной записью [102]. Так как порядок переменных, по которым ведется дифференциро- вание, зафиксирован:
(𝑥
1
, 𝑥
2
. . . )
, то сами производные можно обозначать с помощью набора целых неотрицательных чисел
𝑠 = (𝑠
1
, 𝑠
2
, . . . ) ,
каждое из которых есть порядок дифференцирования по соответствующей переменной
𝜕
𝑠

𝜕
|𝑠|
𝜕𝑥
𝑠
1 1
𝜕𝑥
𝑠
2 2
Здесь
|𝑠| ≡
∑︀ 𝑠
𝑖
. Мультииндексы
𝑠
можно складывать друг с другом поэлементно, что будет соответствовать произведению операторов
𝜕
𝑠
𝜕
𝑞
= 𝜕
𝑠+𝑞
Аналогично можно ввести оператор
𝜕
𝑠−𝑞
если все компоненты
𝑠 − 𝑞
неотрицательны.

38
-1.0
-0.5 0.0 0.5 1.0
-1.0
-0.5 0.0 0.5 1.0
x
1
x
2
-1.0
-0.5 0
0.5 1.0 1.5
Рис. 2.2.1. Двумерная целевая функция.
2.2.2. Двумерная функция. Для двумерной аппроксимации сгенерируем
𝑓
с помо- щью ряда Фурье до десятых гармоник:
𝑓 =
10
∑︁
𝑛=1 10
∑︁
𝑘=1
𝑞
1
𝑛𝑘
𝑛 · 𝑘
sin 𝑛𝑥
1
sin 𝑘𝑥
2
+
10
∑︁
𝑛=1 10
∑︁
𝑘=1
𝑞
2
𝑛𝑘
𝑛 · 𝑘
sin 𝑛𝑥
1
cos 𝑘𝑥
2
+
10
∑︁
𝑛=1 10
∑︁
𝑘=1
𝑞
3
𝑛𝑘
𝑛 · 𝑘
cos 𝑛𝑥
1
sin 𝑘𝑥
2
+
10
∑︁
𝑛=1 10
∑︁
𝑘=1
𝑞
4
𝑛𝑘
𝑛 · 𝑘
cos 𝑛𝑥
1
cos 𝑘𝑥
2
Здесь коэффициенты
𝑞
𝑖
𝑛𝑘
равномерно распределены на отрезке
[−1, 1]
. Конкретная реализа- ция
𝑓
изображена на Рисунке 2.2.1. Множество для аппроксимации
Γ
зададим как квадрат
Γ = [−1, 1]
2
и заметим, что он не совпадает с периодом функции. Рассмотрим сеть
𝑣(𝑥
1
, 𝑥
2
)
с конфигурацией
2
*
, 128, 128, 128, 128, 1
*
Инициализируем её веса с помощью равномерного распределения согласно [3,64]. В качестве обучающего множества создадим равномерную сетку, а шаг её подберем так, чтобы коэф- фициент переобучения
𝑟
имел порядок единицы. Для данной архитектуры это выполняется при
𝜆 = 1/13
, а сетка содержит 729 точек. Классическая локальная и глобальная ошибка имеют вид:
𝑒
0
=
1
𝐷
2
[𝑓 ]
(𝑣 − 𝑓 )
2
,
(2.2.1)

39
𝐸
0
=
729
∑︁
𝑎=1
𝑒
0
(⃗
𝑥
𝑎
) .
Здесь введена явная нормировка на дисперсию значений
𝑓
𝐷
2
[𝑓 ] =
1
𝑀 − 1 729
∑︁
𝑎=1
(︀𝑓 (⃗𝑥
𝑎
) − ¯
𝑓
)︀
2
Выполним 1000 итераций минимизации
𝐸
0
алгоритмом RProp с параметрами
𝜂
+
= 1.2
,
𝜂

=
0.5
,
𝛿𝑊 (0) = 2 · 10
−4
, минимальный шаг отсутствует. Результирующее среднеквадратичное отклонение на тренировочном множестве
𝜖
трен
0
=
√︀1/729 ∑︀ 𝑒
0
, будет порядка
2.5%
. Для тестирования сгенерируем равномерную сетку из 24025 точек и получим
𝜖
тест
0
∼ 3.5%
2.2.2.1. Обучение производных. С помощью алгоритма, способного обучать производные нейронной сети
6
, можно аналогично минимизировать отклонение любой производной
𝜕
𝑠
𝑣
от соответствующей производной целевой функции
7
𝜕
𝑠
𝑓
. Минимизируемая ошибка в таком случае будет иметь вид
𝑒 =
1
𝐷
2
[𝜕
𝑠
𝑓 ]
(𝜕
𝑠
𝑣 − 𝜕
𝑠
𝑓 )
2
,
𝐸 =
729
∑︁
𝑎=1
𝑒
𝑠
(⃗
𝑥
𝑎
) .
После 1000 итераций RProp, среднеквадратичное отклонение производной на тренировочном множестве
𝜖
трен
=
√︀1/729 ∑︀ 𝑒
𝑠
аналогично равно
2.5%
, что было установлено для
|𝑠| ≤ 6
На тестовом множестве
𝜖
тест
∼ 3.5%
. Рассмотрим теперь более сложную ошибку, состоящую из квадрата
𝑣 − 𝑓
и квадратов всех производных этой разности до 3 порядка включительно
(10 слагаемых). Обозначим такую ошибку индексом «3»
𝑒
3
=
∑︁
|𝑠|≤3 1
𝐷
2
[𝜕
𝑠
𝑓 ]
(𝜕
𝑠
𝑣 − 𝜕
𝑠
𝑓 )
2
,
(2.2.2)
𝐸
3
=
729
∑︁
𝑎=1
𝑒
3
(⃗
𝑥
𝑎
) .
Мультииндекс
𝑠
в выражении 2.2.2 пробегает значения
𝑠 = (0, 0) , (1, 0) , (0, 1) , (2, 0) , (1, 1) , (0, 2) , (3, 0) , (2, 1) , (1, 2) , (0, 3) .
Разумеется, для классической ошибки (2.2.1) нормировочный множитель был введён для удобства
8
, однако теперь различные производные могут иметь разный порядок величины,
а значит для корректной минимизации их суммы нормировка необходима. Действительно,
6
он подробно описан в Главе 4 7
разумеется, можно повторять и любое другую функцию
8
RProp использует только направление градиента, а не его величину

40
|𝑠|
0 1
2 3
трен 0.07% 0.18% 0.77% 1.9%
тест 0.06% 0.17% 0.61% 2.8%
Таблица 1. Характерные значения среднеквадратичных отклонений
𝜕
𝑠
𝑣
от
𝜕
𝑠
𝑓
после 1000 эпох RProp, усреднённые по порядкам.
𝑘
0 1
2 3
4 5
𝜖
трен
0 2.5% 0.9% 0.09% 0.07% 0.33% 0.51%
𝜖
тест
0 3.5% 0.8% 0.09% 0.06% 0.26% 0.41%
Таблица 2. Точность аппроксимации значений после 1000 эпох RProp при обучении всех производных до порядка
𝑘
включительно.
слагаемое в
𝑓
, пропорциональное sin 10𝑥
1
и имеет порядок единицы, но его
𝑘
-я производная по
𝑥
1
имеет порядок
10
𝑘
. Можно было растянуть область аппроксимации так, чтобы все производные были порядка единицы, однако нормировка на дисперсию более универсальна.
Попытаемся предсказать результат минимизации выражения (2.2.2). По отдельности каж- дый член суммы по прошествии 1000 эпох был равен
2.5%
. Если минимизируются 10 таких слагаемых, то среднеквадратичное отклонение можно оценить как
𝜖
трен
3


10 · 2.5% ≃ 8%
Однако, такая оценка оказывается неверна. Реальная величина
𝜖
трен
3
оказывается равной
4%
(
5.6%
на тестовом множестве). Это означает, что ошибка каждой отдельной производной уменьшилась. Их характерные значения приведены в Таблице 1.
Как можно видеть, среднеквадратичные отклонения распределены не равномерно, а возрастают с порядком производных. Ошибка для самих значений теперь в 35 раз меньше,
чем при обычном обучении. Точность значений и производных до второго порядка на тесто- вом множестве выше, чем на тренировочном (такую ситуацию можно назвать «отрицатель- ным переобучением»). Третьи производные, однако, менее точны и суммарная минимизиру- емая величина на тестовом множестве больше, чем на тренировочном, таким образом общие представления о переобучении сетей [103] не нарушены. Однако, этот результат противоре- чит работе [104], где тренировка производных напротив, приводила к более сильному пере- обучению. В целях верификации, упрощенный эксперимент был повторён К.А. Рыбаковым,
его исходный код и результаты доступны по адресу https://github.com/Avrutskiy/dneural.
Они подтверждают как увеличение точности, так и эффект «отрицательного переобучения».
Разумеется, сравнивать минимизацию
𝐸
3
и
𝐸
0
напрямую некорректно, однако подобная раз- ница достаточно редко встречается при изменении каких-либо параметров обучения, поэтому была поставлена задача об изучении влияния производных на точность значений.
В первую очередь, требовалось подобрать методику использования производных так,
чтобы увеличение точности было наибольшим. Для этого была составлена Таблица 2, в ко- торой указана точность аппроксимации значений после 1000 эпох обучения RProp с ошибкой
𝐸
𝑘
, содержащей все возможные производные до
𝑘
-го порядка включительно.

41
Как можно видеть, включение первых и вторых производных увеличивает точность значений, однако при добавлении членов выше третьего порядка эта точность начинает уменьшаться. Эффект от использования третьих производных сходит на нет, если посчитать общее количество арифметических операций
9
и вместо минимизации
𝐸
3
увеличить число итераций минимизации
𝐸
2
. Чтобы понять причины ухудшения точности, рассмотрим обу- чение с производными до четвертого порядка. Локальная ошибка
𝑒
4
содержит 15 слагае- мых, и только одно напрямую связано с точностью значений. Более того, согласно Таблице
2, относительные величины слагаемых сильно увеличиваются с порядком
|𝑠|
. Таким обра- зом, причины по которым относительная ошибка значений может увеличиваться достаточно прозрачны – при градиентной минимизации суммы алгоритм стремится сперва уменьшать большие слагаемые. Чтобы избежать этого эффекта, можно попытаться искусственно умень- шить нормировочные коэффициенты для каждой производной выше 3 порядка. Однако, для выбранной цели такой подход не работает – даже при уменьшении их до нуля итоговая точ- ность значений плавно повышается с 0.28% до 0.07%, то есть всё равно находится где-то между третьим и четвертым порядком. Однако, было обнаружено, что если по прошествии некоторого числа шагов обнулить нормировочные коэффициенты при старших производных,
то точность всех младших членов при дальнейшем обучении значительно повышается.
2.2.2.2. Обучение с исключением. В результате численных экспериментов была вырабо- тана следующая процедура – выбирается максимальный порядок производных
𝑘
и начина- ется обучение с ошибкой
𝐸
𝑘
. После
𝑇
шагов оно завершается, и начинается обучение с
𝐸
𝑘−1
Процесс продолжается аналогичным образом и заканчивается тренировкой
𝐸
0
. Число
𝑇
для всех этапов обучения одинаково, а множество паттернов не изменяется. Процедуру цели- ком будем называть «обучением с исключением порядка
𝑘
», либо просто «обучением
𝑘
-го порядка». Плавное уменьшение нормировочных коэффициентов при высших производных на протяжении некоторого числа итераций работает несколько хуже, чем резкое переклю- чение порядка. После перехода с
𝐸
𝑘
на
𝐸
𝑘−1
, следует уменьшать
𝛿𝑊 (0)
, иначе на первых итерациях обучения с
𝐸
𝑘−1
возмущение весов оказывается слишком сильным и негативно влияет на результат обучения. На практике это выглядит как рост
𝜖
0
при первых
∼ 5
ите- рациях, на уменьшение которого до первоначального значения требуется более 50 итераций.
Рекомендуется выбирать
𝛿𝑊 (0)
так, чтобы сеть начинала улучшать ошибку
𝜖
0
уже через через 15-25 итераций. В рассматриваемом нами примере для этого достаточно установить
𝛿𝑊 (0) = 10
−5
. Стоит отметить, что обучение в “обратном” порядке, то есть сначала с
𝐸
0
,
затем
𝐸
1
и так далее, имеет ровно противоположный эффект – при включении дополнитель- ных производных, ошибка значений
𝜖
0
начинает резко возрастать, а затем выходит на своё
характерное значение для нового порядка обучения.
Сравним друг с другом различные порядки обучения с исключением, однако, теперь попытаемся сделать это корректным образом. С одной стороны, тренировка производных требует большего количества вычислительных ресурсов, с другой – сами производные несут дополнительную информацию о функции. Первый фактор можно учесть, пропорционально
9
в первом приближении оно пропорционально числу обучаемых производных, точный подсчет произведён в
Главе 4

42
𝑘
0 1
2 3
4 5
⟨𝜖
0

2.3 · 10
−3 2 · 10
−4 3 · 10
−5 1 · 10
−5 5.2 · 10
−6 2.2 · 10
−6
прирост
-
11.5 6.6 3
1.9 2.4
⟨𝑟⟩
1.08 1.01 1.05 1.01 1.05 1.03
𝑀
12321 3481 2601 1521 729 729
𝑇
107000*
26500*
10500*
5200*
2900 1750
Таблица 3. Аппроксимация двумерной функции, сравнение обучения с ис- ключением разных порядков. Графа «прирост» показывает увеличение точно- сти относительно предыдущего порядка обучения.
увеличив количество эпох для обучения с меньшим порядком. Количество арифметических операций, необходимых для обучения каждой дополнительной производной, приблизительно равно количеству операций для обучения значений. Так, одна эпоха для ошибки
𝐸
3
, при ко- торой минимизируется сумма из 9 производных и самих значений, потребует приблизительно в 10 раз больше ресурсов чем одна эпоха
𝐸
0
. Точный подсчет произведен в Главе 4, отметим лишь, что эта оценка отличается от него менее чем на
6%
. Что касается дополнительной информации о целевой функции
𝑓
, которую несут производные, то оценить их вклад можно следующим образом. Первые производные можно вычислить через конечные разности ес- ли известны значения функции в двух близких точках. Вторые – если известны значения в трех, и так далее. Таким образом, задание значений и первых производных по
𝑥
1
и
𝑥
2
в
𝑀
точках эквивалентно заданию функции в
3𝑀
точках. Так как добавление близких точек не улучшит результата классического обучения, вместо этого следует уменьшить шаг сетки так,
чтобы утроить количество точек. Схожим образом можно уравнять количество паттернов при минимизации
𝐸
𝑘
с разными
𝑘
. Однако, с практической точки зрения, количество точек имеет смысл увеличивать лишь до исчезновения переобучения. Действительно, в Главе 1
было показано, что дальнейшее их добавление не влияет на результирующую точность.
Итак, для корректного сравнения нужно скомпенсировать как количество операций,
так и плотность точек. Учтём эти оба фактора наименее «выгодным» для больших
𝑘
об- разом: скомпенсируем число итераций так, как если бы число паттернов не увеличилось, и увеличим число паттернов так, чтобы переобучения не происходило. Случайную инициали- зацию и обучение для каждого
𝑘
повторим 25 раз. Усреднённые результаты приведены в
Таблице 3. Можно видеть, что для подавления переобучения при уменьшении
𝑘
требуется добавлять всё больше точек, этот эффект будет рассмотрен в Параграфе 2.4. Несмотря на то, последний этап каждого обучения с исключением – это минимизация классической ошиб- ки, причем на сетке, которая гарантированно приводит к переобучению, его тем не менее не наблюдается. Это происходит из-за выбора начального шага при переключении порядков –
для
𝛿𝑊 (0) = 10
−5
, нейронная сеть, которой в начале обучения имела
𝑟 ∼ 1
, будет и дальше сохранять это свойство. Отметим также чрезмерно большое количество эпох для
𝑘 < 3
. В
действительности, ошибка существенно изменялась только на первых
∼ 3000
шагах обуче- ния, однако для корректности сравнения обучение продолжалось. В результате мы видим,

43
что точность, полученная с помощью высших порядков фактически является недостижи- мой для классического обучения (Рисунок 2.2.2). Для всех практических применений можно порекомендовать 1000–3000 эпох вне зависимости от порядка обучения. Можно видеть, что первые и вторые производные дают наибольший прирост точности, суммарно повышая её
примерно на два порядка, а 3, 4 и 5 производные вместе приносят ещё один дополнительный порядок, увеличивая суммарную точность аппроксимации в 1000 раз относительно класси- ческого обучения. Этот эффект в значительной степени зависит от количества весов в сети.
Если количество нейронов в каждом скрытом слое уменьшить со 128 до 64, а затем до 32,
это уменьшит количество настраиваемых параметров с 21057 до 12737, а затем до 5409. При этом среднеквадратичная ошибка для порядка
𝑘 = 5
увеличится с
2.2 · 10
−6
до
2.4 · 10
−5
, а затем до
2.4 · 10
−4
. Для
𝑘 = 2
она увеличится с
3.7 · 10
−5
до
1 · 10
−4
, а затем до
5 · 10
−4
. Для классического обучения (
𝑘 = 0
) точность практически не будет меняться:
2.3·10
−3
,
3.0·10
−3
и
5.3 · 10
−3
соответственно. Так как время обучения пропорционально числу настраиваемых параметров, в случае классического обучения нет никакого смысла использовать большие сети. Однако оказалось, что при тренировке производных большая сеть может на несколько порядков обогнать сеть малого размера.
Становится частично понятно, почему такой на первый взгляд не очень сложно по- лучаемый эффект не был замечен ранее – с «избыточно большими» нейронными сетями удобно работать только при наличии достаточных вычислительных ресурсов, которые ранее не были доступны. Однако, это не целиком объясняет ситуацию – например, в работе [104]
при включении производных в процесс обучения был получен негативный эффект – воз- никали высокочастотные шумы, удалению которых была посвящена большая часть статьи.
Скорее всего, это связано с конкретным выбором алгоритма обучения и его параметров. В
связи с этим стоит отметить, что используемый в данной работе RProp в своей классиче- ской формулировке [69] содержит минимальный шаг
𝛿𝑊
min
= 10
−6
. При обучении больших персептронов его наличие приводит к крайне негативным последствиям. Например, для сети с 50000 параметрами для каждого из которых
|𝜕𝐸/𝜕𝑊 | ∼ 1
,
𝐸
при обучении будет хао- тично меняться с дисперсией порядка
10
−4
. При этом точности
∼ 10
−6
достичь не удастся,
что подтверждается экспериментом, и указывает на то, что найденный способ повышения точности может быть чувствителен к параметрам градиентного алгоритма.
2.2.3. Автокодировщик. Многослойный персептрон с
𝑁
1
входами и
𝑁
2
выходами,
𝑁
1
< 𝑁
2
, задает параметризацию
𝑁
1
-мерной области в
𝑁
2
-мерном пространстве. В слу- чае
𝑁
1
> 𝑁
2
персептрон проецирует
𝑁
1
-мерное пространство на
𝑁
2
-мерное. Пусть множе- ство точек
𝑋
в
𝑁
1
-мерном пространстве целиком лежит в области
𝒮
размерности
𝑁
2
. Если построить персептрон так, чтобы в его конфигурации имелся «узкий» слой с
𝑁
2
нейронами:
𝑁
1
, . . . , 𝑁
2
, . . . , 𝑁
1
и обучить его на множестве
𝑋
так, чтобы
𝑣 (𝑋) = 𝑋,
(2.2.3)

44
-6
-5
-4
-3
-2 0.0 0.2 0.4 0.6 0.8 1.0
log
10
ϵ
0 5
4 3
2 1
0
Рис. 2.2.2. Аппроксимация двумерной зависимости. Зависимость вероятности получения среднеквадратичной ошибки меньше
𝜖
0
при обучении с исключением разных порядков. Масштаб по оси абсцисс - логарифмический.

3

5

2

5

3
Рис. 2.2.3. Персептрон с узким слоем, проецирующий вектор из
R
3
на
R
2
а затем восстанавливающий в
R
3
то по построению, персептрон сначала будет проецировать
𝑋
на множество размерности
𝑁
2
, а затем создавать
𝑁
2
-мерную поверхность в пространстве размерности
𝑁
1
, на которой лежит множество
𝑋
. Общее количество скрытых слоёв может быть выбрано произвольно,
при этом число нейронов в них должно быть больше или равно
𝑁
2
. Схематичное изображение персептрона с минимально возможным числом слоёв для
𝑁
1
= 3
,
𝑁
2
= 2
приведено на
Рисунке 2.2.3. При достаточном количестве точек и достаточной точности соотношения 2.2.3,
функция, задаваемая частью нейронной сети
𝑁
2
, . . . , 𝑁
1
будет близка к параметризации
𝒮
– с её помощью можно создавать новые точки, принадле- жащие этому множеству. Нейронную сеть целиком можно рассматривать как фильтр, отсе- кающий шум от точек, близких к
𝒮
[4,14]. Довольно содержательный результат можно полу- чить, обучая автокодировщик на множестве схожих изображений, например на фотографиях

45
определенного животного, а затем генерировать с его помощью новые
10
изображения [106].
Схожим образом могут быть сгенерированы и более сложные данные [107].
Попытаемся построить автокодировщик для кривой в трехмерном пространстве

𝑓 = (𝑓
1
, 𝑓
2
, 𝑓
3
) = (cos 𝑡
,
sin𝑡, 𝑡/𝜋) , 𝑡 ∈ [0, 2𝜋] .
Численные эксперименты показали, что данная задача намного проще, чем рассмотренная в предыдущем параграфе, и что для неё достаточно нейронной сети с конфигурацией
3
*
, 64, 64, 1
*
, 64, 64, 3
*
Слой в середине сделан линейным на основании работы [15]. Чтобы удовлетворить соотно- шению (2.2.3), следует минимизировать ошибку
𝑒
0
=
3
∑︁
𝑖=1
(𝑓
𝑖
− 𝑣
𝑖
)
2
Для обучения с исключением следует продифференцировать разность
𝑓
𝑖
−𝑣
𝑖
. Ранее производ- ные вычислялись по компонентам входа сети. Однако теперь отдельные входы на обучающем множестве не меняются независимо, и разность

𝑓 (𝑥
1
+ 𝑑𝑥
1
, 𝑥
2
, 𝑥
3
) − ⃗
𝑓 (𝑥
1
, 𝑥
2
, 𝑥
3
) ,
которая входит в определение
𝜕 ⃗
𝑓 /𝜕𝑥
1
, содержит точку
𝑥
1
+ 𝑑𝑥
1
, 𝑥
2
, 𝑥
3
, почти никогда не лежащую на рассматриваемой кривой. В данной задаче допустимы только такие прираще- ния координат (
𝑑𝑥
1
,
𝑑𝑥
2
,
𝑑𝑥
3
), которые не выводят точку со спирали. Очевидно
11
, что все они образуют касательное пространство к
𝒮
в рассматриваемой точке. В случае кривой это пространство одномерно, и любая допустимая производная с точностью до постоянного множителя равна производной по параметру кривой
𝑡
. Так как дифференцирование теперь ведется только по одной переменной, мультииндекс
𝑠
превращается в число
𝜕
𝑠

𝑓 =
𝜕
𝑠
𝜕𝑡
𝑠
(sin 𝑡
,- cos𝑡, 1/𝜋) .
(2.2.4)
При любом движении по кривой точка должна отображаться нейронной сетью без изменений,
а значит все производные

𝑣
должны быть равны производным

𝑓
𝜕
𝑠

𝑣 = 𝜕
𝑠

𝑓 .
10
наиболее реалистичная генерация изображений, однако, имеет несколько другой алгоритм [105]
11
при условии дифференцируемости ⃗𝑓

46
𝑘
0 1
2 3
4 5
⟨𝜖
0

6.6 · 10
−4 4.1 · 10
−4 3.7 · 10
−5 2.2 · 10
−5 6.6 · 10
−6 4.7 · 10
−6
прирост

1.5 11 1.7 3.4 1.3
⟨𝑟⟩
1.05 1.02 1.01 1.01 1.00 1.00
𝑀
128 128 128 128 64 64
𝑇
29000*
9500*
4600*
2600*
1700 1200
Таблица 4. Автокодировщик для трехмерной кривой. Сравнение точности компоненты
𝑣
1
при обучении с исключением разных порядков.
Таким образом, локальную ошибку для обучения с исключением можно записать как
𝑒
𝑘
=
𝑘
∑︁
𝑠=0 3
∑︁
𝑖=1 1
𝐷
2
[𝜕
𝑠
𝑓
𝑖
]
(︂ 𝜕
𝑠
𝑓
𝑖
𝜕𝑡
𝑠

𝜕
𝑠
𝑣
𝑖
𝜕𝑡
𝑠
)︂
2
Тренировочное множество сгенерируем с помощью (2.2.4) подставляя
𝑡 ∈ [0, 2𝜋]
с шагом
2𝜋/63
. Число эпох для обучения пятого порядка выберем равным 1200, а для меньших по- рядков так, чтобы суммарное количество арифметических операций совпадало
12
. Для
𝑘 < 4
наблюдалось переобучение, и количество точек было увеличено с 64 до 128, однако,
𝑇
не пересчитывалось. Случайная инициализация и обучение для каждого
𝑘
повторялось 25 раз.
Усреднённые результаты для компоненты
𝑣
1
представлены в Таблице 4, результаты для
𝑣
2
и
𝑣
3
аналогичны.
Как и в случае аппроксимации, удалось значительно повысить точность обучения.
Однако стоит отметить, что вычисление производных с помощью набора точек, принадле- жащих множеству неизвестной размерности, есть ещё более сложная задача чем дифферен- цирование в случае задачи аппроксимации. Разумеется, первые производные по некоторому касательному направлению можно вычислить, имея лишь две близкие точки – достаточно поделить их разность на расстояние между ними. Однако, для вычисления старших произ- водных требуется больше точек, которые должны быть правильно упорядочены, и процесс их генерации не вполне понятен. Тем не менее, данный пример имеет практическую ценность из-за того, что в нём удалось получить нейронную сеть, определённую на точках трехмерно- го пространства, которая точно повторяет нужные значения на одномерном подмножестве этого пространства. Для этого потребовалось обучать производные по касательным к этому подмножеству. Схожая процедура может быть применима для тренировки граничных усло- вий, что позволит создать более удобную альтернативу методу замены функции (1.2.21).
2.2.4. Проблема вычисления производных. Несмотря на то, что использование про- изводных при обучении позволяет повысить точность аппроксимации на несколько порядков,
в общем случае дифференцирование целевой функции может быть связано со значительными трудностями. Сперва, разумеется, следует ответить на вопрос – является ли целевая функция
12
подробный подсчёт приведён в Главе 4

47
дифференцируемой. Если является, а также известна не только в точках обучающего множе- ства, но и в малой их окрестности, то производные можно вычислить с помощью конечных разностей. Если не является, то гладкая нейронная сеть, аппроксимирующая эту функцию с произвольной точностью всё равно существует, однако, чтобы вычислить её производные придется так или иначе сглаживать целевое отображение.
Рассмотрим задачу классификации изображений. Если выходы нейронной сети рас- сматривать как вероятности принадлежности к каждому из классов, то требование их глад- кости вполне обоснованно. Для каждого изображения класс известен, однако вероятности в малых окрестностях изображений не вполне определены. Попытки вычисления производных от классификаторов были предприняты в работах [108,109]. В [109] делается предположение о том, что производные по интенсивности отдельных пикселей равны нулю. Это обосновыва- ется тем, что малые изменения отдельных пикселей не должны влиять на класс изображения,
а следовательно, и на выход сети вообще. В работе [108] для каждого изображения опреде- ляются допустимые деформации, не изменяющие его класса, а их главная линейная часть может быть использована как направление, производная по которому должна быть равна нулю. Однако ни один из этих подходов не приводит к ощутимому росту точности клас- сификатора. Численные эксперименты, проведенные в рамках этой диссертации показали,
что даже для малоразмерных случаев обучение производных вдоль поверхностей уровня (то есть таких направлений
⃗𝑗
что
𝜕𝑣/𝜕⃗𝑗 = 0
) не приводит к увеличению точности. Аналогично не является эффективным обучение только лишь производных по
𝑥
1
при аппроксимации функции
𝑓 (𝑥
1
, 𝑥
2
)
Возможно есть и более существенные причины, по которым в [109] не было обна- ружено существенных положительных эффектов от использования производных. Скорее всего, подход этой работы не упрощает задачу построения классификатора, а лишь напро- тив, усложняет. Рассмотрим параметрическую деформацию некоторого изображения

𝑥 (𝑡)
,
𝑡 ∈ [𝑡
0
, 𝑡
1
]
. Пусть она непрерывно переводит его в изображение из другого класса, которых для простоты будет всего два. Имеем:

𝑣 (⃗
𝑥 (𝑡
0
)) = (1, 0) ,

𝑣 (⃗
𝑥 (𝑡
1
)) = (0, 1) .
При этом компоненты выхода можно рассматривать как функции одного переменного (
𝑣
1
(𝑡)
,
𝑣
2
(𝑡)
), тогда значение
𝑣
1
будут непрерывно изменяться от 0 до 1. Наиболее «простым»
13
поведением будет уменьшение, близкое к линейному. С другой стороны, производная
𝑣
1
по
𝑡
может быть выражена через производные выхода
𝑣
1
по интенсивностям отдельных пикселей
𝑥
𝛼
𝜕𝑣
1
𝜕𝑡
=
∑︁
𝛼
𝜕𝑣
1
𝜕𝑥
𝛼
𝜕𝑥
𝛼
𝜕𝑡
Если мы потребуем равенства нулю производных по интенсивностям пикселей, то график
𝑣
1
(𝑡)
вместо того чтобы быть более пологим, будет слабо меняться вблизи
𝑡
0
и
𝑡
1
, а значит
13
требующим наименьшего числа точек для правильного описания функции

48
должен будет быстрее изменится между этими точками. Следовательно, для правильного описания ландшафта функции классификатора потребуется больше точек, то есть задача усложнится. Тем не менее, крайне трудно установить каким образом следует задавать рас- сматриваемые производные. По всей видимости это потребует анализа поведения класси- фикатора не только в малой окрестности каждого изображения, но и на всём пространстве изображений, которое имеет размерность
𝑁 ∼ 1000 2.3. Решение уравнений
Разработанный алгоритм повышения точности требует знания старших производных аппроксимируемой функции. Их вычисление почти всегда является нетривиальной задачей,
однако, в случае решения уравнений в частных производных, алгоритм не требует никакой дополнительной информации. Действительно, так как при решении уравнений минимизиру- ется невязка, которая почти всегда имеет простой вид, то все необходимые величины могут быть получены прямым её дифференцированием, и практическая значимость алгоритма ста- новится наиболее очевидна.
2.3.1. Нелинейное уравнение Пуассона. Рассмотрим краевую задачу из предыду- щей главы:
Δ𝑢 − 𝑢
2

3 2
𝑢
3
= 0,
(2.3.1)
Γ : 𝑥
2 1
+ 𝑥
2 2
≤ 1,
𝑢|
𝜕Γ
= −2.
(2.3.2)
Её точное решение есть
𝑢
a
=
4 3 − 𝑥
2 1
− 𝑥
2 2
(2.3.3)
Замена
𝑢 = 𝑤 ·
(︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ − 2
(2.3.4)
сводит выражение для невязки
𝑉
к
(︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ Δ𝑤 − 4𝑥
𝜕𝑤
𝜕𝑥
− 4𝑦
𝜕𝑤
𝜕𝑦
− 4𝑤

(︀𝑤 · (︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ − 2)︀
2

3 2
(︀𝑤 · (︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ − 2)︀
3
= 𝑉.
(2.3.5)
В данном случае локальная ошибка «нулевого» порядка
𝑒
0
= 𝑉
2
содержит вторые произ- водные сети, тем не менее
𝑉
можно продифференцировать, возвести в квадрат и составить локальную ошибку первого порядка
𝑒
1
= 𝑉
2
+
(︂ 𝜕𝑉
𝜕𝑥
1
)︂
2
+
(︂ 𝜕𝑉
𝜕𝑥
2
)︂
2
(2.3.6)

49
Для второго порядка можно записать
𝑒
2
= 𝑉
2
+
(︂ 𝜕𝑉
𝜕𝑥
1
)︂
2
+
(︂ 𝜕𝑉
𝜕𝑥
2
)︂
2
+
(︂ 𝜕
2
𝑉
𝜕𝑥
2 1
)︂
2
+
(︂
𝜕
2
𝑉
𝜕𝑥
1
𝜕𝑥
2
)︂
2
+
(︂ 𝜕
2
𝑉
𝜕𝑥
2 2
)︂
2
(2.3.7)
Ошибка третьего порядка записывается аналогично. Результат подстановки
𝑉
в подобные выражения выглядит достаточно громоздко, поэтому для эффективной работы автор поль- зовался символьной системой вычислений Mathematica. На основе выражения для
𝑉
она генерировала CUDA C код, позволяющий минимизировать ошибки вида
(2.3.6)
,
(2.3.7)
для нейронной сети. Подробное описание процесса приведено в Главе 4.
Обсудим, какие последствия несёт использование производных невязки. Выражение
𝑒
2
содержит производные от
𝑤
до четвертого порядка включительно. Во-первых, минимальный класс гладкости
𝑤
становится
C
4
а не
C
2
. Однако, ранее мы уже предполагали бесконечную гладкость
𝑤
. Повышение гладкости также касается функций
𝜑
и
𝜌
из замены
(1.2.21)
, а также порядка согласования начальных и граничных условий. Во-вторых, ландшафт мини- мизируемой ошибки
𝑒
2
может значительно отличаться от
𝑒
0
, а значит может потребоваться более мелкая сетка. В-третьих,
𝑉
и её производные могут иметь разный порядок величины, и это потребует введения нормировки, общий случай которой изложен в Подпункте 4.4.4.4 (для рассматриваемого в данном параграфе уравнения нормировка не требуется). В-четвертых,
увеличивается время расчета – при том же числе точек, количество арифметических опе- раций возрастает пропорционально числу дополнительных производных
𝑤
. Так, для
𝑒
0
их нужно 4, а для
𝑒
2
потребуется 14. Однако, несмотря на все вышеописанные детали, добав- ление тривиальных следствий уравнения
𝑉 = 0
, получаемых дифференцированием, значи- тельно повышает точность градиентного обучения нейронной сети. Перейдем к результатам применения этого подхода.
Уравнение (2.3.5) было решено с помощью обучения с исключением. Максимальный порядок дифференцирования, который был доступен, равнялся пяти, а значит от невяз- ки уравнения второго порядка можно было взять ещё 3 дополнительных производных. Все параметры обучения остались такими же, как и для двумерной аппроксимации. Так как в случае решения уравнений никакой информации извне не требуется ни для добавления новых точек, ни для дифференцирования невязки, то чтобы сравнивать разные порядки обучения с исключением, достаточно лишь уравновесить количество арифметических опе- раций
14
. При зафиксированном количестве операций, для каждого порядка остается выбрать количество эпох и точек. Эксперименты показали, что для обучения с исключением порядка
𝑘 = 3
достаточно сетки из 157 точек и 1000 итераций. Для остальных порядков выбирается максимальное
𝜆
при котором
𝑟 < 1.2
, а
𝑇
определяется из условия равенства количества арифметических операций. С помощью численных экспериментов было так же подтвержде- но, что любое переобучение негативно влияет на конечный результат
15
, и условие
𝑟 < 1.2
оправдано. Для каждого порядка
𝑘
случайная инициализация и обучение были выполнены
14
подробный подсчет приведён в Параграфе 4.3 15
в случае аппроксимации это очевидно, однако здесь речь идет о переобучении невязки

50
𝑘
0 1
2 3
⟨𝜖⟩
3 · 10
−3 5.4 · 10
−4 1.8 · 10
−4 9.3 · 10
−5
прирост

5.5 3
2
⟨𝜗⟩
2.8 · 10
−5 9 · 10
−6 3.6 · 10
−6 2.1 · 10
−6
прирост

3.1 2.5 1.7
⟨𝑟⟩
1.05 1.1 1.1 1.07
𝑀
1210 352 233 157
𝜆
0.052 0.1 0.125 0.15
𝑇
1400 1600 1200 1000
Таблица 5. Решение краевой задачи для нелинейного уравнения Пуассона,
обучение с исключением. Указан «прирост» малости невязки и точности реше- ния.
25 раз, а результаты усреднены и представлены в Таблице 5. Можно видеть, что количество эпох теперь лежит в интервале 1000–3000, рекомендованном в предыдущем параграфе. В
отличии от задачи аппроксимации, минимизируемая величина
𝑉
2
лишь косвенно связана с точностью численного решения, для которой здесь введено обозначение
𝜗
. Она равна средне- квадратичному от разности
𝑢 − 𝑢
a
, где
𝑢
взято из выражения (2.3.4), в котором
𝑤
заменено на персептрон
𝑣 (𝑥
1
, 𝑥
2
)
, то есть
𝜗 =
√︁
1/𝑀
∑︀ (𝑢 − 𝑢
a
)
2
. Стоит отметить, что точность при решении стандартным способом вполне приемлема
𝜗 ∼ 2.8 · 10
−5
, однако повысить её
обычными методами: измельчением сетки, изменением параметров сети или выбором друго- го градиентного алгоритма попросту невозможно. Применение же обучения с исключением исправляет этот недостаток и позволяет уменьшить
𝜗
в 13 раз при том-же количестве ариф- метических вычислений. Заметим также, что эта точность подходит близко к минимально возможному значению, связанному с наличием численного округления
𝜗
32бит
∼ 0.36 · 10
−6
Примечателен и другой факт – шаг сетки, при котором не происходит переобучения, увели- чился в 2.88 раза. В двумерном случае это приводит к уменьшению числа точек в 7.7 раз,
однако для больших размерностей количество точек пропорционально
𝑁
1/𝜆
, и подобное пре- имущество может оказаться даже более важным, чем увеличение точности. Забегая вперед,
скажем, что так и происходит – в Главе 3 этот эффект использован, чтобы обогнать метод конечных разностей при решении многомерных краевых задач.
2.3.2. Уравнение Бюргерса. Рассмотрим нелинейное уравнение
𝜕𝑢
𝜕𝑡
+ 𝑢
𝜕𝑢
𝜕𝑥
=
1
R
𝜕
2
𝑢
𝜕𝑥
2
(2.3.8)
Оно часто используется для первичной верификации численных схем, предназначенных для решения уравнений движения сплошной среды [110, 111]. При
R ≫ 1
в решении могут образовываться области с большими градиентами. Для специального начального условия
𝑢


𝑡=0
= −
2𝑥
1 + 𝑥
2
(2.3.9)

51
t=1
t=0.5
t=0
-0.6 -0.4 -0.2 0.0 0.2 0.4 0.6
-1.0
-0.5 0.0 0.5 1.0
x u
a
Рис. 2.3.1. Решение уравнения Бюргерса с начальным условием 2.3.9 для раз- личных моментов времени,
R = 60
и чётных
𝑅
точное решение может быть записано в виде рациональной дроби [112]
𝑢
B
(𝑡, 𝑥) = −
2
R
∑︀
R/2
𝑛=0
[︁
𝑥
2𝑛−1 2
𝑛−1
(𝑛−1)!(2𝑛−1)!!
∑︀
R/2
𝑚=𝑛
(2𝑚)!
𝑚!(R/2−𝑚)!(𝑚−𝑛)!
(︀
𝑡
R
)︀
𝑚−𝑛
]︁
∑︀
R/2
𝑛=0
[︁
𝑥
2𝑛
2
𝑛
𝑛!(2𝑛−1)!!
∑︀
R/2
𝑚=𝑛
(2𝑚)!
𝑚!(R/2−𝑚)!(𝑚−𝑛)!
(︀
𝑡
R
)︀
𝑚−𝑛
]︁
(2.3.10)
При
R ≫ 1
максимальный градиент формируется вблизи точки
𝑥 = 0
при
𝑡 = 1
. В её
окрестности справедливы оценки [112]
𝜕𝑢
B
𝜕𝑥
≃ −
R
2
,
𝜕
3
𝑢
B
𝜕𝑥
3
≃ −
R
3 4
Зафиксируем
R = 60
. Решение в различные моменты времени изображено на Рисунке 2.3.1.
Для численного решения выберем область
𝑡 ∈ [0, 1]
,
𝑥 ∈ [−0.65, 0.65]
. Для этого потребу- ются два дополнительных граничных условия:
𝑢|
𝑥=0.65
= 𝑢
B
(𝑡, 0.65) ,
(2.3.11)
𝑢|
𝑥=−0.65
= 𝑢
B
(𝑡, −0.65) .
(2.3.12)
Наличие большого градиента в относительно малой области приводит к необходимости по- строения неравномерной сетки, локальный шаг которой будет определяться скоростью из- менения
𝑢
. Зададимся целью получить решение с относительной точностью
∼ 10
−6
. Необхо- димую плотность точек попытаемся оценить на основе результатов решения краевой задачи
{2.3.1, 2.3.2}, точное решение которой имеет вид
𝑢
a
= 4/
(︀3 − 𝑥
2 1
− 𝑥
2 2
)︀ .
В процессе обучения с исключением 3 порядка использовались производные вплоть до пятого порядка. Их абсолютные величины растут с номером порядка, однако, если область решения

52
Γ : 𝑥
2 1
+ 𝑥
2 2
< 1
растянуть вдвое
𝑥
1
→ 𝑥
1
/2
,
𝑥
2
→ 𝑥
2
/2
, то производные вплоть до пятых станут иметь порядок единицы. Численное решение с относительной точностью
𝜗 ∼ 10
−6
было получено с помощью сетки с шагом
𝜆 = 0.15
, который при таком масштабировании увеличится до
𝜆 ∼ 1/3
. Предположим, что соотношение между шагом, обеспечивающим заданную точность и масштабом, на котором производные изменяются на величину порядка единицы, имеет универсальный характер. Если это так, то с помощью вычисления произ- водных решения в точке можно найти такое локальное растяжение координат, при котором их значения в данной окрестности станут порядка единицы. Шаг сетки в такой системе координат следует выбрать
𝜆 = 1/3
, а шаг в исходной системе получится обратным мас- штабированием рассматриваемой окрестности. Эта процедура может быть использована для адаптивного построения сетки в процессе обучения, если рассматривать производные нейро- сетевой аппроксимации на данной итерации.
Создание эффективных адаптивных алгоритмов построения сеток для нейросетевого метода представляет собой отдельную задачу [46]. Мы же в первую очередь хотим подтвер- дить гипотезу о масштабируемости шага, а во вторую – проверить применимость метода обучения с исключением для более сложной ситуации. Поэтому для упрощения задачи по- пытаемся получить решение на сетке, построенной на основе информации о точном решении.
Процедуру построения сетки можно упростить, если учесть, что для
R = 60
максимальные производные выражения
𝑢
B
по
𝑥
сильно превосходят производные по
𝑡
. В качестве началь- ной точки выберем
(𝑡
0
, 𝑥
0
) = (0, −0.65)
, в которой вычислим производные
𝑢
B
по
𝑥
вплоть до пятых. Следующую точку достроим как
(𝑡
0
, 𝑥
0
+ Δ𝑥)
где
Δ𝑥 =
1 3
max
𝑘≤5 1
𝑘
√︀𝜕
𝑘
𝑢
B
/𝜕𝑥
𝑘
То есть шаг по
𝑥
выберем так, чтобы максимум из ожидаемого приращения всех производных
(по модулю) был равен
1/3
. Продолжая процесс до достижения точки
(0, 0.65)
, получим первую «строку» сетки. Для каждого элемента этой строки аналогичным образом вычисляем допустимый шаг по времени
Δ𝑡 =
1 3
max
𝑘≤5 1
𝑘
√︀𝜕
𝑘
𝑢
B
/𝜕𝑡
𝑘
,
и выбираем наименьший из них
Δ𝑡
min
. Начальную точку для следующей строки выберем как
(𝑡
0
+ Δ𝑡
min
, 𝑥
0
)
. Эта строка заполняется аналогично. Процесс продолжается до тех пор,
пока не будет достигнута точка
(1, 0.65)
. В результате получается сетка из
𝑀 = 568
то- чек, изображенная на Рисунке 2.3.2. Диапазон приращений по
𝑥
:
𝜆
𝑥
∈ [0.006, 0.18]
, по
𝑡
:
𝜆
𝑡
∈ [0.04, 0.25]
. Сетка для обучения без дополнительных производных строится по анало- гичной схеме, но имеет втрое больший шаг и
𝑀 = 4285
точек. Отметим, что из-за выбора минимального шага по времени для всех координатных строк, сетка оказывается избыточ- ной примерно на
40%
, и с помощью полностью неструктурированного построения количество

53
-0.6
-0.4
-0.2 0.0 0.2 0.4 0.6 0.0 0.2 0.4 0.6 0.8
x t
Рис. 2.3.2. Неравномерная сетка, построенная для решения уравнения Бюргерса.
точек можно уменьшить. Граничные и начальные условия исключаются с помощью замены
𝑢 = 𝑤 · 𝑡 · (𝑥 − 0.65) (𝑥 + 0.65) + 𝑢 (0, 𝑥) − 𝑥/0.65 {𝑢
B
(0, 0.65) − 𝑢
B
(𝑡, 0.65)} .
Действительно, определённая таким образом функция
𝑢
удовлетворяет условиям (2.3.9),
(2.3.11) и (2.3.12) при любых конечных
𝑣
. Для подтверждения общих закономерностей срав- ним результаты стандартного обучения и обучения с исключением максимально доступного порядка. Все параметры обучения остались такими же, как и для решения нелинейного урав- нения Пуассона. Для 4 порядка c числом эпох
𝑇 = 2000
получаем решение с погрешностью
𝜗 = 3 · 10
−6
, максимальным отклонением от точного решения
𝜗
max
= 1.7 · 10
−5
и невязкой
√︀⟨𝑒
0
⟩ = 2 · 10
−5
. Стандартное обучение при тех же вычислительных ресурсах имеет сред- нюю точность
𝜗 = 1.2 · 10
−5
, максимальное отклонение
𝜗
max
= 1.1 · 10
−4
и среднюю невязку
√︀⟨𝑒
0
⟩ = 8.2 · 10
−4
. Таким образом, соотношение между шагом, обеспечивающим точность
10
−6
и масштабом, на котором производные решения изменяются на величину порядка еди- ницы, оказалось достаточно схожим для двух совершенно разных уравнений.
Итак, мы сформулировали способ обучения нейронных сетей, при котором миними- зируется не только интересующее нас отклонение, но и его производные. В случаях, ко- гда аппроксимируемая функция может быть продифференцирована, это позволяет повы- сить точность градиентного обучения персептрона на несколько порядков, причем получить схожее качество аппроксимации с помощью стандартных методов обучения не представля- ется возможным. Для решения уравнений в частных производных никакой дополнительной информации не требуется, а все необходимые величины получаются с помощью дифференци- рования самого уравнения. Метод демонстрирует схожие требования по шагу для уравнений разного типа и корректно работает при наличии больших градиентов.

54 2.4. Отсутствие переобучения
Как было установлено в Главе 1, в случае малоразмерных задач количество весов сети может значительно превосходить число точек, необходимых для их обучения. При этом точ- ность на тестовом множестве не будет заметно отличатся от точности на тренировочном. В
предыдущем параграфе мы увидели усиление этого эффекта при обучении дополнительных производных – чем больше был их порядок, тем меньше точек требовалось для устранения переобучения. Так как основной задачей было повышение точности, мы использовали метод обучения с исключением. Однако, он приводит к несколько большему переобучению, нежели тренировка сети с максимальным порядком производных. В связи с этим, в данном разделе мы не будем исключать высшие порядки, а сравним между собой обучение с
𝐸
0
и с
𝐸
4
. Так- же попытаемся установить, во сколько раз количество параметров сети может превышать количество точек, на которых она обучается.
Поступим следующим образом – выберем модельную задачу и создадим сетку с таким шагом
𝜆
, при котором
𝑟 ∼ 1
для обучения с
𝐸
0
и с
𝐸
4
. Затем начнем увеличивать
𝜆
до тех пор, пока вся сетка не будет состоять всего из несколько точек. В результате, можно будет установить некоторый критический шаг
𝜆
c при котором начинается переобучение (
𝑟 >
1.2
). Однако, для этого эксперимента нам понадобится более подходящее уравнение. Дело в том, что хоть предыдущие примеры и демонстрируют возможности нейронных сетей решать задачи с нелинейностями, даже точное решение (2.3.3) имеет большой градиент на границе и заметно меньший в центре. Это означает, что качество решения будет сильно зависеть от того, сколько точек попадёт вблизи границы области. Так как мы хотим генерировать сетки случайным образом, удобнее будет выбрать уравнение так, чтобы его точное решение имело все производные порядка единицы. Запишем функцию, удовлетворяющую этим условиям
𝑓 =
(︂ 1 2
(︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ + 2 tanh
(︁
𝑥
1
sin
𝑥
2 2
)︁
− sin 𝑥
1
cos 𝑥
2
)︂
(2.4.1)
Чтобы облегчить последующее сравнение с методом конечных разностей, за основу возьмем линейное уравнение Пуассона, которое будем решать на единичном круге. Для упрощения граничных условий положим точное решение равным
𝑢
a
= 𝑓 · (1 − 𝑥
2 1
− 𝑥
2 2
).
(2.4.2)
Правую часть уравнения Пуассона вычислим как лапласиан
Δ𝑢
a
= 𝑔
. Таким образом, задача имеет вид
Δ𝑢 = 𝑔,
(2.4.3)
Γ : 𝑥
2 1
+ 𝑥
2 2
≤ 1,
𝑢|
𝜕Γ
= 0.

55
Для решения производится замена
𝑢 = 𝑤 ·
(︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ ,
(2.4.4)
то есть в результате решения нейронная сеть будет повторять выражение (2.4.1). Уравнение для
𝑤
имеет вид
(︀1 − 𝑥
2 1
− 𝑥
2 2
)︀ Δ𝑤 − 4𝑥
𝜕𝑤
𝜕𝑥
− 4𝑦
𝜕𝑤
𝜕𝑦
− 4𝑤 − 𝑔 ≡ 𝑉 = 0.
(2.4.5)
Результаты решения этой краевой задачи с помощью минимизации ошибки нулевого порядка
𝑒
0
= 𝑉
2
,
будут сравниваться с результатами минимизации ошибки четвертого порядка
𝑒
4
= 𝑉
2
+
(︂ 𝜕𝑉
𝜕𝑥
1
)︂
2
+
(︂ 𝜕𝑉
𝜕𝑥
2
)︂
2
+
(︂ 𝜕
2
𝑉
𝜕𝑥
2 1
)︂
2
+
(︂ 𝜕
2
𝑉
𝜕𝑥
2 2
)︂
2
+
+
(︂ 𝜕
3
𝑉
𝜕𝑥
3 1
)︂
2
+
(︂ 𝜕
3
𝑉
𝜕𝑥
3 2
)︂
2
+
(︂ 𝜕
4
𝑉
𝜕𝑥
4 1
)︂
2
+
(︂ 𝜕
4
𝑉
𝜕𝑥
4 2
)︂
2
Можно отметить отсутствие в данном выражении смешанных производных. Обоснования,
по которым допустимо их исключение, приведены в Параграфе 3.2.4. Отметим лишь, что в данной ситуации эти производные не дают большого вклада в наблюдаемый эффект.
Чтобы наиболее полно описать переобучение, наряду с отношением
𝑟
между сред- неквадратичными невязками на тестовом и тренировочном множествах, введём отношение
𝑅
между максимальными (по модулю) невязками на этих множествах. Очевидно, что при достаточной плотности тестовых точек
𝑅 ≥ 1
. Чтобы переобучение успело наступить, ми- нимизация прекращалась только если за последние 1000 эпох среднеквадратичная невязка уменьшалась менее, чем на 10%, либо по наступлении 10000 эпохи. В среднем остановка происходила после 4000 эпох, а любое дальнейшее обучение не влияло на общий результат.
Чтобы компенсировать разность между вычислительной сложностью алгоритмов миними- зации
𝐸
4
и
𝐸
0
, будем сравнивать их результаты на сетках с таким количеством точек, чтобы число арифметических операций на одну эпоху совпадало. Выражение
𝑒
0
= 𝑉
2
содержит 5
производных
𝑤
:
𝑤,
𝜕𝑤
𝜕𝑥
,
𝜕𝑤
𝜕𝑦
,
𝜕
2
𝑤
𝜕𝑥
2
,
𝜕
2
𝑤
𝜕𝑦
2
Для построения ошибки
𝑒
4
к
𝑉
применяются операторы:
1,
𝜕
𝜕𝑥
,
𝜕
𝜕𝑦
,
𝜕
2
𝜕𝑥
2
,
𝜕
2
𝜕𝑦
2
,
𝜕
3
𝜕𝑥
3
,
𝜕
3
𝜕𝑦
3
,
𝜕
4
𝜕𝑥
4
,
𝜕
4
𝜕𝑦
4
В результате возникнут 25 различных производных от
𝑤
вплоть до 6 порядка. С удовлетво- рительной точностью можно считать сложность алгоритма минимизации
𝐸
4
в пять раз более

56
затратной чем
𝐸
0
, при том же числе точек. Следовательно, сеть, обученную на
𝑀
точках с
𝐸
0
, будем сравнивать с сетью, обученной на
𝑀/5
точек с
𝐸
4
. На графиках оба результата будут иметь одинаковую абсциссу, равную
𝑀
Алгоритм генерации сеток построим следующим образом. Внутренняя часть создается как равномерная сетка с шагом
𝜆
, которая затем поворачивается на случайный угол и смеща- ется на случайный вектор
[−𝜆/4, 𝜆/4]
2
. Все точки, не принадлежащие области, удаляются.
Сетка на границе создается как набор эквидистантных точек с расстоянием
𝜆
. Учитывая то,
что результаты предстоит сравнивать друг с другом при разном истинном числе точек, обу- чение с
𝐸
4
было выполнено на сетках от
139
до
3
точек (
𝜆 ∈ [0.16, 1.62]
), а с
𝐸
0
на сетках от
704 до 16 точек (
𝜆 ∈ [0.07, 0.6]
). Изменение
𝜆
выбрано так, чтобы число точек каждый раз уменьшалось примерно на 10%. Для тестового множества положим
𝜆 = 0.033
(3000 точек).
Для каждой сетки случайная инициализация и обучение персептрона повторялись 5 раз.
Перейдем к результатам. Рассмотрим две архитектуры
2
*
, 64, 64, 64, 64, 64, 64, 1
*
,
2
*
, 512, 512, 512, 512, 512, 512, 1
*
Первая имеет 21057 параметров, и лучше подходит для данной задачи. Вторая более избы- точна, имеет 1315329 параметров и более склонна к переобучению. На графиках эти конфигу- рации будем обозначать приблизительным количеством настраиваемых параметров:
2 · 10 4
и
10 6
соответственно. На рисунке 2.4.1 представлены графики коэффициента переобуче- ния для невязки. Заливка показывает минимальные и максимальные значения, полученные за 5 попыток обучения. Для
𝐸
4
заливка практически не видна, что соответствует крайне малой вариации результатов. Для критического шага справедливы оценки
𝜆
c
(𝑒
4
) = 1.4
,
𝜆
c
(𝑒
0
) < 0.07
в случае большей сети и
𝜆
c
(𝑒
4
) = 1.4
,
𝜆
c
(𝑒
0
) = 0.1
в случае меньшей.
Можно также заметить отрицательные значения log
10
𝑟
для
𝐸
4
, по сути это тот же эффект отрицательного переобучения, который был обнаружен в Параграфе 2.2.2. На Рисунке 2.4.2
представлена зависимость максимального переобучения
𝑅
от
𝑀
. В отличии от предыду- щего графика,
𝑅
всегда больше единицы, а его логарифм всегда положителен. Как можно видеть, минимизация с
𝐸
4
дает крайне несущественное переобучение вплоть до решения всего на нескольких точках. Разумеется, отсутствие переобучения не является гарантией ка- чества результата, поэтому наряду с предыдущими графиками следует рассмотреть и саму среднеквадратичную невязку на тестовом множестве, она приведена на Рисунке 2.4.3. При обучении с
𝐸
4
она примерно на два порядка меньше чем с
𝐸
0
. Также видно, что увеличение числа параметров сети приводит к положительному результату для
𝐸
4
, и практически не влияет на результат для
𝐸
0
. Кроме среднеквадратичной невязки также полезно рассмотреть и максимальную. Она приведена на Рисунке 2.4.4. По порядку величины она примерно в 10
раз больше среднеквадратичной. Конечным результатом, разумеется, является не малость невязки, а точность решения. Среднеквадратичное отклонение решения
𝑢
, вычисленного по формуле (2.4.4) от точного решения (2.4.2) представлено на Рисунке 2.4.5. Можно видеть,

57 10 6
(e
4
)
2 · 10 4
(e
4
)
10 6
(e
0
)
2 · 10 4
(e
0
)
0 100 200 300 400 500 600 700 0
1 2
3 4
5 6
7
M
log
1   2   3   4   5   6   7   8   9   ...   13


написать администратору сайта