Алгоритм увеличения точности нейронных сетей и его приложения
![]()
|
1.1. Биологические нейроны Выживание у достаточно сложных живых организмов практически целиком основано на анализе окружающего мира и принятии решений, и эта функция целиком возложена на центральную нервная систему (ЦНС). У млекопитающих она состоит из двух специализиро- ванных отделов: низшего и среднего, которые управляют отдельными органами и системами, и высшего отдела, который управляет организмом как едиными целым и способен прини- мать решения на основе совокупной информации от органов чувств. Высший отдел ЦНС состоит преимущественно из коры больших полушарий, которая у человека занимает более 80% объема мозга. Схематичный разрез этой структуры представлен на Рисунке 1.1.1. Основным её элементом являются нейроны - особые клетки, состоящие из тела (сомы) и отростков двух типов - аксонов и дендритов. Аксоны представляют собой длинные миели- низированные нервные волокна 1 , которые отходят в стороны и прикрепляются к дендритам других нейронов с помощью синапсов. Аксон у нейрона один, однако, его окончание может иметь множество синапсов, а один нейрон через разветвленные дендриты может принимать сигналы от множества аксонов. В нормальном состоянии нейрон имеет отрицательный потен- циал порядка -65мВ относительно своего окружения. При возбуждении синаптической свя- зи, в дендрите нейрона открываются ионные каналы, которые в зависимости от типа могут пропускать внутрь клетки положительные либо отрицательные ионы. Количество каналов также может быть различным 2 . Если положительный заряд попадает в клетку достаточно быстро и её суммарный потенциал достигает отметки порядка -55мВ, то по всей клеточ- ной мембране открываются потенциал-зависимые натриевые каналы. Они пропускают ионы Na + внутрь клетки, что ещё более резко повышает её потенциал. У длинного отростка – аксона при этом сначала открываются каналы у основания, а затем, из-за сопутствующего 1 скорость распространения сигнала по таким волокнам на порядок больше, чем без миелиновой оболочки 2 движение ионов обуславливается не только зарядом, но и концентрацией, кроме того, в клетке присутствуют механизмы их принудительного транспорта 11 Рис. 1.1.1. Сечение коры головного мозга повышения потенциала, соседние с ними каналы, и так далее. Таким образом возникает вол- нообразный процесс открытия каналов, который передается вдоль по аксону в конце концов достигает всех синапсов данного аксона и активирует их. За этой волной следует процесс реполяризации, который приводит нейрон изначальное состояние. Кора содержит порядка 12 миллиардов нейронов. На левой части Рисунка 1 показа- но, как она будет выглядеть если окрасить все миелинизированные нервные волокна, а на правом - если окрасить небольшое случайное количество нейронов. В коре можно увидеть шесть различных слоёв, хотя некоторые её части могут имеют только три слоя. Каждый слой характеризуется типом встречающихся в нем нейронов и типом связей. Первый слой носит название «молекулярный», содержит крайне мало собственных нейронов и практиче- ски целиком состоит из аксонов, связывающих между собой различные частей коры (в том числе и полушария мозга). Реципиенты этих аксонов в основном находятся в слоях II и III, а отправители в слое III, который так же содержит нейроны с вертикальными аксонами. Слои IV, V, VI находятся ближе к древним частям ЦНС и связаны с ними. IV принимает сигналы от таламуса, V передает сигналы в кортикоспинальный тракт, а слой VI переда- ет и принимает сигналы от таламуса. Из Рисунка 1.1.1 видно, что заметная часть нервных волокон связывает нейроны в пределах одного слоя. Однако, как соседние, так и более от- даленные слои также связаны друг с другом. Результаты работы ЦНС закодированы через временные последовательности поляризующихся нейронов, которые через периферическую нервную систему контролируют остальной организм. 12 1.2. Искусственные нейронные сети Итак, мы кратко очертили строение высшей нервной системы и нам точно известно, что она способна решать относительно сложные задачи вроде классификации изображений. Однако вся совокупность нейронов, действующих друг на друга через синаптические свя- зи, которые создают микротоки, от интеграла которых зависит возбуждение конкретного нейрона – это довольно сложная система, моделирование которой само по себе непростая задача [47–51]. Было предпринято множество попыток [52–54] создать упрощенную мате- матическую модель, которая обладала бы схожими вычислительными свойствами. Изложим лишь ту, что будет использована в данной работе – многослойный персептрон. Как следует из названия, он так же состоит из слоёв, подобных тем, что встречаются в коре головного мозга. Модель основана на нескольких упрощениях. Первое касается характера связей ней- ронов – мы предполагаем, что взаимодействуют друг с другом только соседние слои, причем каждый нейрон принимает информацию от всех нейронов предыдущего и передает её на все нейроны последующего слоя. Мы так же выбросим связи нейронов самих с собой 3 , так что теперь сигнал может распространяться только в одном направлении. К этому мы до- бавляем упрощение временной зависимости – будем считать, что все нейроны каждого слоя передают сигналы одновременно и мгновенно. Вместо интегрирования токов теперь можно считать, что каждый нейрон суммирует все поданные на него сигналы. Вместо количества открываемых каналов, каждой синаптической связи поставим в соответствие действительное число, на которое будет умножаться передаваемый сигнал. Согласно биологической модели, нейрон должен работать в режиме «всё или ничего» – вместо этого предположим, что его выход монотонно возрастает в зависимости от входа, и имеет конечные пределы при ±∞ Это упрощение можно рассматривать как усреднение количества активаций по времени. В результате мы получаем модель многослойного персептрона. На нейроны его первого слоя нужно подать некоторые значения, а результатом работы сети будут значения выходов ней- ронов последнего слоя. Несмотря на то, что в построенной модели едва ли осталось сходство с биологической нейронной сетью, она не только может справляться с задачами схожими с теми, что решает ЦНС, но и довольно универсальна с математической точки зрения. 1.2.1. Теоремы существования. Можно задаться вопросом – является ли способность биологических нейронных сетей решать повседневные задачи следствием “простоты” самих задач или же вычислители, собранные из комбинации простых элементов сами по себе до- статочно универсальны. Математически это можно сформулировать так – достаточно ли комбинаций простых одномерных функций для построения произвольных отображений в многомерных пространствах? Схожим, но более частным случаем вопроса является 13-я проблема Гильберта – можно ли представить решение уравнения седьмой степени (которое может быть представлено как функция трех переменных) в виде суперпозиции функций от двух переменных. 3 такой тип связи участвует в создании ритма бега лошадей – подавая сигнал сам на себя, нейрон получит его с определенной задержкой, создавая таким образом несущую частоту 13 Утвердительный ответ на этот вопрос получил Колмогоров в 1957 году [55] в виде более общей теоремы – для непрерывной функции 𝑓 в пространстве размерности 𝑁 ≥ 2 справедливо 𝑓 (𝑥 1 , . . . , 𝑥 𝑁 ) = 2𝑁 +1 ∑︁ 𝑞=1 𝜑 𝑞 (︃ 𝑁 ∑︁ 𝑝=1 𝜓 𝑝𝑞 (𝑥 𝑝 ) )︃ Равенство выполняется в единичном кубе. Монотонные непрерывные отображения 𝜓 𝑝𝑞 за- висят только от размерности пространства, а 𝜑 𝑞 зависят от конкретной функции 𝑓 . Такая конструкция весьма далека от многослойного персептрона, в котором нейроны имеют вполне определенную (а часто и одинаковую) функцию активации, тогда как функции 𝜑 𝑞 , 𝜓 𝑝𝑞 в об- щем случае не универсальны и довольно сложны. Однако, для приложений вместо точного равенства подойдёт и произвольно малая ошибка, и такого послабления оказывается до- статочно. В начале девяностых годов двадцатого века были опубликованы статьи [56, 57] содержащие теоремы о существовании для персептронов с фиксированными функциями. В первой работе доказательство опиралось на теорему Вейерштраасса – Стоуна, а во втором на теорему Колмогорова, которая была применена для конкретного вида нейронной сети. Сперва рассмотрим [57]. В ней речь идет о персептроне с двумя скрытыми слоями. Запишем его в символьном виде как преобразование входного вектора ⃗ 𝑥 : 𝑣(⃗ 𝑥) = 𝑡 + ∑︁ 𝛾 𝑊 𝛾 𝜎 ⎛ ⎝ 𝑡 𝛾 + ∑︁ 𝛽 𝑊 𝛾𝛽 𝜎 (︃ 𝑡 𝛽 + ∑︁ 𝛼 𝑊 𝛽𝛼 𝑥 𝛼 )︃ ⎞ ⎠ (1.2.1) Здесь индексами 𝛼 , 𝛽 , 𝛾 обозначены величины связанные со входным, первым и вторым скрытым слоем соответственно. Так, матрица 𝑊 𝛽𝛼 связывает нейроны входного и первого слоя. В суммированиях 𝛼 пробегает по компонентам входного вектора ⃗ 𝑥 , а 𝛽 по нейронам первого скрытого слоя. Количество элементов, перечисляемых индексом, будем обозначать с помощью модуля, то есть |𝛼| это размерность вектора ⃗ 𝑥 , а |𝛽| – число нейронов в пер- вом скрытом слое. Отображение 𝑣 задается тремя матрицами 𝑊 𝛽𝛼 , 𝑊 𝛾𝛽 и 𝑊 𝛾 (так как выход состоит из одной компоненты, последняя матрица вырождается в столбец) и тремя векторами сдвига 𝑡 𝛽 , 𝑡 𝛾 , 𝑡 (последний вектор аналогично вырождается в скаляр). Скалярная функция 𝜎 действует независимо на каждую компоненту своего аргумента. Предполагается что 𝜎 (∞) = 1 , 𝜎 (−∞) = 0 , 𝜎 ′ > 0 . Для удобства, величины, поступающие на вход нейронов некоторого слоя и к которым далее применяется нелинейное преобразование 𝜎 , будем назы- вать вектором “активности” этого слоя и обозначать буквой 𝑧 с тем же греческим индексом, который использовался для нейронов. Для первого и второго скрытого слоя соответственно: 𝑧 𝛽 = 𝑡 𝛽 + ∑︁ 𝛼 𝑊 𝛽𝛼 𝑥 𝛼 , (1.2.2) 𝑧 𝛾 = 𝑡 𝛾 + ∑︁ 𝛽 𝑊 𝛾𝛽 𝜎 (︀𝑧 𝛽 )︀ . (1.2.3) 14 x α z β z γ ν Рис. 1.2.1. Схематичная структура персептрона с двумя скрытыми слоями 1.2.1 для случая |𝛼| = 2 , |𝛽| = 4 , |𝛾| = 4 Для выхода: 𝑣 = 𝑡 + ∑︁ 𝛾 𝑊 𝛾 𝜎 (𝑧 𝛾 ) . (1.2.4) Схематичное изображение нейронной сети со входом размерности 2 и четырьмя нейронами в скрытых слоях приведено на Рисунке 1.2.1. Основной результат [57] состоит в том, что кон- струкция (1.2.1) является универсальным аппрокисматором. В работе также указана оценка количества нейронов в скрытых слоях, которого будет достаточно для достижения заданной точности. Это количество также зависит от самой функции и от размерности пространства. Опубликованная незадолго до этой работы статья [56] содержала аналогичный результат, но для сети с одним скрытым слоем. Это означает, что конструкция (1.2.1) в некотором смысле является избыточной, однако с практической точки зрения она оказывается крайне важна. Дело в том, что аппроксимационная способность нейронной сети в большей степени зависит от общего числа настраиваемых параметров: весов и векторов сдвига. Предположим, что для некоторой функции одного переменного их понадобилось 10 4 . Тогда сеть с одним скрытым слоем будет описываться двумя матрицами 1 × 3333 и 3333 × 1 и одним вектором сдвига длины 3333 . Сеть с двумя скрытыми слоями будет иметь три матрицы: 1 × 98 , 98 × 98 и 98 × 1 , и два вектора длины 98. Аппроксимационная способность у этих двух сетей будет сравнима, однако между ними есть одно важное отличие. Дело в том, что основной успех ней- ронные сети получили после того, как стали доступны быстрые параллельные вычисления на графических ускорителях, сокращённо GPU (Graphics Processing Unit). Из-за зависимо- сти аппаратной эффективности GPU от размера матриц, время обучения первой сети будет примерно на порядок больше, чем для второй. Кроме того, конструкция нейронной сети с двумя скрытыми слоями с помощью выражения (1.2.3) легко обобщается на произвольное число слоев. Для задач классификации были продемонстрированы преимущества сетей, со- держащих десятки [58] или даже сотни слоёв [59], а значит рассуждения, справедливые для сетей произвольной длинны имеют большую практическую значимость. Упомянем также 15 -4 -2 0 2 4 0.0 0.2 0.4 0.6 0.8 1.0 x σ ′ (x) σ(x) Рис. 1.2.2. График логистической сигмоиды 1/ (1 + 𝑒 −𝑥 ) и её производной статью [60], содержащую утверждение о том, что нейронная сеть с одним скрытым слоем может произвольно точно аппроксимировать не только саму функцию, но и её производную. Для сетей произвольной длинны достаточно переписать формулу (1.2.3) для двух соседних слоёв с индексами 𝜃 и 𝜅 и рассматривать последовательное её применение с соот- ветствующими матрицами весов и векторами сдвига 𝑧 𝜃 = 𝑡 𝜃 + ∑︁ 𝜅 𝑊 𝜃𝜅 𝜎 (𝑧 𝜅 ) . (1.2.5) Частный случай 𝜎 (𝑥) = 𝑥 дает нам формулу (1.2.2), а если размерность выхода равна 1, то индекс 𝜃 можно не писать, и мы получаем формулу (1.2.4). В данной работе будет использоваться логистическая сигмоида 𝜎 (𝑥) = 1/ (1 + 𝑒 −𝑥 ) , представленная на Рисунке 1.2.2. 1.2.2. Обратное распространение ошибки. Несмотря на то, что аппроксимационные теоремы гарантируют существование весов, при которых нейронная сеть реализует отобра- жение с достаточной точностью, эти теоремы не являются конструктивными, то есть не опи- сывают способа нахождения этих весов. Современные алгоритмы поиска параметров много- слойного персептрона основываются в первую очередь на численной минимизации «ошибки» - меры отклонения нейронной сети от целевой функции, вычисленной на некотором наборе точек, называемых тренировочным множеством. В основе таких алгоритмов лежит вычис- ление градиента ошибки, описанное в 1988 году [61]. Рассмотрим некоторое начальное состояние сети 𝑊 (0) , 𝑡 (0) , под которым будем пони- мать полный набор весов и сдвигов соответственно (для алгоритма все параметры являются равноправными, поэтому их индексы не важны). Пусть скалярная функция 𝑓 известна на некотором наборе точек ⃗ 𝑥 𝑎 , 𝑎 ∈ [1, 𝑀 ] , также называемых «паттернами». Если в каждой точке определить заведомо положительную и дифференцируемую ошибку, например как 16 квадрат разности 𝑒 (⃗ 𝑥) = 1 2 (︁ 𝑣 (⃗ 𝑥) − 𝑓 (⃗ 𝑥) )︁ 2 , (1.2.6) то задачу аппроксимации можно при некоторых допущениях свести к минимизации глобаль- ной ошибки 𝐸 = ∑︁ 𝑎 𝑒 (⃗ 𝑥 𝑎 ) по всем параметрам нейронной сети 𝑊, 𝑡 = arg min 𝐸. Если знать градиенты 𝜕𝐸/𝜕𝑊 и 𝜕𝐸/𝜕𝑡 , то можно построить итерационную процедуру: 𝑊 (𝑛 + 1) = 𝑊 (𝑛) − 𝜇 𝜕𝐸 𝜕𝑊 (𝑛) , 𝑡 (𝑛 + 1) = 𝑡 (𝑛) − 𝜇 𝜕𝐸 𝜕𝑡 (𝑛) , причем при достаточно малом 𝜇 , ошибка 𝐸 сети в состоянии 𝑊 (𝑛 + 1) , 𝑡 (𝑛 + 1) будет заве- домо меньше, чем при 𝑊 (𝑛) , 𝑡 (𝑛) . При определенных условиях гарантируется сходимость к некоторому локальному минимуму [62]. Опишем алгоритм вычисления 𝜕𝐸/𝜕𝑊 , 𝜕𝐸/𝜕𝑡 для сети, определяемой формулами (1.2.2 ), ( 1.2.3 ), ( 1.2.4). В силу линейности градиента, можно рассмотреть только локальную ошибку 𝑒 . Выражение 𝜕𝐸/𝜕𝑊 будет равно сумме 𝜕𝑒/𝜕𝑊 по всем 𝑎 . Вычисления начнем с конца – ошибка (1.2.6) явно зависит только от выхода нейронной сети 𝑒 = 𝑒(𝑣) . Её произ- водная по 𝑣 есть 𝜕𝑒 𝜕𝑣 = (𝑣 − 𝑓 ) , (1.2.7) а производная по сдвигу 𝑡 последнего слоя, очевидно 𝜕𝑒 𝜕𝑡 = 𝜕𝑒 𝜕𝑣 Рассмотрим замену переменных 𝑒 (𝑣) → 𝑒 (𝑊 𝛾 ) . Пользуясь формулой для преобразования градиента, запишем 𝜕𝑒 𝜕𝑊 𝛾 = 𝜕𝑒 𝜕𝑣 𝜕𝑣 𝜕𝑊 𝛾 Член 𝜕𝑣/𝜕𝑊 𝛾 вычисляется с помощью (1.2.4). Здесь и далее мы будем при необходимости писать штрих у индексов суммирования чтобы избежать их повторения: 𝜕 𝜕𝑊 𝛾 𝑣 = 𝜕 𝜕𝑊 𝛾 ⎡ ⎣ 𝑡 + ∑︁ 𝛾 ′ 𝑊 𝛾 ′ 𝜎 (︁ 𝑧 𝛾 ′ )︁ ⎤ ⎦ = 𝜎 (𝑧 𝛾 ) . (1.2.8) 17 Следовательно, 𝜕𝑒 𝜕𝑊 𝛾 = (𝑣 − 𝑓 ) 𝜎 (𝑧 𝛾 ) . Для вычисления градиента по весам между последним и предпоследним слоем рассмотрим замену 𝑒 (𝑧 𝛾 ) → 𝑒 (︀𝑊 𝛾𝛽 )︀ : 𝜕𝑒 𝜕𝑊 𝛾𝛽 = ∑︁ 𝛾 ′ 𝜕𝑒 𝜕𝑧 𝛾 ′ 𝜕𝑧 𝛾 ′ 𝜕𝑊 𝛾𝛽 (1.2.9) Здесь правый сомножитель есть градиент ошибки 𝑒 по активностям нейронов предпоследнего слоя 𝑧 𝛾 ′ . Он получается из замены 𝑒 (𝑣) → 𝑒 (︁ 𝑧 𝛾 ′ )︁ : 𝜕𝑒 𝜕𝑧 𝛾 ′ = 𝜕𝑒 𝜕𝑣 𝜕𝑣 𝜕𝑧 𝛾 ′ , в которой 𝜕𝑣/𝜕𝑧 𝛾 ′ находится путём дифференцирования формулы (1.2.4) 𝜕𝑣 𝜕𝑧 𝛾 ′ = 𝜕 𝜕𝑧 𝛾 ′ [︃ 𝑡 + ∑︁ 𝛾 𝑊 𝛾 𝜎 (𝑧 𝛾 ) ]︃ = 𝑊 𝛾 ′ 𝜎 ′ (︁ 𝑧 𝛾 ′ )︁ (1.2.10) Сомножитель 𝜕𝑒/𝜕𝑣 уже был вычислен. Второй сомножитель в (1.2.9) находится аналогично (1.2.8) (здесь 𝛿 𝛾 ′ 𝛾 есть символ Кронекера): 𝜕 𝜕𝑊 𝛾𝛽 𝑧 𝛾 ′ = 𝜕 𝜕𝑊 𝛾𝛽 ⎡ ⎣ 𝑡 𝛾 ′ + ∑︁ 𝛽 ′ 𝑊 𝛾 ′ 𝛽 ′ 𝜎 (︁ 𝑧 𝛽 ′ )︁ ⎤ ⎦ = 𝜎 (︀𝑧 𝛽 )︀ 𝛿 𝛾 ′ 𝛾 (1.2.11) Таким образом, выражение (1.2.9) принимает вид 𝜕𝑒 𝜕𝑊 𝛾𝛽 = ∑︁ 𝛾 ′ 𝜕𝑒 𝜕𝑧 𝛾 ′ (︀𝜎 (︀𝑧 𝛽 )︀ 𝛿 𝛾 ′ 𝛾 )︀ = 𝜕𝑒 𝜕𝑧 𝛾 𝜎 (︀𝑧 𝛽 )︀ . Градиент 𝑒 по параметрам сдвига, очевидно 𝜕𝑒 𝜕𝑡 𝛾 = 𝜕𝑒 𝜕𝑧 𝛾 (1.2.12) Для матрицы между входным и первым скрытым слоем можно записать 𝜕𝑒 𝜕𝑊 𝛽𝛼 = ∑︁ 𝛽 ′ 𝜕𝑒 𝜕𝑧 𝛽 ′ 𝜕𝑧 𝛽 ′ 𝜕𝑊 𝛽𝛼 (1.2.13) Где 𝜕𝑧 𝛽 ′ /𝜕𝑊 𝛽𝛼 аналогичен (1.2.11), но без нелинейной функции активации 𝜕𝑧 𝛽 ′ 𝜕𝑊 𝛽𝛼 = 𝑥 𝛼 𝛿 𝛽 ′ 𝛽 |