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

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


Скачать 3.63 Mb.
НазваниеАлгоритм увеличения точности нейронных сетей и его приложения
Дата24.06.2022
Размер3.63 Mb.
Формат файлаpdf
Имя файлаdiss_avrutskiy.pdf
ТипДиссертация
#613262
страница1 из 13
  1   2   3   4   5   6   7   8   9   ...   13

Федеральное государственное автономное образовательное учреждение высшего образования
«Московский физико-технический институт»
(национальный исследовательский университет)
на правах рукописи
Аврутский Всеволод Игоревич
Алгоритм увеличения точности нейронных сетей и его приложения
Специальность 05.13.18 – Математическое моделирование,
численные методы и комплексы программ
Диссертация на соискание учёной степени кандидата физико-математических наук
Научный руководитель:
к.ф.-м.н., доцент
Дорофеев Евгений Александрович
Долгопрудный – 2021

2
Оглавление
Введение
4
Задачи аппроксимации
4
Решение уравнений в частных производных
5
Характеристика работы
7
Научная новизна работы
7
Теоретическая и практическая значимость
7
Положения, выносимые на защиту
8
Степень достоверности и апробация результатов работы
8
Благодарности
9
Глава 1. Обзор
10 1.1. Биологические нейроны
10 1.2. Искусственные нейронные сети
12 1.2.1. Теоремы существования.
12 1.2.2. Обратное распространение ошибки
15 1.2.3. Задачи малой размерности
20 1.2.4. Решение дифференциальных уравнений
27
Выводы к Главе 1 32
Глава 2. Обучение с производными
34 2.1. Краткая история
34 2.2. Аппроксимация функций
37 2.2.1. Обозначения производных
37 2.2.2. Двумерная функция
38 2.2.2.1. Обучение производных
39 2.2.2.2. Обучение с исключением
41 2.2.3. Автокодировщик
43 2.2.4. Проблема вычисления производных
46 2.3. Решение уравнений
48 2.3.1. Нелинейное уравнение Пуассона
48 2.3.2. Уравнение Бюргерса
50 2.4. Отсутствие переобучения
54 2.4.1. Оценка порядка аппроксимации
60 2.5. Связь с классическим обучением
60
Выводы к Главе 2 62

3
Глава 3. Многомерные краевые задачи
64 3.1. Увеличение размерности
64 3.2. Уменьшение сложности
65 3.2.1. Все производные
66 3.2.2. Производные по осям
67 3.2.3. Случайные направления
67 3.2.4. Тесты
67 3.2.5. Перенормировка
69 3.2.6. Процедура обучения
69 3.3. Линейные уравнения
70 3.4. Нелинейные уравнения
72 3.5. Сравнение с конечными разностями
74 3.6. Практические аспекты
78 3.6.1. Критерий остановки
78 3.6.2. Верификация
80
Выводы к Главе 3 83
Глава 4. Алгоритм дифференцирования
85 4.1. Прямое распространение
85 4.1.1. Случайные направления
89 4.2. Обратное распространение
89 4.3. Сложность
92 4.3.1. Прямой проход
92 4.3.2. Градиент весов
93 4.3.3. Обратный проход
93 4.4. Реализация
94 4.4.1. CUDA
94 4.4.2. CUBLAS
97 4.4.3. Особенности реализации
98 4.4.4. cpde-2 100 4.4.4.1. Параметры задачи
100 4.4.4.2. Начальные данные
101 4.4.4.3. Вычисление невязки
102 4.4.4.4. Нормировка
105 4.4.4.5. Пример
105 4.4.5. Генерация кода
107
Выводы к Главе 4 108
Заключение
109
Обозначения
110
Литература
112

4
Введение
В диссертационной работе излагается метод увеличения точности градиентного обу- чения глубоких нейронных сетей – многослойных персептронов, основанный на включении в процесс обучения дополнительных производных. Рассмотрены два существенно различ- ных применения нейронных сетей: аппроксимация функций и решение уравнений в частных производных.
Задачи аппроксимации. На сегодняшний день нейронные сети применяются для ре- шения широкого спектра прикладных задач [1–5]. Популярной постановкой является задача об аппроксимации функции, для которой известен набор значений и соответствующих им аргументов. На основе этих данных алгоритм обучения настраивает параметры сети так,
чтобы её отклонение от значений функции на данном наборе аргументов было приемле- мым. Точность аппроксимации при этом обычно оценивают с помощью отклонения от рас- сматриваемой функции на тестовом множестве, которое не использовалось для обучения.
Достаточно широкий класс составляют сети прямого распространения (далее просто сети),
принцип работы которых можно описать следующим образом. Входной вектор поочерёд- но подвергается многомерным линейным и покомпонентным нелинейным преобразованиям,
пара которых называется слоем сети. Последний слой является выходным, а остальные –
скрытыми. Линейные преобразования в слоях задаются матрицами весов, нахождение кото- рых и составляет процесс обучения. Допустимость применения нейронных сетей обоснована теоремами о существовании, утверждающими, что для каждой непрерывной функции суще- ствует сеть с таким набором весов, что мера их отклонения друг от друга произвольно мала.
Такие теоремы, однако, не являются конструктивными, и обучение сетей представляет собой отдельную задачу. В связи с этим следует отличать cети с одним скрытым слоем от глубо- ких сетей. Если для первых существуют алгоритмы [6, 7] обучения, вычисляющие веса за полиномиальное время, то для глубоких сетей обучение основано на итерационном процессе градиентной минимизации, который во многих ситуациях не находит глобальный минимум.
Очередной всплеск популярности нейронных сетей произошел после 2011 года, когда с помощью глубоких сетей задачу о распознавании образов удалось решить с точностью,
сравнимой с человеческой [1]. В этой задаче каждому изображению, состоящему из тысяч цветных пикселей, нужно поставить в соответствие вектор, каждая компонента которого есть вероятность принадлежности изображения к некоторому классу. Область определения функции-классификатора имеет огромную размерность, и важным фактором оказывается способность нейронных сетей обходить «проклятье размерности» [8,9]. В результате увеличе- ние числа измерений не приводит к экспоненциальному росту затрат на обучение. Несмотря

5
на то, что этой способностью обладают также и сети с одним скрытым слоем, их использо- вание в подобных многомерных задачах не приводит к столь же качественным результатам.
Одним из ключевых факторов для практического применения глубоких сетей стала доступ- ность параллельных вычислений на графических ускорителях (GPU) [10]. Эффективность
GPU при работе с глубокими сетями значительно выше, чем при обучении сетей с одним скрытым слоем. Сегодня глубокие нейронные сети успешно используются для автоматиза- ции вождения [11], распознавания голоса [12–15] и других задачах большой размерности [2],
ранее требовавших присутствия человека.
Решение уравнений в частных производных. Нейронные сети также могут приме- няться для решения дифференциальных уравнений [16–37]. Фактически, любой численный алгоритм должен сконструировать решение с помощью некоторого числа рациональных па- раметров. В методе конечных разностей [38, 39] искомая функция описывается с помощью набора значений на сетке. В методе конечных элементов [40–42] область решения разбивает- ся на ячейки, внутри которых определена достаточно простая функция, например полином,
коэффициенты которого определяются в процессе решения. В последние годы получили раз- витие бессеточные методы [43–45], в которых непрерывная среда заменяется на некоторое количество взаимодействующих частиц, но и в этом случае присутствует дискретизация по пространству. При этом результирующая точность зависит от величины этой дискретизации,
а значит после решения требуется проверка сходимости по данному параметру. Нейронные сети же обладают достаточными аппроксимационными способностями, чтобы описывать ре- шение во всей области, а значит обойтись без пространственной дискретизации. При таком подходе размерность входного вектора нейронной сети равна количеству независимых пе- ременных, а число выходов равно числу искомых функций. При обучении сети решается одна конкретная краевая задача. Веса настраиваются так, чтобы при «подстановке» сети в уравнение, невязка в тренировочных точках была близка к нулю, а значения сети на границе были близки к поставленным условиям. Сети с одним скрытым слоем здесь опять же отлича- ются от глубоких сетей. У первых, несмотря на отсутствие явной дискретизации, параметры являются локальными, то есть в пространстве независимых переменных можно выделить относительно небольшую область, на которую влияет изменение каждого параметра. Для глубоких сетей это не так – вариации почти всех параметров изменяют решение глобально.
Однако, для сетей с одним скрытым слоем, как и в случае задач аппроксимации, существуют полиномиальные алгоритмы поиска весов, тогда как для глубоких сетей необходима гради- ентная минимизация. При этом точность решения при использовании глубоких сетей почти всегда заметно ниже. Более того, зачастую при их градиентном обучении алгоритм не на- ходит глобальный минимум, и в результате присутствует некоторый уровень относительной невязки, снизить которую далее невозможно. Тем не менее, глубокие нейронные сети поз- воляют решать уравнения в частных производных с размерностью порядка 100, тогда как статьи о сетях с одним скрытым слоем по большей части посвящены размерностям 1, 2 и 3.
Для нейросетевого подхода характерно то, что вне зависимости от выбранного вида сетей и

6
алгоритма обучения, единая процедура позволяет решать задачи самого разного типа: эл- липтические, гиперболические, смешанные, задачи на собственные значения. Нейросетевой метод существенно отличается от классических способов решения уравнений – результатом является гладкая функция, для которой невязка уравнения в тренировочных точках мала.
При этом невязка легко вычислима и в любых других точках, и коль скоро она мала и на тестовом множестве, то уравнение можно считать численно решенным, а проверка на сходи- мость по шагу не требуется. С помощью вычисления невязки во всей области можно также получить оценку точности решения. После завершения обучения, точки, использовавшиеся в процессе, уже не играют никакой роли. Фактически, набор тренировочных точек можно сво- бодно менять и в процессе обучения по мере необходимости. Кроме непосредственного вычис- ления искомых функций, нейросетевой подход обладает дополнительными преимуществами:
так, перестройка решения после малой вариации граничных условий занимает относительно немного времени, причем для глубоких сетей она происходит быстрее в силу глобальной за- висимости решения от параметров сети. Для многомерных задач хранение решения в виде глубокой нейронной сети намного более эффективно, чем описание через дискретизацию,
требования по памяти для которой растут экспоненциально.
Таким образом, глубокие нейронные сети являются достаточно гибким инструмен- том и обладают большим потенциалом для решения многомерных задач. Однако, из-за осо- бенностей градиентной минимизации, их относительная точность проигрывает как сетям с одним скрытым слоем, так и стандартным численным методам при решения задач малой размерности [16, 20, 25–29, 46]. Для больших размерностей точность многослойных сетей не повышается, однако альтернативные методы практически исчезают. Похожая ситуация присутствует и в задачах аппроксимации – при градиентном обучении глубокой сети даже в двумерном случае легко обнаруживается неснижаемый уровень ошибки. Исправление тако- го недостатка позволило бы уравнять способности глубоких сетей с остальными численными методами при решении задач малой размерности, а также поднять их точность в многораз- мерных задачах. Кроме того, процесс решения краевых задач подразумевает «подстановку»
нейронной сети в уравнение, то есть вычисление её производных и последующее вычисление градиента ошибки. На данный момент статьи о нейросетевом методе решения дифференци- альных уравнений не содержат универсального алгоритма для сетей с произвольным числом слоёв. Разумеется, это вычисление можно осуществить с помощью автоматического диффе- ренцирования, однако этот метод до сих пор не имеет эффективных GPU реализаций. Так как успех современных нейронных сетей был связан с увеличением числа слоёв, а также с наличием быстрых вычислений на GPU, то задача построения эффективного алгоритма вычисления производных нейронных сетей имеет прикладной потенциал.
Данная работа посвящена увеличению точности градиентного обучения глубоких ней- ронных сетей – многослойных персептронов. Под точностью подразумевается отклонение от требуемого результата на тестовом множестве. Для задачи аппроксимации разработан метод увеличения точности при условии, что на обучающем множестве известны не только значе- ния, но и производные аппроксимируемой функции. Рассмотрены примеры аппроксимации в

7
пространствах размерности 2–5. При решении уравнений в частных производных разработан- ный метод позволяет увеличить точность без использования дополнительной информации.
Рассмотрены примеры решения краевых задач для линейных и нелинейных дифференци- альных уравнений эллиптического и параболического типов в пространствах размерности
2–5.
Характеристика работы
Целями данной работы являются: создание способа повышения точности градиентно- го обучения многослойных персептронов, его применение для решения уравнений в частных производных, и его эффективная реализация на GPU.
Для достижения поставленных целей были решены следующие задачи:
(1) Создание способа, который позволил бы преодолеть ограничение относительной точ- ности градиентного обучения многослойных нейронных сетей
∼ 10
−4
, которое встре- чается при аппроксимации функций на областях порядка единицы, производные ко- торых имеют значения порядка единицы.
(2) Разработка метода решения уравнений на основе найденного способа повышения точности.
(3) Создание программного комплекса для эффективного вычисления производных и градиентов глубоких нейронных сетей на GPU.
(4) Проведение численных экспериментов, показывающих практические преимущества нейросетевого метода решения дифференциальных уравнений.
Научная новизна работы.
(1) Впервые показано, что точность градиентного обучения нейронных сетей может быть увеличена на несколько порядков при включении в процесс обучения дополни- тельных производных.
(2) Впервые продемонстрировано, что можно избежать переобучения нейронных сетей без использования регуляризации, пользуясь исключительно информацией о произ- водных аппроксимируемой функции.
(3) Впервые построен алгоритм нейросетевого решения уравнений в частных произ- водных, позволяющий использовать шаг, невозможный для других алгоритмов при сравнимой точности решения.
(4) Впервые с помощью нейронной сети решение краевой задачи с относительной точ- ностью порядка ошибки округления было получено быстрее, чем методом конечных разностей.
Теоретическая и практическая значимость. Создание способа, с помощью которого точность градиентного обучения глубоких нейронных сетей можно повысить на несколько порядков, представляет теоретическую значимость и указывает на необходимость исследо- ваний, направленных на достижение схожего результата в задачах классификации. Для ма- лоразмерных задач на основе этого способа построен метод обучения с исключением. Его успешное применение к решению дифференциальных уравнений, получение преимуществ

8
над методом конечных разностей, а также эффективная реализация алгоритма на GPU пред- ставляют практическую значимость.
Положения, выносимые на защиту.
(1) Процедура градиентного обучения многослойных нейронных сетей с использованием дополнительных производных, свойства этой процедуры и результаты эксперимен- тов с её применением.
(2) Разработан метод обучения с исключением, позволяющий увеличить относительную точность глубоких нейронных сетей с
10
−4
до величины порядка ошибки округле- ния
10
−6
при условии, что производные функции и размер области её аппроксима- ции имеют порядок единицы. Метод применим для численного решения уравнений математической физики, в том числе при наличии больших градиентов.
(3) Разработан метод случайных направлений, снижающий сложность обучения с ис- ключением для задач размерности более 2.
(4) Модельные краевые задачи для линейного и нелинейного уравнения Пуассона в про- странствах размерности 2–5 решены с помощью нейронных сетей с относительной точностью порядка
10
−6
(производные решения и область аппроксимации имеют порядок единицы). Для пятимерной задачи нейросетевой метод впервые оказался быстрее конечно-разностного, а требования по памяти снижены c
6.4 · 10 11
байт до
1 · 10 9
байт. Объем памяти для хранения решения уменьшен с
6.4 · 10 11
до
6 · 10 5
байт.
(5) Разработан программный комплекс «cpde-2», эффективно использующий GPU и предназначенный для дифференцирования многослойных персептронов, минимиза- ции отклонения их производных, а также для решения уравнений в частных произ- водных.
Степень достоверности и апробация результатов работы. Результаты работы до- кладывались на 57, 58 и 59 всероссийских научных конференциях МФТИ (2014, 2015, 2016 гг,
Жуковский), международной конференции Future Technologies Conference (2019, Сан Фран- циско) где доклад был награжден дипломом за лучшую работу. Результаты также доклады- вались на семинарах:

Seminar: Numerical Methods for Partial Differential Equations, MIT, Boston, 2017.

Seminar: Nerual Networks Catching Up With Finite Differences, Mitsubishi Electric
Research Laboratories (MERL), Boston, 2017.

Семинар: Нейросетевые решения уравнений математической физики, ФАЛТ МФТИ,
2017 г.

Семинар: Нейронные сети, Кафедра Вычислительной Математики, ФУПМ, 2017,
2018 гг.
Эффект «отрицательного» переобучения, упомянутый в Пункте 2.2.2 был независимо вос- произведён К. А. Рыбаковым. Исходный код доступен по адресу github.com/Avrutskiy/dneural

9
Благодарности. Автор выражает глубокую признательность своему научному руково- дителю Е. А. Дорофееву за неоценимую поддержку в течении 10 лет, на протяжении которых была написана магистерская и кандидатская диссертация. Кроме того, автор благодарит И.
В. Воронича и А. М. Гайфуллина за научную поддержку, а также С. М. Боснякова за кри- тику магистерской работы, которая подтолкнула автора к написанию данной диссертации.
Автор также выражает признательность лаборатории нейронных систем и глубокого обуче- ния МФТИ и лично М. С. Бурцеву.

10
Глава 1
Обзор
В данной главе кратко описаны истоки искусственных нейронных сетей – многослой- ных персептронов и их математическая формулировка. Классический алгоритм обучения сформулирован в виде, удобном для обобщения, которое сделано в Главе 4. Приведены ха- рактерные результаты, которые можно получить при использовании многослойных персеп- тронов для аппроксимации функций в пространствах малой размерности, а также при реше- нии дифференциальных уравнений. Очерчена проблема недостаточной точности, решению которой посвящена Глава 2.
  1   2   3   4   5   6   7   8   9   ...   13


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