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

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


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

Второй сомножитель вычисляется схожим с (1.2.10) образом:
𝜕
𝜕𝑧
𝛽

𝑧
𝛾
=
𝜕
𝜕𝑧
𝛽



𝑡
𝛾
+
∑︁
𝛽
𝑊
𝛾𝛽
𝜎
(︀𝑧
𝛽
)︀


= 𝑊
𝛾𝛽

𝜎

(︁
𝑧
𝛽

)︁
Подставляя все результаты окончательно получаем
𝜕𝑒
𝜕𝑧
𝛽

=
∑︁
𝛾
𝜕𝑒
𝜕𝑧
𝛾
𝑊
𝛾𝛽

𝜎

(︁
𝑧
𝛽

)︁
= 𝜎

(︁
𝑧
𝛽

)︁ ∑︁
𝛾
𝜕𝑒
𝜕𝑧
𝛾
𝑊
𝛾𝛽

Здесь мы вынесли
𝜎

(︁
𝑧
𝛽

)︁
из под знака суммирования, так как он не зависит от
𝛾

. Таким образом, градиент
𝑒
по активностям нейронов сперва вычисляется на выходном слое, а затем распространяется обратно по сети. Градиент
𝑒
по вектору сдвига
𝑡
𝛽
аналогичен выражению
(1.2.12). Фактически, мы решили поставленную задачу. Хоть этого и не требуется для вычис- ления градиента по весам, рассмотрим ещё одну замену. Для первого слоя можно записать
𝑒
(︀𝑧
𝛽
)︀ → 𝑒 (𝑥
𝛼
)
а следовательно
𝜕𝑒
𝜕𝑥
𝛼
=
∑︁
𝛽

𝜕𝑒
𝜕𝑧
𝛽

𝜕𝑧
𝛽

𝜕𝑥
𝛼
,
где
𝜕
𝜕𝑥
𝛼
𝑧
𝛽

= 𝑊
𝛽

𝛼
То есть
𝜕𝑒
𝜕𝑥
𝛼
=
∑︁
𝛽

𝜕𝑒
𝜕𝑧
𝛽

𝑊
𝛽

𝛼
На первый взгляд это выражение связывает изменение ошибки с малым изменением входного вектора
𝑥
, однако это не так. На самом деле
∇𝑒
должен вычисляться следующим образом:
(∇𝑒)
𝛼
=
𝜕
𝜕𝑥
𝛼
1 2
(𝑣 − 𝑓 )
2
= (𝑣 − 𝑓 )
(︂ 𝜕𝑣
𝜕𝑥
𝛼

𝜕𝑓
𝜕𝑥
𝛼
)︂
В нашей цепочке вычислений мы предполагали
𝑓
константой, что было разумно, так как никакие изменения весов не приводили бы к изменению
𝑓
. Однако, при изменении входного вектора это уже не так. Выражение, которое мы получили, оказывается равно только части истинного градиента:
𝜕𝑒
𝜕𝑥
𝛼
= ∇𝑒



𝑓 =
const
= (𝑣 − 𝑓 )
𝜕𝑣
𝜕𝑥
𝛼

19
Полный градиент можно получить, добавив недостающий член
∇𝑒 =
∑︁
𝛽

𝜕𝑒
𝜕𝑧
𝛽

𝑊
𝛽

𝛼
− (𝑣 − 𝑓 )
𝜕𝑓
𝜕𝑥
𝛼
Можно также отметить, что если на выходном слое положить
𝑒 = 𝑣
, то при достижении входного мы получим
∇𝑣 (⃗
𝑥)
. Такой алгоритм называется «быстрым вычислением градиен- та», в том смысле, что его сложность слабо зависит от размерности вектора

𝑥
. Для удобства выпишем все соотношения прямого и обратного прохода для двух смежных слоёв
𝜃
и
𝜅
:
𝑧
𝜃
= 𝑡
𝜃
+
∑︁
𝜅
𝑊
𝜃𝜅
𝜎 (𝑧
𝜅
) ,
(1.2.14)
𝜕𝑒
𝜕𝑊
𝜃𝜅
=
𝜕𝑒
𝜕𝑧
𝜃
𝜎 (𝑧
𝜅
) ,
(1.2.15)
𝜕𝑒
𝜕𝑧
𝜅
= 𝜎

(𝑧
𝜅
)
∑︁
𝜃
𝜕𝑒
𝜕𝑧
𝜃
𝑊
𝜃𝜅
,
(1.2.16)
𝜕𝑒
𝜕𝑡
𝜃
=
𝜕𝑒
𝜕𝑧
𝜃
(1.2.17)
С их помощью можно вычислить градиент ошибки для сетей произвольной глубины. Вначале непосредственным дифференцированием вычисляется производная ошибки по активностям нейронов выходного слоя. Затем эта величина распространяется обратно с помощью фор- мулы (1.2.16). С помощью градиента по активностям последующего
𝜕𝑒/𝜕𝑧
𝜃
и производной
𝜎

(𝑧
𝜅
)
предыдущего слоя вычисляется градиент по матрице весов
𝑊
𝜃𝜅
, связывающей эти два слоя. Градиент
𝑒
по параметрам сдвига
𝑡
𝜃
численно равен
𝜕𝑒/𝜕𝑧
𝜃
Обсудим процесс генерации начального состояния нейронной сети. Так как градиент является локальной величиной, то от этого состояния напрямую зависит результат мини- мизации [63]. Исследовать поверхность ошибки в пространстве весов и выбирать какую-то специальную точку довольно затруднительно. Вместо этого можно поступить согласно ра- ботам [3, 64, 65]. Рассмотрим состояние сети, при котором на некоторый нейрон подается значение
𝑧 ≫ 1
. При таком аргументе функция активации будет близка к насыщению, а её производная в выражении (1.2.16) близка к нулю. Это значит, что настройка весов, при- ходящих в этот нейрон, может затянуться. Идея состоит в том, чтобы избежать подобной ситуации в начальном состоянии сети. Для этого аргумент
𝜎

(то есть активность каждого нейрона) должен быть порядка единицы. Согласно выбранной функции активации, каждый нейрон передает на следующий слой величину в интервале
(0, 1)
. Считая, что все значения из этого интервала равновероятны, а начальные веса распределены равномерно в интервале
[−1, 1]
, получим, что среднее значение, поступающее на каждый нейрон следующего слоя,
равно нулю. Однако, если количество нейронов
𝜅 >> 1
, то дисперсия этой величины, про- порциональная

𝜅
, будет велика и много нейронов окажется в пересыщенном состоянии.
Для того чтобы дисперсия также была порядка единицы, распределим начальные веса в

20
Рис. 1.2.3. CIFAR-10
интервале
±𝑐/

𝜅.
Множитель
𝑐 ∼ 1
можно подбирать экспериментально, в данной работе
𝑐 = 2
. Разумеется,
можно непосредственно подать тренировочное множество на вход сети, вычислить диспер- сии входа каждого нейрона и скорректировать веса соответствующим образом, однако для рассматриваемых в данной работе задач, подобные методы не приносят ощутимой пользы.
1.2.3. Задачи малой размерности. Очередной всплеск популярности нейронных се- тей произошел после того, когда с их помощью была удовлетворительно решена задача о распознавании образов [1]. В данной работе будут рассмотрены задачи, которые сильно от- личаются от широко известных применений нейронных сетей [2–5,12–15]. Чтобы объяснить различия между ними, сперва опишем задачу распознавания. Классификатор образов можно рассматривать как функцию, определённую на множестве изображений. Минималистичным примером такого множества может служить CIFAR-10 – 60000 цветных фотографий разме- ром
32 × 32
, на которых изображены объекты из 10 попарно не пересекающихся классов
4
,
примеры которых можно видеть на Рисунке 1.2.3. Одно такое изображение задается векто- ром длины
32×32×3 = 3072
. Классификатор является функцией в пространстве
𝑁 = 3072
,
и способность нейронных сетей обходить «проклятье размерностей» [8, 9] оказалась крайне важна. Аналогичные рассуждения справедливы и для распознавания голоса, где
𝑁 ∼ 100
Существенно и то, что такие задачи едва ли могут быть решены классическими аппрокси- маторами на основе сплайнов, рядов или представлением функций на сетке. В результате,
наиболее известной областью применения нейронных сетей оказалась аппроксимация функ- ций в пространствах большой размерности.
4
https://www.cs.toronto.edu/∼kriz/cifar.html

21
В данной работе нейронные сети будут использованы для аппроксимации в простран- ствах относительно малой размерности
𝑁 ≤ 5
. Особенности, а также критерии качества для таких задач иные. Поясним это утверждение. Пусть дан классификатор, на входной слой ко- торого подается изображение, а число нейронов выходного слоя равно количеству искомых классов. При некоторых условиях, значение каждого выхода можно трактовать как вероят- ность принадлежности изображения к каждому классу, а ответом сети можно считать класс,
выходной нейрон которого набрал наибольшую вероятность. В такой постановке, значения остальных выходов вообще не будут влиять на ошибку. В целом, для изображений характерно то, что у точных значений пикселей нет определенного смысла – их можно достаточно сильно видоизменять, применять фильтры, искажать геометрию, в целом не нарушая визуальной картины. Этот факт находит отражение и в нейронных сетях, работающих с изображени- ями. Однако, для задач компьютерного моделирования точность становится важна – если выход нейронной сети есть значение некоторой физической величины, то она, как правило,
может быть точно вычислена, например путём решения уравнения математической физи- ки. Такие величины чаще всего определены в некоторой области трехмерного пространства,
в котором мы можем указать достаточно точек, чтобы наглядно описать поведение функ- ции. Классификатор же определен в пространстве размерности
𝑁 ∼ 3000
, и даже малую окрестность в таком пространстве нельзя покрыть каким-либо приемлемым числом точек.
Также было обнаружено [66,67], что в окрестности любого правильно классифицированно- го изображения существует направление (разное для разных классификаторов), двигаясь в котором, можно из правильного ответа получить любой другой, пройдя при этом расстояние настолько малое, что на глаз изменения в изображении будут совершенно не видны. То есть даже хорошо обученная сеть на самом деле ведет себя крайне нетривиальным образом в пространстве изображений, хотя в целом хорошо выполняет свою функцию. Подобная ситу- ация, разумеется, не может быть приемлемой для, скажем, поля температуры в трехмерном пространстве.
Чтобы продемонстрировать особенности обучения малоразмерных нейронных сетей,
рассмотрим пример. Пусть
𝑁 = 2
, а целевая функция задается формулой
𝑓 (𝑥
1
, 𝑥
2
) = 𝑥
1
+ sin 𝑥
2
+ 𝑥
2 1
+ 𝑥
2
cos 𝑥
1
(1.2.18)
Областью аппроксимации выберем квадрат
[0, 1]
2
. Как можно видеть, все производные
𝑓
имеют порядок единицы. Множество точек для обучения создадим как равномерную сетку с шагом
𝜆 = 1/8
, она будет содержать
𝑀 = 81
точку. Инициализируем полносвязную нейронную сеть
𝑣 (𝑥
1
, 𝑥
2
)
с конфигурацией слоёв
2
*
, 64, 64, 64, 64, 64, 64, 1
*
,
где звездочками обозначены линейные функции активации. Вычислим значения сети на тре- нировочном множестве и глобальную ошибку
𝐸 =
∑︀ (𝑣 − 𝑓 )
2
. Первая проблема, с которой мы столкнемся при попытке минимизации
𝐸
с помощью обратного распространения ошибки

22
– это быстрое уменьшение градиента по мере продвижения к входному слою. Действитель- но, определенная на выходном слое величина (1.2.7) будет порядка единицы, однако, при каждом шаге назад согласно (1.2.16) она умножается на производную функции активации
(Рисунок 1.2.2), то есть величину порядка
∼ 0.2
. При шестикратном умножении градиент
𝐸
по весам входной матрицы становится равным
∼ 6 · 10
−5
, и это сильно затягивает их настройку. Проблему можно попробовать обойти, если использовать информацию о гради- енте не напрямую, а косвенно. Например, можно предположить, что с помощью градиента вычисляется не изменение весов, а изменение скорости весов
𝑀 (𝑛) = 𝜂𝑀 (𝑛 − 1) +
𝜕𝐸
𝜕𝑊 (𝑛)
,
𝑊 (𝑛 + 1) = 𝑊 (𝑛) − 𝜇𝑀 (𝑛) .
Для простой оценки предположим, что градиент ошибки по какому-нибудь весу всё время равен 1. Обычный градиентный спуск будет приближаться к минимуму по этому весу ли- нейно по числу итераций. Модифицированный алгоритм в частном случае
𝜇 = 1
будет на каждом шаге прибавлять к скорости постоянную величину, и движение будет равноускорен- ным – алгоритм будет приближаться к минимуму квадратично быстро. Однако, в реальных ситуациях это может приводить к возникновению осцилляций, поэтому выбирают
𝜇 < 1
. Та- кой алгоритм в силу инерции также сможет проскакивать неглубокие локальные минимумы.
Существуют также алгоритмы вычисления размера шага на основе кривизны поверхности ошибки [68]. Однако, наиболее быструю настройку обеспечивает алгоритм RProp (Resilent backPropagation) [69]. В указанных условиях он будет приближаться к минимуму экспонен- циально быстро. В нём для обновления весов используется только знак градиента:
𝑊 (𝑛 + 1) = 𝑊 (𝑛) − 𝛿𝑊 (𝑛) ·
sign
𝜕𝑒
𝜕𝑊 (𝑛)
,
а величина шага
𝛿𝑊
вычисляется следующим образом:
𝛿𝑊 (𝑛) =







𝜂
+
· 𝛿𝑊 (𝑛 − 1)
𝜕𝑒
𝜕𝑊 (𝑛)
·
𝜕𝑒
𝜕𝑊 (𝑛−1)
> 0
𝜂

· 𝛿𝑊 (𝑛 − 1)
𝜕𝑒
𝜕𝑊 (𝑛)
·
𝜕𝑒
𝜕𝑊 (𝑛−1)
< 0
𝛿𝑊 (𝑛 − 1)
в остальных случаях
Он обычно инициализруется с параметрами
𝜂
+
= 1.2, 𝜂

= 0.5, 𝛿𝑊 (0) = 10
−4
Для многоразмерных задач RProp, однако, применяется довольно редко, поскольку содер- жит один важный недостаток – он не может работать в режиме постепенного перебора тре- нировочного множества (в литературе он часто называется on-line). Для многих приклад- ных задач оказывается, что веса можно обновить на основании градиента ошибки только

23 0
200 400 600 800 1000 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4
эпоха
ϵ
RProp
RMSProp
ADAM
Рис. 1.2.4. Минимизация ошибки нейронной сети с помощью трёх градиент- ных алгоритмов.
на небольшой части тренировочного множества. Для RProp же нужно обязательно сложить градиенты для всех векторов в обучающем множестве. Когда это множество состоит из тысяч или даже миллионов изображений, on-line режим оказывается быстрее, потому что перебрав все входные вектора один раз, мы сделаем много шагов, в то время как в первом случае - только один. RProp не может работать в таком режиме потому, что он использует не зна- чение градиента, а только лишь его знак. Действительно, пусть для двух входных векторов градиент по некоторому весу равен -1, а для третьего 3. Суммарный градиент будет равен
1, и вес необходимо уменьшать, однако если последовательно выполнить три шага RProp, то вес увеличится на
𝛿𝑊 (0)+𝛿𝑊 (0)·1.2−𝛿𝑊 (0)·1.2/0.5 = 𝛿𝑊 (0)·0.6
. В задачах из данной работы тренировочные множества невелики и их можно обрабатывать целиком. Существу- ет множество попыток построения on-line алгоритма с адаптивным шагом, среди них можно отметить ADAM [70] и RMSProp [71], однако они не содержат экспоненциально быстрой под- стройки. Сравним результаты работы разных алгоритмов на выбранном примере. Графики среднеквадратичной ошибки
𝜖 =
√︂
1
𝑀
∑︁
(𝑣 − 𝑓 )
2
в зависимости от итерации обучения для RProp, RMSProp и ADAM приведены на Рисунке
1.2.4. Как следует из графиков, RProp оказывается значительно быстрее. Для малоразмер- ных задач невозможность on-line обучения непринципиальна, так как тренировочное множе- ство невелико, поэтому далее во всех случаях мы будем использовать RProp.
Разумеется, целью процедуры обучения нейронной сети является не среднеквадратич- ная ошибка
𝜖
на тренировочном множестве, а мера ошибки на всей области аппроксимации,
либо её оценка на основе тестового множества. В малоразмерном случае можно легко вы- числить и меру, однако, мы воспользуемся упорядоченностью сетки и создадим тестовое множество из точек, равноудаленных от точек тренировочного множества. В данном случае это будет равномерная сетка с тем же шагом, но сдвинутая на
𝜆/2
по
𝑥
1
и
𝑥
2
. При рассмотре- нии переобучения возможны два принципиально разных случая: целевая функция содержит

24 0
200 400 600 800 1000 0.000 0.005 0.010 0.015 0.020 0.025
эпоха
ϵ
трен тест
Рис. 1.2.5. Обучение сети с
2 · 10 4
весов (64 нейрона на слой) на зашумлённых данных по 81 точке.
0 200 400 600 800 1000 0.000 0.005 0.010 0.015 0.020 0.025
эпоха
ϵ
трен(64)
тест(64)
трен(16)
тест(16)
Рис. 1.2.6. Обучение сети с
1.4 · 10 3
весов (16 нейронов на слой) на зашумлён- ных данных по 81 точке. Серым цветом даны кривые из Рисунка 1.2.5.
шум, либо целевая функция известна точно. Сначала разберем первый – добавим к
𝑓
на тренировочном множестве равномерный шум из интервала
[−0.02, 0.02]
и пронаблюдаем за среднеквадратичной ошибкой на тестовом множестве (без шума) в процессе обучения сети.
Её график изображён на Рисунке 1.2.5. Как и следовало ожидать, сеть с 21121 параметра- ми в процессе обучения на 81 точке начала «подстраиваться» под шум. При этом точность на тестовом множестве после
∼ 300
итераций начала ухудшаться. Вводя количественную оценку переобучения:
𝑟 =
𝜖
тест
𝜖
трен
,
получим для последней эпохи
𝑟 = 20
. Если уменьшить количество параметров сети, оставив в каждом скрытом слое по 16 нейронов, ситуация будет принципиально другой (Рисунок 1.2.6).
В данном случае, обучение сети с меньшим числом параметров не только менее затратно,
но и обеспечивает лучший результат аппроксимации. Таком образом, в случае зашумлённых

25 0
200 400 600 800 1000 0.000 0.005 0.010 0.015 0.020 0.025
эпоха
ϵ
трен(64)
тест(64)
трен(16)
тест(16)
Рис. 1.2.7. Обучение на данных без шума для сетей с 64 и 16 нейронами на каждый скрытый слой.
данных нет никаких причин выбирать для двумерной задачи с таким количеством паттернов сеть большого размера. В реальных данных, например изображениях, неизбежно присутству- ет шум (в том числе в виде посторонних объектов), и правило о том, что число параметров сети должно быть меньше количества условий, которым она должна удовлетворять, справед- ливо. В случае точно известных данных это не так. Сгенерируем множество для обучения без шума, и пронаблюдаем за ошибками обеих сетей, эволюция которых изображена на Рисунке
1.2.7. Теперь ошибки на тренировочном и тестовом множестве оказываются скоррелированы,
а сеть с большим числом параметров лучше аппроксимирует целевую функцию. Но ведь для сети с шириной 64 нейрона количество настраиваемых параметров на два порядка больше,
чем количество соотношений, которые мы пытаемся выполнить. Казалось бы, это должно привести к тому, что нейронная сеть идеально повторит значения на обучающем множестве
(сведет ошибку к машинному нулю), однако, этого не происходит. Согласно работе [60], ней- ронная сеть способна приближать не только значения, но и производные целевой функции.
В данном примере ошибка первых производных сети примерно в десять раз больше, чем ошибка значений. Следовательно, вблизи тренировочной точки можно записать
𝑣 (⃗
𝑥 + Δ⃗
𝑥) − 𝑓 (⃗
𝑥 + Δ⃗
𝑥) ≃ 𝑣 (⃗
𝑥) − 𝑓 (⃗
𝑥) + (∇𝑣, Δ⃗
𝑥) − (∇𝑓, Δ⃗
𝑥) ∼ 10 (𝑣 (⃗
𝑥) − 𝑓 (⃗
𝑥)) Δ𝑥.
При достаточно малом
Δ𝑥
по всем направлениям, тестовая ошибка не будет сильно отли- чаться от тренировочной, что и происходит в данном случае. Однако, условие на мелкость шага приводит к экспоненциальному росту количества точек при увеличении размерности задачи, то есть такая ситуация реализуема только при относительно малых
𝑁
. Что касает- ся абсолютного значения ошибки, то на практике градиентное обучение не способно найти набор весов, который бы свел ошибку во всей области к машинному нулю даже для простой функции вида (1.2.18). Вместо этого, как мы увидим позднее, точность нейронных сетей оказывается ограничена некоторой характерной величиной.
1   2   3   4   5   6   7   8   9   ...   13


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