Диссертация (1137108), страница 5
Текст из файла (страница 5)
Полученные веса использовались как инициализация для совместного обучения с учителем методом обратного распространения ошибки.Предобучение без учителя широко использовалось вплоть до начала 2010-х годов [63]. Улучшение методов инициализации моделей и архитектур сетей, в особенности использование нелинейности ReLU [64], позволило успешно начинать обучение со случайной инициализации.
Темне менее, остаётся распространённым предобучение с учителем. Например, в задачах компьютерного зрения стандартной практикой при решении задач на небольших выборках данных являетсяпредобучение модели на выборке ImageNet [65]. В частности, такое предобучение практическивсегда используется для решения задач детекции [30; 66; 67] и сегментации [68; 69]. Таким образом модели не приходится учиться «с нуля» выделять полезные признаки изображения, что можетбыть затруднительно по ограниченному набору данных.Менее распространённым вариантом техники предобучения с учителем является постепенное наращивание числа слоёв в используемой модели. Так, в статье [28] параметры части слоёвмодели VGG-16 с 16 параметрическими слоями инициализировались параметрами 11-слойной модели, обученной на той же задаче классификации.
Тем не менее, дальнейшее развитие архитектурмоделей позволило обучать модели с сотнями параметрических слоёв, такие как остаточные сети [12; 70], без предобучения.191.1.6 Слои полносвязных нейросетевых моделейПолносвязный слойПолносвязный слой (fully-connected layer) –– простейшая модель слоя нейронов, где каждыйнейрон текущего слоя связан со всеми нейронами предыдущего слоя с различными весами. Полносвязным слоем называется параметрическая функция, задающая линейное преобразование:v = f (u; W, b) = W u + b,(1.23)где u ∈ RS –– вход, W ∈ RT ×S –– параметр слоя, матрица весов, b ∈ RT –– параметр слоя, векторсмещений.
Число выходов T называется числом нейронов в слое. Достоинством полносвязногослоя является его простота реализации через матричное умножение, одну из наиболее популярных и оптимизированных операций линейной алгебры. Из недостатков следует отметить высокоечисло параметров, (T + 1)S, и высокую сложность вычисления, порядка T S 2 операций.Заметим, что последовательное применение нескольких полносвязных слоёв без нелинейностей между ними эквивалентно использованию одного полносвязного слоя с другими параметрами:f (f (u; W1 , b1 ); W2 , b2 ) = W2 (W1 u + b1 ) + b2 = (W2 W1 ) u + (W2 b1 + b2 ) = f (u; W, b).| {z }|{z}W(1.24)bИз-за этого после полносвязные слои практически всегда чередуют с нелинейными функциями активации, которые будут рассмотрены в следующем параграфе.
Тем не менее, применениедвух полносвязных слоёв подряд без функции активации позволяет эффективно задать низкоранговую матрицу весов W [71]:′W1 ∈ RT ×T , T ′ ≪ T, b1 = 0,W2 ∈ RT′ ×S, b 2 ∈ RT .(1.25)(1.26)При достаточно малых T ′ достигается экономия как числа параметров, так и объёма вычислений.Выведем формулы, необходимые для применения алгоритма обратного распространенияошибки к полносвязному слою [72]. Важно, что все получаемые выражения могут быть эффективно реализованы через базовые операции линейной алгебры, такие как матричное умножение.Обозначим скалярную функцию потерь для одного объекта через L = L(x, y, θ), а градиентфункции потерь по выходу слоя через dL∈ RT . Для начала подсчитаем градиент по весам слоя,dvпользуясь формулой полной производной:( S)TT∑∑∑dL dvkdL ddL==(1.27)Wkl ul + bk =dWijdvdvk dWijk dWijk=1k=1l=1TS∑dLdL ∑ d=Wkl ul =uj .dvdWdvkijik=1l=1 |{z }[i=k,j=l](1.28)20Преобразуя выражение в векторный вид, получаем умножение вектора-столбца на векторстроку:dLdL T=u .(1.29)dWdvГрадиент по смещениям равен входящему в слой градиенту:)( STT∑∑∑dLdL dvkdL dWkl ul + bk ===(1.30)dbidvk dbidvk dbi l=1k=1k=1T∑dL dbkdL=.=dvk bidvik=1|{z}(1.31)[i=k]dLdL=.dbdv(1.32)Наконец, подсчитаем градиент ошибки по входам слоя.
Это наиболее трудозатратный шаг,требующий умножения матрицы на вектор:( S)Tn∑dLdL dvk ∑ dL d ∑==Wkl ul + bk =(1.33)duidvdvk duik duik=1k=1l=1nTS∑∑duldLdL ∑Wkl==Wki .dvk l=1duidvkk=1k=1|{z}(1.34)[i=l]dLdL= WT.dudv(1.35)Данная операция имеет сложность O(ST 2 ).Функции активацииПерейдём к рассмотрению слоёв, которые используются между полносвязными слоями сети.
Будем их называть нелинейными функциями (nonlinearity functions), нелинейностями, либофункциями активации (activation function). Все рассматриваемые далее нелинейности применяются поэлементно, поэтому будем определять их как скалярные функции вещественного аргумента.Заметим, что существует функция активации maxout [73], которая применяется к группам нейронов.В ранних работах по обучению нейронных сетей методом обратного распространения ошибки обычно использовалась сигмоидальная функция активации [39],σ(u) =1.1 + exp(−u)(1.36)Заметим, что выходы данной функции лежат в интервале (0,1), что делает её подходящей длямоделирования вероятностей событий на последнем слое нейронной сети.21Альтернативной функцией активации, предложенной позже, является гиперболический тангенс [74], который может быть получен масштабированием и сдвигом сигмоиды:tanh(u) = 2σ(2u) − 1 =exp(u) − exp(−u).exp(u) + exp(−u)(1.37)Это нечётная функция со значениями в интервале (−1, 1).
Также популярна функция масштабированного гиперболического тангенса [74; 75]:( )2stanh(u) = 1,7159 tanhu ,(1.38)3удовлетворяющая свойствам stanh(1) = 1, stanh(−1) = −1.Недостатком всех рассмотренных функций активации для обучения глубинных нейросетейявляется насыщение. При аргументе, стремящемся к бесконечности, значение функций стремитсяк константе, а производная стремится к нулю. Например,lim σ(u) =u→+∞11= 1, lim σ(u) == 0,u→−∞1 + exp(−∞)1 + exp(+∞)lim σ ′ (u) = lim σ(u)σ(−u) = 1 · 0 = 0.u→+∞(1.39)(1.40)u→+∞Это приводит к затуханию градиента при обратном распространении ошибки.Наиболее популярной на сегодняшний день можно считать нелинейность ReLU (RectifiedLinear Unit) [64].
Эта нелинейность –– стандарт де-факто для свёрточных нейронных сетей.ReLU(u) = max(0, u).Производная этой функции имеет видReLU′ (u) =1, u > 0,0, u ⩽ 0(1.41),(1.42)то есть эффект затухания градиента полностью отсутствует при u > 0. Поскольку при u = 0 производная формально не определена, в нуле корректней говорить о субпроизводной, любом числена отрезке [0; 1].Известной проблемой функции активации ReLU являются «мёртвые» нейроны.
Действительно, если в ходе обучения смещение какого-то нейрона bj станет отрицательным и достаточнобольшим по модулю, то выход функции активации для этого нейрона станет нулевым для любогообъекта обучающей выборки. Согласно выражению для производной (1.42) и правилу производной сложной функции, градиент по параметрам данного нейрона также обратится в ноль.
Такиенейроны называются «мёртвыми». Для решения описанной проблемы можно использовать функцию активации PReLU (parametric ReLU) [57], которая имеет ненулевую производную:u, u > 0,,PReLU(u) =(1.43)υu, u ⩽ 01, u > 0,′,PReLU (u) =(1.44)υ, u ⩽ 0(1.45)22где υ –– скалярный параметр, общий для слоя и настраиваемый совместно с другими параметраминейронной сети.
Согласно [57], замена ReLU на PReLU улучшает точность работы свёрточныхнейронных сетей.ДропаутПоскольку глубинные нейронные сети содержат большое число параметров, зачастую превосходящее число обучающих объектов, серьёзной проблемой становится переобучение, то естьзапоминание обучающих объектов без обобщения на новые. Одним из наиболее популярных методов уменьшения переобучения является дропаут (dropout) [76].Дропаут обычно используется после функции активации полносвязного слоя. Посколькудропаут применяется поэлементно, поэтому опишем его действие для одного нейрона. Пусть u ––вход слоя дропаута, а ζ ∈ [0; 1] –– вероятность дропаута, гиперпараметр модели, общий для слоя.На этапе обучения дропаут определяется следующим образом:r ∼ Bernoulli(ζ),(1.46)dropoutобучение (u) = u · r.(1.47)Таким образом, с вероятностью p выход совпадает со входом, а с вероятностью 1 − p выход нулевой.
На этапе теста генерация из распределения Бернулли заменяется на мат. ожидание этогораспределения, чтобы избежать стохастичности:dropoutтест (u) = u · ζ.(1.48)На этапе обучения дропаут превращает нейронную сеть в целый ансамбль «прореженных»сетей, из которого на каждой итерации для каждого объекта минибатча генерируется своя сеть.Это существенно снижает вероятность переобучения. Кроме того, показано, что на этапе тестирования можно также использовать выражение (1.47) и выполнять несколько проходов для одногообъекта [77].