Английской грамматикой в объеме Basic English первым овладел Proteus orator mirabilis, тогда как E.coli eloquentissima даже в 21 000 поколении делал, увы, грамматические ошибки. С.Лем, "Эрунтика"
$$\ldots$$ постарайся, насколько можешь отвечать о чем я буду спрашивать тебя. И, если я по рассмотрении твоего ответа найду в нем нечто призрачное и неистинное, незаметно выну это и отброшу $$\ldots$$ Платон, " Теэтет"
Сети, о которых пойдет речь в этой лекции, являются основной "рабочей лошадкой" современного нейрокомпьютинга. Подавляющее
большинство приложений связано именно с применением таких многослойных персептронов или для краткости просто персептронов (напомним,
что это название происходит от английского
В немалой степени популярность персептронов обусловлена широким кругом доступных им задач. В общем виде они решают задачу аппроксимации многомерных функций, т.е. построения многомерного отображения $$F:x \Rightarrow y,$$ обобщающего заданный набор примеров $$\{x^{\alpha},y^{\alpha}\}$$.
В зависимости от типа выходных переменных (тип входных не имеет решающего значения), аппроксимация функций может принимать вид
Многие практические задачи распознавания образов, фильтрации шумов, предсказания временных рядов и др. сводится к этим базовым прототипическим постановкам.
Причина популярности персептронов кроется в том, что для своего круга задач они являются во-первых универсальными, а во-вторых - эффективными с точки зрения вычислительной сложности устройствами. В этой лекции мы затронем оба аспекта.
Изучение возможностей многослойных персептронов удобнее начать со свойств его основного компонента и одновременно простейшего персептрона - отдельного нейрона.
Простейшим устройством распознавания образов, принадлежащим к рассматриваемому
Здесь и далее мы предполагаем наличие у каждого нейрона дополнительного единичного входа с нулевым индексом, значение которого
постоянно: $$x_0 \equiv 1$$. Это позволит упростить выражения, трактуя все синаптические веса w j, включая порог w0, единым образом.
Скалярный выход нейрона можно использовать в качестве т.н. дискриминантной функции. Этим термином в теории распознавания образов называют индикатор принадлежности входного вектора к одному из заданных классов. Так, если входные векторы могут принадлежать одному из двух классов, нейрон способен различить тип входа, например, следующим образом: $$f(x)\geq 0$$ если , входной вектор принадлежит первому классу, в противном случае - второму.
Поскольку дискриминантная функция зависит лишь от линейной комбинации входов, нейрон является линейным дискриминатором. В некоторых простейших ситуациях линейный дискриминатор - наилучший из возможных, а именно - в случае когда вероятности принадлежности входных векторов к классу k задаются гауссовыми распределениями $$p_k(x) \infty exp[-(x-m_k)^T \sum^{-1}(x-m_k)]$$ с одинаковыми ковариационными матрицами $$\sum$$. В этом случае границы, разделяющие области, где вероятность одного класса больше, чем вероятность остальных, состоят из гиперплоскостей (см. рис 3.1(рис 3.1) Линейный дискриминатор дает точное решение в случае если вероятности принадлежности к различным классам - гауссовы, с одинаковым разбросом и разными центрами в пространстве параметров
В более общем случае поверхности раздела между классами можно описывать приближенно набором гиперплоскостей - но для этого уже потребуется несколько линейных дискриминаторов - нейронов.
Монотонные функции активации $$f()$$ не влияют на классификацию. Но их значимость можно повысить, выбрав таким образом,
чтобы можно было трактовать выходы нейронов как вероятности принадлежности к соответствующему классу, что дает дополнительную
информацию при классификации. Так, можно показать, что в упомянутом выше случае гауссовых распределений вероятности, сигмоидная
Возможности линейного дискриминатора весьма ограничены. Он способен правильно решать лишь ограниченный круг задач - когда классы, подлежащие классификации линейно-разделимы, т.е. могут быть разделены гиперплоскостью ( рис 3.2(рис 3.2) Пример линейно разделимых (слева) и линейно-неразделимых (справа) множеств
В d-мерном пространстве гиперплоскость может разделить произвольным образом лишь d+1 точки. Например, на плоскости можно произвольным образом разделить по двум классам три точки, но четыре - в общем случае уже невозможно (см. рисунок 3.2). В случае плоскости это очевидно из приведенного примера, для большего числа измерений - следует из простых комбинаторных соображений. Если точек больше чем d+1 всегда существуют такие способы их разбиения по двум классам, которые нельзя осуществить с помощью одной гиперплоскости. Однако, этого можно достичь с помощью нескольких гиперплоскостей.
Для решения таких более сложных классификационных задач необходимо усложнить сеть, вводя дополнительные (их называют скрытыми) слои нейронов, производящих промежуточную предобработку входных данных таким образом, чтобы выходной нейрон-классификатор получал на свои входы уже линейно-разделимые множества.
Причем легко показать, что, в принципе, всегда можно обойтись всего лишь одним скрытым слоем, содержащим достаточно большое число нейронов. Действительно, увеличение скрытого слоя повышает размерность пространства, в котором выходной нейрон производит дихотомию, что, как отмечалось выше, облегчает его задачу.
Не вдаваясь в излишние подробности резюмируем результаты многих исследований аппроксимирующих способностей персептронов.
Для
Точность аппроксимации возрастает с числом нейронов скрытого слоя. При H нейронах ошибка оценивается как $$O(1/H)$$. Эта оценка понадобится нам в дальнейшем.
Исторически, первые персептроны, предложенные Фрэнком Розенблаттом в 1958 г., имели два слоя нейронов. Однако, собственно обучающимся был лишь один, последний слой. Первый (скрытый) слой состоял из нейронов с фиксированными случайными весами. Эти, по терминологии Розенблатта - ассоциирующие, нейроны получали сигналы от случайно выбранных точек рецепторного поля. Именно в этом признаковом пространстве персептрон осуществлял линейную дискриминацию подаваемых на вход образов (см. рисунок 3.3).
(рис 3.3) Персептрон Розенблатта имел один слой обучаемых весов, на входы которого подавались сигналы с d = 512 ассоциирующих нейронов со случайными фиксированными весами, образующие признаковое пространство для 400-пиксельных образовРезультаты своих исследований Розенблатт изложил в книге "Принципы нейродинамики: Персептроны и теория механизмов мозга". Уже из самого названия чувствуется какое большое значение придавалось этому относительно простому обучающемуся устройству. Однако, многочисленные эксперименты показали неровный характер обучаемости персептронов. Некоторые задачи решались относительно легко, тогда как другие - вообще не поддавались обучению. В отсутствие теории объяснить эти эксперименты и определить перспективы практического использования персептронов было невозможно.
Подобного рода теория появилась к 1969г. с выходом в свет книги Марвина Минского и Сеймура Пейперта "Персептроны". Минский и Пейперт показали, что если элементы скрытого слоя фиксированы, их количество либо их сложность экспоненциально возрастает с ростом размерности задачи (числа рецепторов). Тем самым, теряется их основное преимущество - способность решать задачи произвольной сложности при помощи простых элементов.
Реальный же выход состоял в том, чтобы использовать адаптивные элементы на скрытом слое, т.е. подбирать веса и первого и второго слоев. Однако в то время этого делать не умели. Каким же образом находить синаптические веса сети, дающие оптимальную классификацию входных векторов?
Прежде чем ответить на этот вопрос, следует задать критерий оптимальности. Поскольку нейросети осуществляют статистическую обработку данных, нам следует обратиться к основам математической статистики - индуктивному методу.
Основная проблема статистики - обобщение эмпирических данных. В формализованном виде задача состоит в выборе наилучшей модели (гипотезы, объясняющей наблюдаемые данные) из некоторого доступного множества. Для решения этой задачи надо уметь оценивать степень достоверности той или иной гипотезы. Математическая формулировка этого подхода содержится в знаменитой теореме Байеса.
Обозначим весь набор имеющихся данных $$D$$, а гипотезы, объясняющие эти данные (в нашем случае - нейросети), как $$N$$. Предполагается, что каждая такая гипотеза объясняет данные с большей или меньшей степенью вероятности $$P(D|N)$$. Теорема Байеса дает решение обратной задачи - определить степень достоверности гипотез $$P(N|D)$$, исходя из их успехов в объяснении данных. Согласно этой теореме, достоверность гипотезы пропорциональна ее успеху, а также ее априорной вероятности, $$P(N)$$, известной из других соображений, не относящихся к данной серии наблюдений:
$$P(N|D)=\frac{P(D|N)P(N)}{\sum_N P(D|N)P(N)}$$Наилучшая модель определяется максимизацией $$P(N|D)$$ или ее логарифма, что дает один и тот же результат в силу монотонности логарифмической функции. Логарифмы удобны тем, что произведение вероятностей независимых событий они переводят в сумму их логарифмов:$$\label{math/1} \max_N \log P(N|D)\Rightarrow \max_N\{log P(D|N)+\log P(N)\}$$ (Знаменатель не зависит от модели и не влияет на выбор лучшей.)
Выписанная выше формула является базовой для понимания основ обучения нейросетей, т.к. она задает критерий оптимальности обучения, к которому надо стремиться. Мы еще неоднократно вернемся к ней на протяжении этой лекции. Обсудим, прежде всего значение обоих членов в правой части полученного выражения.
Заметим, прежде всего, что второй член в правой части выражения не зависит от данных. Первый же, отражающий эмпирический опыт, как правило, имеет вид колокола тем более узкого, чем больше объем имеющихся в распоряжении данных (см. рисунок 3.4).
(рис 3.4) Качественная зависимость априорной и эмпирической составляющих формулы Байеса. Чем больше данных - тем точнее можно выбрать проверяемую гипотезуДействительно, чем больше данных - тем точнее могут быть проверены следствия конкурирующих гипотез, и, следовательно, тем точнее будет выбор наилучшей.
Следовательно, при стремлении количества данных к бесконечности, последним членом можно пренебречь. Это приближение:$$\max_N \log P(N|D)\Rightarrow \min_N\{-log P(D|N)\}$$ получило название принципа максимального правдоподобия (Фишер) и характерно для т.н. параметрической статистики, в которой модель представляет собой семейство решений с небольшим и фиксированным набором параметров.
Отрицательный логарифм вероятности имеет смысл эмпирической ошибки при подгонке данных с помощью имеющихся в модели свободных параметров.
Например, в
Отрицательный логарифм, таким образом, пропорционален сумме квадратов, и аппроксимация функции сводится к минимизации среднеквадратичной ошибки:$$\min\{-ln{P(D|N)}\}\Rightarrow min \{\sum_\alpha(y^\alpha-y(x^\alpha,N))^2\}$$
В случае нейросетевого моделирования число параметров, как правило, велико, более того, размер сети, как правило, соотносится с объемом обучающей выборки, т.е. число параметров зависит от числа данных. В принципе, как отмечалось ранее, взяв достаточно большую нейросеть, можно приблизить имеющиеся данные со сколь угодно большой точностью. Между тем, зачастую это не то, что нам надо. Например, правильная аппроксимация зашумленной функции по определению должна давать ошибку - порядка дисперсии шума.
Учет второго члена формулы (1) позволяет наложить необходимые ограничения на сложность модели, подавляя, например, излишнее количество настроечных параметров. Смысл совместной оптимизации эмпирической ошибки и сложности модели дает принцип минимальной длины описания.
Согласно этому принципу следует минимизировать общую длину описания данных с помощью модели и описания самой модели. Чтобы увидеть это перепишем формулу (1) в виде:$$\min_N\{-log{P(D|N)-log{P(N)}}\}=\min_N\{\text{описание ошибки+описание модели}\}$$
Первый член, как мы убедились, есть эмпирическая ошибка. Чем она меньше - тем меньше бит потребуется для исправления предсказаний
модели. Если модель предсказывает все данные точно, длина описания ошибки равна нулю. Второй член имеет смысл количества информации,
необходимого для выбора конкретной модели из множества с
Очень сильный результат теории индуктивного вывода, принадлежащий Рисанену, ограничивает ожидаемую ошибку модели на новых данных степенью сжатия информации с помощью этой модели. Чем меньше описанная выше суммарная длина описания, тем надежнее предсказания такой модели.
Этот вывод пригодится нам позднее - для выбора оптимального размера нейросетей. Пока же предположим, что цель обучения сформулирована - имеется подлежащий минимизации функционал ошибки $$E(w)=E\{x^\alpha,y^\alpha,y(x^\alpha,w)\}$$, зависящий от всех настроечных весов нейросети. Наша ближайшая задача - понять каким образом можно найти значения этих весов, минимизируещих такой функционал.
Наиболее общим способом оптимизации нейросети является итерационная (постепенная) процедура подбора весов, называемая обучением, в данном случае - обучением с учителем, поскольку опирается на обучающую выборку примеров $$\{x^\alpha,y^\alpha\}$$, например - примеров правильной классификации.
Когда функционал ошибки задан, и задача сводится к его минимизации, можно предложить, например, следующую итерационную процедуру подбора весов: $$w^{x+1}=w^x-\eta^x\frac{\partial{E}}{\partial{w}}$$ или, что то же самое:$$w^{x+1}_{ij}=w^x_{ij}-\eta^x\frac{\partial{E}}{\partial{w_{ij}}}.$$
Здесь $$\eta^x\ll|w|$$ - темп обучения на шаге $$\tau$$. Можно показать, что постепенно уменьшая темп обучения, например по закону $$\eta^x = 1/\tau$$, описанная выше процедура приводит к нахождению локального минимума ошибки.
Исторически наибольшую трудность на пути к эффективному правилу обучения многослойных персептронов вызвала процедура эффективного
расчета
Ключ к обучению многослойных персептронов оказался настолько простым и очевидным, что, как оказалось, неоднократно переоткрывался.
Между тем, в случае дифференцируемых функций активации рецепт нахождения производных по любому весу сети дается т.н. цепным правилом дифференцирования, известным любому первокурснику. Суть метода back-propagation - в эффективном воплощении этого правила.
Разберем этот ключевой для нейрокомпьютинга метод несколько подробнее. Обозначим входы n-го слоя нейронов $$x^{[n]}_j$$. Нейроны этого слоя вычисляют соответствующие линейные комбинации:$$a^{[n]}_j=\sum_jw^{[n]}_{ij}x^{[n]}_j$$ и передают их на следующий слой, пропуская через нелинейную функцию активации (для простоты - одну и ту же, хотя это совсем необязательно):$$x^{[n+1]}_j=f(a^{[n]}_i).$$ Для построения алгоритма обучения нам надо знать производную ошибки по каждому из весов сети:$$\frac{\partial{E}}{\partial{w^{[n]}_{ij}}}=\frac{\partial{E}}{\partial{a^{[n]}_i}}\frac{\partial{a^{[n]}_i}}{\partial{w^{[n]}_{ij}}}\equiv\delta^{[n]}_ix^{[n]}_j.$$ Таким образом, вклад в общую ошибку каждого веса вычисляется локально, простым умножением невязки нейрона $$\delta^{[n]}_i$$ на значение соответствующего входа. (Из-за этого, в случае когда веса изменяют по направлению скорейшего спуска $$\Delta{w_{ij}}\infty-\partial{E}/\partial{w_{ij}}=-\delta_ix_j$$, такое правило обучения называют дельта-правилом.)
Входы каждого слоя вычисляются последовательно от первого слоя к последнему во время прямого распространения сигнала:$$x^{[n+1]}_i=f\left(\sum_jw^{[n]}_{ij}x^{[n]}_j \right)$$ , а невязки каждого слоя вычисляются во время обратного распространения ошибки от последнего слоя (где они определяются по выходам сети) к первому:$$\delta^{[n]}_i=f'(a^{[n]}_i)(\sum_kw^{[n+1]}_{ki}\delta^{[n+1]}_k).$$ Последняя формула получена применением цепного правила к производной$$\frac{\partial{E}}{\partial{a^{[n]}_i}}=\sum_k\frac{\partial{E}} {\partial{a^{[n+1]}_k}}\frac{\partial{a^{[n+1]}_k}}{\partial{x^{[n+1]}_i}} \frac{\partial{x^{[n+1]}_i}}{\partial{a^{[n+1]}_i}}.$$ и означает, что чем сильнее учитывается активация данного нейрона на следующем слое, тем больше его ответственность за общую ошибку.
Важность изложенного выше алгоритма back-propagation в том, что он дает чрезвычайно эффективный способ нахождения W, то необходимое для вычисления градиента число операций растет пропорционально W, т.е. этот алгоритм имеет сложность O(W). Напротив, прямое вычисление градиента по формуле$$\frac{\partial{E}}{\partial{w^{[n]}_{ij}}}=\frac{E(w^{[n]}_{ij}+\varepsilon)-E(w^{[n]}_{ij})}{\varepsilon}$$
потребовала бы W прямых прогонов через сеть, требующих O(W) операций каждый. Таким образом "наивный" алгоритм имеет сложность $$O(W^2)$$,
что существенно хуже, чем у алгоритма back-propagation.
При оценке значения алгоритма back-propagation важно различать нахождение градиента ошибки $$\frac{\partial{E}}{\partial{w}}$$ и его использование для обучения. Иногда под этим именем понимают именно конкретный тип итерационного обучения, предложенный в статье Румельхарта с соавторами. Этот простейший тип обучения (метод скорейшего спуска) обладает рядом недостатков. Существуют много гораздо более хороших алгоритмов обучения, использующих градиент ошибки более эффективно. Ниже мы перечислим некоторые из них, наиболее часто используемые на практике. Подчеркнем, однако, что все они так или иначе используют изложенный выше метод back-propagation для нахождения градиента ошибки.
Итак, простейший способ использования градиента при обучении - изменение весов пропорционально градиенту - т.н метод наискорейшего спуска:$$\Delta{w}=-\eta\frac{\partial{E}}{\partial{w}}$$
Этот метод оказывается, однако, чрезвычайно неэффективен в случае, когда производные по различным весам сильно отличаются, т.е.
рельеф функции ошибки напоминает не яму, а длинный овраг. (Это соответствует ситуации, когда активация некоторых из сигмоидных нейронов
близка по модулю к 1 или, что то же самое - когда модуль некоторых весов много больше 1). В этом случае для плавного уменьшения ошибки
необходимо выбирать очень маленький темп обучения, диктуемый максимальной производной (шириной оврага), тогда как расстояние до минимума
по порядку величины определяется минимальной производной (длиной оврага). В итоге обучение становится неприемлемо медленным. Кроме того,
на самом дне оврага неизбежно возникают осцилляции, и обучение теряет привлекательное свойство монотонности убывания ошибки.
(рис 3.5) Неэффективность метода скорейшего спуска: градиент направлен не в сторону минимума
Простейшим усовершенствованием метода скорейшего спуска является введение момента , когда влияние градиента на изменение весов накапливается со временем:$$\Delta{w^x}=-\eta\frac{\partial{E}}{\partial{w}}+\mu\Delta{w^{x-1}}.$$
Качественно влияние момента на процесс обучения можно пояснить следующим образом. Допустим, что градиент меняется плавно, так что
на протяжении некоторого времени его изменением можно пренебречь (мы находимся далеко от дна оврага). Тогда изменение весов можно
записать в виде:$$\Delta{w^2}=-\eta\frac{\partial{E}}{\partial{w}}(1+\mu+\mu^2+\ldots)=-\frac{\eta}{1-\mu}\frac{\partial{E}}{\partial{w}},$$
т.е. в этом случае эффективный темп обучения увеличивается, причем существенно, если момент $$\mu\cong1$$. Напротив, вблизи дна оврага, когда
направление градиента то и дело меняет знак из-за описанных выше осцилляций, эффективный темп обучения замедляется до значения близкого
к $$\eta$$:$$\Delta{w^2}=-\eta\frac{\partial{E}}{\partial{w}}(1-\mu+\mu^2-\ldots)=-\frac{\eta}{1-\mu}\frac{\partial{E}}{\partial{w}}.$$
(рис 3.6) Введение инерции в алгоритм обучения позволяет адаптивно менять скорость обучения
Дополнительное преимущество от введения момента - появляющаяся у алгоритма способность преодолевать мелкие локальные минимумы. Это свойство можно увидеть, записав разностное уравнение для обучения в виде дифференциального. Тогда обучение методом скорейшего спуска будет описываться уравненем движения тела в вязкой среде: $$dw/d\tau=-\eta\partial{E}/\partial{w}$$. Введение момента соответствует появлению у такого гипотетического тела инерции, т.е. массы: $$\mu d^2w/d\tau^2+(1-\mu)dw/d\tau=-\eta\partial{E}\partial{w}$$. В итоге, "разогнавшись", тело может по инерции преодолевать небольшие локальные минимумы ошибки, застревая лишь в относительно глубоких, значимых минимумах.
Одним из недостатков описанного метода является введение еще одного глобального настроечного параметра. Мы же, наоборот, должны
стремиться к отсутствию таких навязываемых алгоритму извне параметров. Идеальной является ситуация, когда все параметры обучения сами
настраиваются в процессе обучения, извлекая информацию о характере рельефа функции ошибки из самого хода обучения. Примером весьма
удачного алгоритма обучения является т.н. RPROP (от
RPROP стремится избежать замедления темпа обучения на плоских "равнинах" ландшафта функции ошибки, характерного для схем, где изменения весов пропорциональны величине градиента. Вместо этого RPROP использует лишь знаки частных производных по каждому весу.$$\Delta w^{x}_{ij}= \left\{\begin{array}{l} -\Delta^x_{ij}, \partial{E^x}/\partial{w_{ij}}>0\\ +\Delta^x_{ij}, \partial{E^x}/\partial{w_{ij}} \le 0\\ 0, else \end{array} \right.$$
Величина шага обновления - своя для каждого веса и адаптируется в процессе обучения:$$\Delta w^{x}_{ij}= \left\{\begin{array}{l} \eta^+\Delta^{r-1}}_{ij}, \partial{E^r}/\partial{w_{ij}}\cdot\partial{E^{r-1}}/\partial{w_{ij}}>0\\ \eta^-\Delta^{r-1}}_{ij}, \partial{E^r}/\partial{w_{ij}}\cdot\partial{E^{r-1}}/\partial{w_{ij}}\le 0\\ \end{array} \right.$$
Если знак производной по данному весу изменил направление, значит предыдущее значение шага по данной координате было слишком велико, и алгоритм уменьшает его в$$\eta^{-}\le 1$$ раз. В противном случае шаг увеличивается в$$\eta^{+}>1$$ раз для ускорения обучения вдали от минимума.
Мы не затронули здесь более изощренных методов обучения, таких как
Ранее при обсуждении истории нейрокомпьютинга мы ссылались на относительную трудоемкость процесса обучения. Чтобы иметь хотя бы приблизительное представление о связанных с обучением вычислительных затратах, приведем качественную оценку вычислительной сложности алгоритмов обучения.
Пусть как всегда W - число синаптических весов сети (weights), а P - число обучающих примеров (patterns). Тогда для однократного
вычисления
В описанных до сих пор методах обучения значения весов подбиралось в сети с заданной топологией связей. А как выбирать саму структуру сети: число слоев и количество нейронов в этих слоях? Решающим, как мы увидим, является выбор соотношения между числом весов и числом примеров. Зададимся поэтому теперь следующим вопросом:
Рассмотрим для определенности двухслойную сеть (т.е. сеть с одним скрытым слоем). Точность аппроксимации функций такой сетью, как
уже говорилось, возрастает с числом нейронов скрытого слоя. При $$H$$ нейронах ошибка оценивается как $$O(1/H)$$.
Поскольку число выходов сети, как правило, много меньше числа входов, основное число весов в двухслойной сети сосредоточено в первом слое, т.е. $$W\sim Hd$$. В этом случае средняя ошибка аппроксимации выразится через общее число весов в сети следующим образом:$$\varepsilon_{approx}\sim O(d/W).$$
где d - размерность входов.
Наши недостатки, как известно - продолжения наших достоинств. И упомянутая выше универсальность персептронов превращается одновременно в одну из главных проблем обучающихся алгоритмов, известную как проблема переобучения.
Суть этой проблемы лучше всего объяснить на конкретном примере. Пусть обучающие примеры порождаются некоторой функцией, которую нам
и хотелось бы воспроизвести. В теории обучения такую функцию называют учителем. При конечном числе обучающих примеров всегда возможно
построить нейросеть с нулевой P уравнений для W
неизвестных. И если число неизвестных меньше числа уравнений, такая система является недоопределенной и допускает бесконечно много
решений. В этом-то и состоит основная проблема: у нас не хватает информации, чтобы выбрать единственное правильное решение -
функцию-учителя. В итоге выбранная случайным образом функция дает плохие предсказания на новых примерах, отсутствовавших в
обучающей выборке, хотя последнюю сеть воспроизвела без ошибок. Вместо того, чтобы обобщить известные примеры, сеть запомнила их. Этот эффект и называется переобучением.
На самом деле, задачей теории обучения является не минимизация ошибки обучения, а минимизация ошибки обобщения, определенной для всех возможных в будущем примеров. Именно такая сеть будет обладать максимальной предсказательной способностью. И трудность здесь состоит в том, что реально наблюдаемой является именно и только ошибка обучения. Ошибку обобщения можно лишь оценить, опираясь на те или иные соображения.
В этой связи вспомним изложенный в начале этой лекции принцип минимальной длины описания. Согласно этому общему принципу, ошибка предсказаний сети на новых данных определяется общей длиной описания данных с помощью модели вместе с описанием самой модели:$$-\log P(D|N)-\log P(N) = \text{описание ошибки + описание модели}$$
Первый член этого выражения отвечает наблюдаемой ошибке обучения. Мы оценили его выше. Теперь обратимся к оценке второго члена, регуляризирующего обучение.
Описание сети сводится, в основном, к передаче значений ее весов. При заданной точности такое описание потребует порядка$$-\log P(N)\sim W$$ бит. Следовательно удельную ошибку на один пример, связанную со сложностью модели, можно оценить следующим образом:$$\varepsilon_{complex}\sim W/P.$$
Она, как мы видим, монотонно спадает с ростом числа примеров.
Действительно, для однозначного определения подгоночных параметров (весов сети) по $$P$$ заданным примерам необходимо, чтобы
система $$P$$ уравнений была переопределена, т.е. число параметров $$W$$ было больше числа уравнений. Чем больше степень переопределенности,
тем меньше результат обучения зависит от конкретного выбора подмножества обучающих примеров. Определенная выше составляющая ошибки
обобщения, как раз и связана с вариациями решения, обусловленными конечностью числа
Итак, мы оценили обе составляющих ошибки обобщения сети. Важно, что эти составляющие по-разному зависят от размера сети (числа весов), что предполагает возможность выбора оптимального размера, минимизирующего общую ошибку:$$\varepsilon\sim\varepsilon_{approx}+\varepsilon_{complex}\sim d/W+W/P\geq \sqrt{d/P}.$$
Минимум ошибки (знак равенства) достигается при оптимальном числе весов в сети$$W\sim \sqrt{Pd},$$ соответствующих числу нейронов в скрытом слое равному по порядку величины:$$H\sim W/d \sim\sqrt{P/d}.$$
Этот результат можно теперь использовать для получения окончательной оценки сложности обучения (C - от английского complexity)$$C\sim PW^2\sim dP^2$$
Отсюда можно сделать следующий практический вывод: нейроэмуляторам с производительностью современных персональных компьютеров
( $$10^7$$ операций в секунду) вполне доступны анализ баз данных с числом примеров $$P\sim 10^4$$
и размерностью входов $$d\sim10^2\div10^3$$. Типичное время обучения при этом
составит $$\tau\sim10^4\div10^5$$ секунд, т.е. от десятков минут до несколько часов. Поскольку производственный цикл нейроанализа предполагает обучение
нескольких, иногда - многих сетей, такой размер баз данных, представляется предельным для
Согласно полученным выше оценкам ошибка классификации на таком классе задач порядка 10%. Это, конечно, не означает, что с такой точностью можно предсказывать что угодно. Многие относительно простые задачи классификации решаются с большей точностью, поскольку их эффективная размерность гораздо меньше, чем число входных переменных. Напротив, для рыночных котировок достижение соотношения правильных и неправильных предсказаний 65:35 уже можно считать удачей. Действительно, приведенные выше оценки предполагали отсутствие случайного шума в примерах. Шумовая составляющая ошибки предсказаний должна быть добавлена к полученной выше оценке. Для сильно зашумленных рыночных временных рядов именно она определяет предельную точность предсказаний. Подробнее эти вопросы будут освещены в отдельной лекции, посвященной предсказанию зашумленных временных рядов.
Другой вывод из вышеприведенных качественных оценок - обязательность этапа предобработки высокоразмерных данных. Невозможно
классифицировать непосредственно картинки с размерностью $$d\sim10^6$$. Из оценки точности классификации следует, что это потребует числа обучающих
примеров по крайней мере такого же порядка, т.е. сложность обучения будет порядка $$C\simd d^3\sim10^{18}$$. Современным
нейрокомпьютерам с производительностью $$10^{10}$$ операций в секунду потребовалось бы несколько лет обучения распознаванию таких образов.
Зрительная система человека, составляющая несколько процентов коры головного мозга, т.е. $$\sim10^{14}\frac{син}{c}$$ обладающая производительностью способна
обучаться распознаванию таких образов за несколько
Методы предобработки сигналов и формирования относительно малоразмерного пространства признаков являются важнейшей составляющей нейроанализа и будут подробно рассмотрены далее в отдельной лекции.
Итак, мы выяснили, что существует оптимальная сложность сети, зависящая от количества примеров, и даже получили оценку размеров скрытого слоя для двухслойных сетей. Однако в общем случае следует опираться не на грубые оценки, а на более надежные механизмы адаптации сложности нейросетевых моделей к данным для каждой конкретной задачи.
Для борьбы с переобучением в нейрокомпьютинге используются три основных подхода:
Прежде всего, для любого из перечисленных методов необходимо определить критерий оптимальной сложности сети -
(рис 3.7) Обучающее (темные точки) и валидационные (светлые точки) множества примеров
Обучение сетей обычно начинается с малых случайных значений весов. Пока значения весов малы по сравнением с характерным масштабом нелинейной функции активации (обычно принимаемом равным единице), вся сеть представляет из себя суперпозицию линейных преобразований, т.е. является также линейным преобразованием с эффективным числом параметров равным числу входов, умноженному на число выходов. По мере возрастания весов и степень нелинейности, а вместе с ней и эффективное число параметров возрастает, пока не сравняется с общим числом весов в сети.
В методе ранней остановки обучение прекращается в момент, когда сложность сети достигнет оптимального значения. Этот момент
оценивается по поведению во времени ошибки валидации. Рисунок 3.8. дает качественное представление
об этой методике.
(рис 3.8) Ранняя остановка сети в момент минимума ошибки валидации (штрих-пунктирная кривая). При этом обычно ошибка обучения (сплошная кривая) продолжает понижаться
Эта методика привлекательна своей простотой. Но она имеет и свои слабые стороны: слишком большая сеть будет останавливать свое обучение на ранних стадиях, когда нелинейности еще не успели проявиться в полную силу. Т.е. эта методика чревата нахождением слабо-нелинейных решений. На поиск сильно нелинейных решений нацелен метод прореживания весов, который, в отличае от предыдущего, эффективно подавляет именно малые значения весов.
Эта методика стремится сократить разнообразие возможных конфигураций обученных нейросетей при минимальной потере их аппроксимирующих
способностей. Для этого вместо колоколообразной формы априорной функции распределения весов, характерной для обычного обучения, когда
веса "расползаются" из начала координат, применяется такой алгоритм обучения, при котором функция распределения весов
сосредоточена в основном в "нелинейной" области относительно больших значений весов (см.
рисунок 3.9).
(рис 3.9) Подавление малых значений весов в методе прореживания связей
Этого достигают введением соответствующей штрафной составляющей в функционал ошибки. Например, априорной функции распределения:$$P(N)\infty\exp\left[-\lambda\sum_{ij}\frac{w^{2}_{ij}}{w^2_0+w^2_{ij}}\right],$$ имеющую максимум в вершинах гиперкуба с $$|w_{ij}|\sim w_0$$, соответствует штрафной член:$$E_{complex}=-\log P(N)=\lambda\sum_{ij}\frac{w^2_{ij}}{w^2_{0}+w^2_{ij}}$$ в функционале ошибки. Дополнительная составляющая градиента$$\frac{\partial{E_{complex}}}{\partial{w_{ij}}}=-\frac{2\lambda w_{ij}}{(w^2_0+w^2_{ij})^2}$$ исчезающе мала для больших весов, $$|w_{ij}|\gg w_0$$, и пропорциональна величине малых весов, $$|w_{ij}|\leq w_0$$. Соответственно, на больших штрафная функция практически не сказывается, тогда как малые веса экспоненциально затухают.
Таким образом, происходит эффективное вымывание малых весов (weights elimination), т.е. прореживание малозначимых связей. Противоположная методика предполагает, напротив, поэтапное наращивание сложности сети. Соответствующее семейство алгоритмов обучения называют конструктивными алгоритмами.
Эти алгоритмы характеризуются относительно быстрым темпом обучения, поскольку разделяют сложную задачу обучения большой многослойной сети на ряд более простых задач, обычно - обучения однослойных подсетей, составляющих большую сеть. Поскольку сложность обучения пропорциональна квадрату числа весов, обучение "по частям" выгоднее, чем обучение целого:$$W^2=\left(\sum_k W_k\right)^2>\sum_k W^2_k.$$
Для примера опишем так называемую каскад-корреляционную методику обучения нейросетей. Конструирование сети начинается с единственного выходного нейрона и происходит путем добавления каждый раз по одному промежуточному нейрону (см. рис 3.10(рис 3.10) Каскад-корреляционные сети: добавление промежуточных нейронов с фиксированными весами (тонкие линии)
Эти промежуточные нейроны имеют фиксированные веса, выбираемые таким образом, чтобы выход добавляемых нейронов в максимальной степени коррелировал с ошибками сети на данный момент (откуда и название таких сетей). Поскольку веса промежуточных нейронов после добавления не меняются, их выходы для каждого значения входов можно вычислить лишь однажды. Таким образом, каждый добавляемый нейрон можно трактовать как дополнительный признак входной информации, максимально полезный для уменьшения ошибки обучения на данном этапе роста сети. Оптимальная сложность сети может определяться, например, с помощью валидационного множества.
Английской грамматикой в объеме Basic English первым овладел Proteus orator mirabilis, тогда как E.coli eloquentissima даже в 21 000 поколении делал, увы, грамматические ошибки. С.Лем, "Эрунтика"
$$\ldots$$ постарайся, насколько можешь отвечать о чем я буду спрашивать тебя. И, если я по рассмотрении твоего ответа найду в нем нечто призрачное и неистинное, незаметно выну это и отброшу $$\ldots$$ Платон, " Теэтет"
Сети, о которых пойдет речь в этой лекции, являются основной "рабочей лошадкой" современного нейрокомпьютинга. Подавляющее
большинство приложений связано именно с применением таких многослойных персептронов или для краткости просто персептронов (напомним,
что это название происходит от английского
В немалой степени популярность персептронов обусловлена широким кругом доступных им задач. В общем виде они решают задачу аппроксимации многомерных функций, т.е. построения многомерного отображения $$F:x \Rightarrow y,$$ обобщающего заданный набор примеров $$\{x^{\alpha},y^{\alpha}\}$$.
В зависимости от типа выходных переменных (тип входных не имеет решающего значения), аппроксимация функций может принимать вид
Многие практические задачи распознавания образов, фильтрации шумов, предсказания временных рядов и др. сводится к этим базовым прототипическим постановкам.
Причина популярности персептронов кроется в том, что для своего круга задач они являются во-первых универсальными, а во-вторых - эффективными с точки зрения вычислительной сложности устройствами. В этой лекции мы затронем оба аспекта.
Изучение возможностей многослойных персептронов удобнее начать со свойств его основного компонента и одновременно простейшего персептрона - отдельного нейрона.
Простейшим устройством распознавания образов, принадлежащим к рассматриваемому
Здесь и далее мы предполагаем наличие у каждого нейрона дополнительного единичного входа с нулевым индексом, значение которого
постоянно: $$x_0 \equiv 1$$. Это позволит упростить выражения, трактуя все синаптические веса w j, включая порог w0, единым образом.
Скалярный выход нейрона можно использовать в качестве т.н. дискриминантной функции. Этим термином в теории распознавания образов называют индикатор принадлежности входного вектора к одному из заданных классов. Так, если входные векторы могут принадлежать одному из двух классов, нейрон способен различить тип входа, например, следующим образом: $$f(x)\geq 0$$ если , входной вектор принадлежит первому классу, в противном случае - второму.
Поскольку дискриминантная функция зависит лишь от линейной комбинации входов, нейрон является линейным дискриминатором. В некоторых простейших ситуациях линейный дискриминатор - наилучший из возможных, а именно - в случае когда вероятности принадлежности входных векторов к классу k задаются гауссовыми распределениями $$p_k(x) \infty exp[-(x-m_k)^T \sum^{-1}(x-m_k)]$$ с одинаковыми ковариационными матрицами $$\sum$$. В этом случае границы, разделяющие области, где вероятность одного класса больше, чем вероятность остальных, состоят из гиперплоскостей (см. рис 3.1(рис 3.1) Линейный дискриминатор дает точное решение в случае если вероятности принадлежности к различным классам - гауссовы, с одинаковым разбросом и разными центрами в пространстве параметров
В более общем случае поверхности раздела между классами можно описывать приближенно набором гиперплоскостей - но для этого уже потребуется несколько линейных дискриминаторов - нейронов.
Монотонные функции активации $$f()$$ не влияют на классификацию. Но их значимость можно повысить, выбрав таким образом,
чтобы можно было трактовать выходы нейронов как вероятности принадлежности к соответствующему классу, что дает дополнительную
информацию при классификации. Так, можно показать, что в упомянутом выше случае гауссовых распределений вероятности, сигмоидная
Возможности линейного дискриминатора весьма ограничены. Он способен правильно решать лишь ограниченный круг задач - когда классы, подлежащие классификации линейно-разделимы, т.е. могут быть разделены гиперплоскостью ( рис 3.2(рис 3.2) Пример линейно разделимых (слева) и линейно-неразделимых (справа) множеств
В d-мерном пространстве гиперплоскость может разделить произвольным образом лишь d+1 точки. Например, на плоскости можно произвольным образом разделить по двум классам три точки, но четыре - в общем случае уже невозможно (см. рисунок 3.2). В случае плоскости это очевидно из приведенного примера, для большего числа измерений - следует из простых комбинаторных соображений. Если точек больше чем d+1 всегда существуют такие способы их разбиения по двум классам, которые нельзя осуществить с помощью одной гиперплоскости. Однако, этого можно достичь с помощью нескольких гиперплоскостей.
Для решения таких более сложных классификационных задач необходимо усложнить сеть, вводя дополнительные (их называют скрытыми) слои нейронов, производящих промежуточную предобработку входных данных таким образом, чтобы выходной нейрон-классификатор получал на свои входы уже линейно-разделимые множества.
Причем легко показать, что, в принципе, всегда можно обойтись всего лишь одним скрытым слоем, содержащим достаточно большое число нейронов. Действительно, увеличение скрытого слоя повышает размерность пространства, в котором выходной нейрон производит дихотомию, что, как отмечалось выше, облегчает его задачу.
Не вдаваясь в излишние подробности резюмируем результаты многих исследований аппроксимирующих способностей персептронов.
Для
Точность аппроксимации возрастает с числом нейронов скрытого слоя. При H нейронах ошибка оценивается как $$O(1/H)$$. Эта оценка понадобится нам в дальнейшем.
Исторически, первые персептроны, предложенные Фрэнком Розенблаттом в 1958 г., имели два слоя нейронов. Однако, собственно обучающимся был лишь один, последний слой. Первый (скрытый) слой состоял из нейронов с фиксированными случайными весами. Эти, по терминологии Розенблатта - ассоциирующие, нейроны получали сигналы от случайно выбранных точек рецепторного поля. Именно в этом признаковом пространстве персептрон осуществлял линейную дискриминацию подаваемых на вход образов (см. рисунок 3.3).
(рис 3.3) Персептрон Розенблатта имел один слой обучаемых весов, на входы которого подавались сигналы с d = 512 ассоциирующих нейронов со случайными фиксированными весами, образующие признаковое пространство для 400-пиксельных образовРезультаты своих исследований Розенблатт изложил в книге "Принципы нейродинамики: Персептроны и теория механизмов мозга". Уже из самого названия чувствуется какое большое значение придавалось этому относительно простому обучающемуся устройству. Однако, многочисленные эксперименты показали неровный характер обучаемости персептронов. Некоторые задачи решались относительно легко, тогда как другие - вообще не поддавались обучению. В отсутствие теории объяснить эти эксперименты и определить перспективы практического использования персептронов было невозможно.
Подобного рода теория появилась к 1969г. с выходом в свет книги Марвина Минского и Сеймура Пейперта "Персептроны". Минский и Пейперт показали, что если элементы скрытого слоя фиксированы, их количество либо их сложность экспоненциально возрастает с ростом размерности задачи (числа рецепторов). Тем самым, теряется их основное преимущество - способность решать задачи произвольной сложности при помощи простых элементов.
Реальный же выход состоял в том, чтобы использовать адаптивные элементы на скрытом слое, т.е. подбирать веса и первого и второго слоев. Однако в то время этого делать не умели. Каким же образом находить синаптические веса сети, дающие оптимальную классификацию входных векторов?
Прежде чем ответить на этот вопрос, следует задать критерий оптимальности. Поскольку нейросети осуществляют статистическую обработку данных, нам следует обратиться к основам математической статистики - индуктивному методу.
Основная проблема статистики - обобщение эмпирических данных. В формализованном виде задача состоит в выборе наилучшей модели (гипотезы, объясняющей наблюдаемые данные) из некоторого доступного множества. Для решения этой задачи надо уметь оценивать степень достоверности той или иной гипотезы. Математическая формулировка этого подхода содержится в знаменитой теореме Байеса.
Обозначим весь набор имеющихся данных $$D$$, а гипотезы, объясняющие эти данные (в нашем случае - нейросети), как $$N$$. Предполагается, что каждая такая гипотеза объясняет данные с большей или меньшей степенью вероятности $$P(D|N)$$. Теорема Байеса дает решение обратной задачи - определить степень достоверности гипотез $$P(N|D)$$, исходя из их успехов в объяснении данных. Согласно этой теореме, достоверность гипотезы пропорциональна ее успеху, а также ее априорной вероятности, $$P(N)$$, известной из других соображений, не относящихся к данной серии наблюдений:
$$P(N|D)=\frac{P(D|N)P(N)}{\sum_N P(D|N)P(N)}$$Наилучшая модель определяется максимизацией $$P(N|D)$$ или ее логарифма, что дает один и тот же результат в силу монотонности логарифмической функции. Логарифмы удобны тем, что произведение вероятностей независимых событий они переводят в сумму их логарифмов:$$\label{math/1} \max_N \log P(N|D)\Rightarrow \max_N\{log P(D|N)+\log P(N)\}$$ (Знаменатель не зависит от модели и не влияет на выбор лучшей.)
Выписанная выше формула является базовой для понимания основ обучения нейросетей, т.к. она задает критерий оптимальности обучения, к которому надо стремиться. Мы еще неоднократно вернемся к ней на протяжении этой лекции. Обсудим, прежде всего значение обоих членов в правой части полученного выражения.
Заметим, прежде всего, что второй член в правой части выражения не зависит от данных. Первый же, отражающий эмпирический опыт, как правило, имеет вид колокола тем более узкого, чем больше объем имеющихся в распоряжении данных (см. рисунок 3.4).
(рис 3.4) Качественная зависимость априорной и эмпирической составляющих формулы Байеса. Чем больше данных - тем точнее можно выбрать проверяемую гипотезуДействительно, чем больше данных - тем точнее могут быть проверены следствия конкурирующих гипотез, и, следовательно, тем точнее будет выбор наилучшей.
Следовательно, при стремлении количества данных к бесконечности, последним членом можно пренебречь. Это приближение:$$\max_N \log P(N|D)\Rightarrow \min_N\{-log P(D|N)\}$$ получило название принципа максимального правдоподобия (Фишер) и характерно для т.н. параметрической статистики, в которой модель представляет собой семейство решений с небольшим и фиксированным набором параметров.
Отрицательный логарифм вероятности имеет смысл эмпирической ошибки при подгонке данных с помощью имеющихся в модели свободных параметров.
Например, в
Отрицательный логарифм, таким образом, пропорционален сумме квадратов, и аппроксимация функции сводится к минимизации среднеквадратичной ошибки:$$\min\{-ln{P(D|N)}\}\Rightarrow min \{\sum_\alpha(y^\alpha-y(x^\alpha,N))^2\}$$
В случае нейросетевого моделирования число параметров, как правило, велико, более того, размер сети, как правило, соотносится с объемом обучающей выборки, т.е. число параметров зависит от числа данных. В принципе, как отмечалось ранее, взяв достаточно большую нейросеть, можно приблизить имеющиеся данные со сколь угодно большой точностью. Между тем, зачастую это не то, что нам надо. Например, правильная аппроксимация зашумленной функции по определению должна давать ошибку - порядка дисперсии шума.
Учет второго члена формулы (1) позволяет наложить необходимые ограничения на сложность модели, подавляя, например, излишнее количество настроечных параметров. Смысл совместной оптимизации эмпирической ошибки и сложности модели дает принцип минимальной длины описания.
Согласно этому принципу следует минимизировать общую длину описания данных с помощью модели и описания самой модели. Чтобы увидеть это перепишем формулу (1) в виде:$$\min_N\{-log{P(D|N)-log{P(N)}}\}=\min_N\{\text{описание ошибки+описание модели}\}$$
Первый член, как мы убедились, есть эмпирическая ошибка. Чем она меньше - тем меньше бит потребуется для исправления предсказаний
модели. Если модель предсказывает все данные точно, длина описания ошибки равна нулю. Второй член имеет смысл количества информации,
необходимого для выбора конкретной модели из множества с
Очень сильный результат теории индуктивного вывода, принадлежащий Рисанену, ограничивает ожидаемую ошибку модели на новых данных степенью сжатия информации с помощью этой модели. Чем меньше описанная выше суммарная длина описания, тем надежнее предсказания такой модели.
Этот вывод пригодится нам позднее - для выбора оптимального размера нейросетей. Пока же предположим, что цель обучения сформулирована - имеется подлежащий минимизации функционал ошибки $$E(w)=E\{x^\alpha,y^\alpha,y(x^\alpha,w)\}$$, зависящий от всех настроечных весов нейросети. Наша ближайшая задача - понять каким образом можно найти значения этих весов, минимизируещих такой функционал.
Наиболее общим способом оптимизации нейросети является итерационная (постепенная) процедура подбора весов, называемая обучением, в данном случае - обучением с учителем, поскольку опирается на обучающую выборку примеров $$\{x^\alpha,y^\alpha\}$$, например - примеров правильной классификации.
Когда функционал ошибки задан, и задача сводится к его минимизации, можно предложить, например, следующую итерационную процедуру подбора весов: $$w^{x+1}=w^x-\eta^x\frac{\partial{E}}{\partial{w}}$$ или, что то же самое:$$w^{x+1}_{ij}=w^x_{ij}-\eta^x\frac{\partial{E}}{\partial{w_{ij}}}.$$
Здесь $$\eta^x\ll|w|$$ - темп обучения на шаге $$\tau$$. Можно показать, что постепенно уменьшая темп обучения, например по закону $$\eta^x = 1/\tau$$, описанная выше процедура приводит к нахождению локального минимума ошибки.
Исторически наибольшую трудность на пути к эффективному правилу обучения многослойных персептронов вызвала процедура эффективного
расчета
Ключ к обучению многослойных персептронов оказался настолько простым и очевидным, что, как оказалось, неоднократно переоткрывался.
Между тем, в случае дифференцируемых функций активации рецепт нахождения производных по любому весу сети дается т.н. цепным правилом дифференцирования, известным любому первокурснику. Суть метода back-propagation - в эффективном воплощении этого правила.
Разберем этот ключевой для нейрокомпьютинга метод несколько подробнее. Обозначим входы n-го слоя нейронов $$x^{[n]}_j$$. Нейроны этого слоя вычисляют соответствующие линейные комбинации:$$a^{[n]}_j=\sum_jw^{[n]}_{ij}x^{[n]}_j$$ и передают их на следующий слой, пропуская через нелинейную функцию активации (для простоты - одну и ту же, хотя это совсем необязательно):$$x^{[n+1]}_j=f(a^{[n]}_i).$$ Для построения алгоритма обучения нам надо знать производную ошибки по каждому из весов сети:$$\frac{\partial{E}}{\partial{w^{[n]}_{ij}}}=\frac{\partial{E}}{\partial{a^{[n]}_i}}\frac{\partial{a^{[n]}_i}}{\partial{w^{[n]}_{ij}}}\equiv\delta^{[n]}_ix^{[n]}_j.$$ Таким образом, вклад в общую ошибку каждого веса вычисляется локально, простым умножением невязки нейрона $$\delta^{[n]}_i$$ на значение соответствующего входа. (Из-за этого, в случае когда веса изменяют по направлению скорейшего спуска $$\Delta{w_{ij}}\infty-\partial{E}/\partial{w_{ij}}=-\delta_ix_j$$, такое правило обучения называют дельта-правилом.)
Входы каждого слоя вычисляются последовательно от первого слоя к последнему во время прямого распространения сигнала:$$x^{[n+1]}_i=f\left(\sum_jw^{[n]}_{ij}x^{[n]}_j \right)$$ , а невязки каждого слоя вычисляются во время обратного распространения ошибки от последнего слоя (где они определяются по выходам сети) к первому:$$\delta^{[n]}_i=f'(a^{[n]}_i)(\sum_kw^{[n+1]}_{ki}\delta^{[n+1]}_k).$$ Последняя формула получена применением цепного правила к производной$$\frac{\partial{E}}{\partial{a^{[n]}_i}}=\sum_k\frac{\partial{E}} {\partial{a^{[n+1]}_k}}\frac{\partial{a^{[n+1]}_k}}{\partial{x^{[n+1]}_i}} \frac{\partial{x^{[n+1]}_i}}{\partial{a^{[n+1]}_i}}.$$ и означает, что чем сильнее учитывается активация данного нейрона на следующем слое, тем больше его ответственность за общую ошибку.
Важность изложенного выше алгоритма back-propagation в том, что он дает чрезвычайно эффективный способ нахождения W, то необходимое для вычисления градиента число операций растет пропорционально W, т.е. этот алгоритм имеет сложность O(W). Напротив, прямое вычисление градиента по формуле$$\frac{\partial{E}}{\partial{w^{[n]}_{ij}}}=\frac{E(w^{[n]}_{ij}+\varepsilon)-E(w^{[n]}_{ij})}{\varepsilon}$$
потребовала бы W прямых прогонов через сеть, требующих O(W) операций каждый. Таким образом "наивный" алгоритм имеет сложность $$O(W^2)$$,
что существенно хуже, чем у алгоритма back-propagation.
При оценке значения алгоритма back-propagation важно различать нахождение градиента ошибки $$\frac{\partial{E}}{\partial{w}}$$ и его использование для обучения. Иногда под этим именем понимают именно конкретный тип итерационного обучения, предложенный в статье Румельхарта с соавторами. Этот простейший тип обучения (метод скорейшего спуска) обладает рядом недостатков. Существуют много гораздо более хороших алгоритмов обучения, использующих градиент ошибки более эффективно. Ниже мы перечислим некоторые из них, наиболее часто используемые на практике. Подчеркнем, однако, что все они так или иначе используют изложенный выше метод back-propagation для нахождения градиента ошибки.
Итак, простейший способ использования градиента при обучении - изменение весов пропорционально градиенту - т.н метод наискорейшего спуска:$$\Delta{w}=-\eta\frac{\partial{E}}{\partial{w}}$$
Этот метод оказывается, однако, чрезвычайно неэффективен в случае, когда производные по различным весам сильно отличаются, т.е.
рельеф функции ошибки напоминает не яму, а длинный овраг. (Это соответствует ситуации, когда активация некоторых из сигмоидных нейронов
близка по модулю к 1 или, что то же самое - когда модуль некоторых весов много больше 1). В этом случае для плавного уменьшения ошибки
необходимо выбирать очень маленький темп обучения, диктуемый максимальной производной (шириной оврага), тогда как расстояние до минимума
по порядку величины определяется минимальной производной (длиной оврага). В итоге обучение становится неприемлемо медленным. Кроме того,
на самом дне оврага неизбежно возникают осцилляции, и обучение теряет привлекательное свойство монотонности убывания ошибки.
(рис 3.5) Неэффективность метода скорейшего спуска: градиент направлен не в сторону минимума
Простейшим усовершенствованием метода скорейшего спуска является введение момента , когда влияние градиента на изменение весов накапливается со временем:$$\Delta{w^x}=-\eta\frac{\partial{E}}{\partial{w}}+\mu\Delta{w^{x-1}}.$$
Качественно влияние момента на процесс обучения можно пояснить следующим образом. Допустим, что градиент меняется плавно, так что
на протяжении некоторого времени его изменением можно пренебречь (мы находимся далеко от дна оврага). Тогда изменение весов можно
записать в виде:$$\Delta{w^2}=-\eta\frac{\partial{E}}{\partial{w}}(1+\mu+\mu^2+\ldots)=-\frac{\eta}{1-\mu}\frac{\partial{E}}{\partial{w}},$$
т.е. в этом случае эффективный темп обучения увеличивается, причем существенно, если момент $$\mu\cong1$$. Напротив, вблизи дна оврага, когда
направление градиента то и дело меняет знак из-за описанных выше осцилляций, эффективный темп обучения замедляется до значения близкого
к $$\eta$$:$$\Delta{w^2}=-\eta\frac{\partial{E}}{\partial{w}}(1-\mu+\mu^2-\ldots)=-\frac{\eta}{1-\mu}\frac{\partial{E}}{\partial{w}}.$$
(рис 3.6) Введение инерции в алгоритм обучения позволяет адаптивно менять скорость обучения
Дополнительное преимущество от введения момента - появляющаяся у алгоритма способность преодолевать мелкие локальные минимумы. Это свойство можно увидеть, записав разностное уравнение для обучения в виде дифференциального. Тогда обучение методом скорейшего спуска будет описываться уравненем движения тела в вязкой среде: $$dw/d\tau=-\eta\partial{E}/\partial{w}$$. Введение момента соответствует появлению у такого гипотетического тела инерции, т.е. массы: $$\mu d^2w/d\tau^2+(1-\mu)dw/d\tau=-\eta\partial{E}\partial{w}$$. В итоге, "разогнавшись", тело может по инерции преодолевать небольшие локальные минимумы ошибки, застревая лишь в относительно глубоких, значимых минимумах.
Одним из недостатков описанного метода является введение еще одного глобального настроечного параметра. Мы же, наоборот, должны
стремиться к отсутствию таких навязываемых алгоритму извне параметров. Идеальной является ситуация, когда все параметры обучения сами
настраиваются в процессе обучения, извлекая информацию о характере рельефа функции ошибки из самого хода обучения. Примером весьма
удачного алгоритма обучения является т.н. RPROP (от
RPROP стремится избежать замедления темпа обучения на плоских "равнинах" ландшафта функции ошибки, характерного для схем, где изменения весов пропорциональны величине градиента. Вместо этого RPROP использует лишь знаки частных производных по каждому весу.$$\Delta w^{x}_{ij}= \left\{\begin{array}{l} -\Delta^x_{ij}, \partial{E^x}/\partial{w_{ij}}>0\\ +\Delta^x_{ij}, \partial{E^x}/\partial{w_{ij}} \le 0\\ 0, else \end{array} \right.$$
Величина шага обновления - своя для каждого веса и адаптируется в процессе обучения:$$\Delta w^{x}_{ij}= \left\{\begin{array}{l} \eta^+\Delta^{r-1}}_{ij}, \partial{E^r}/\partial{w_{ij}}\cdot\partial{E^{r-1}}/\partial{w_{ij}}>0\\ \eta^-\Delta^{r-1}}_{ij}, \partial{E^r}/\partial{w_{ij}}\cdot\partial{E^{r-1}}/\partial{w_{ij}}\le 0\\ \end{array} \right.$$
Если знак производной по данному весу изменил направление, значит предыдущее значение шага по данной координате было слишком велико, и алгоритм уменьшает его в$$\eta^{-}\le 1$$ раз. В противном случае шаг увеличивается в$$\eta^{+}>1$$ раз для ускорения обучения вдали от минимума.
Мы не затронули здесь более изощренных методов обучения, таких как
Ранее при обсуждении истории нейрокомпьютинга мы ссылались на относительную трудоемкость процесса обучения. Чтобы иметь хотя бы приблизительное представление о связанных с обучением вычислительных затратах, приведем качественную оценку вычислительной сложности алгоритмов обучения.
Пусть как всегда W - число синаптических весов сети (weights), а P - число обучающих примеров (patterns). Тогда для однократного
вычисления
В описанных до сих пор методах обучения значения весов подбиралось в сети с заданной топологией связей. А как выбирать саму структуру сети: число слоев и количество нейронов в этих слоях? Решающим, как мы увидим, является выбор соотношения между числом весов и числом примеров. Зададимся поэтому теперь следующим вопросом:
Рассмотрим для определенности двухслойную сеть (т.е. сеть с одним скрытым слоем). Точность аппроксимации функций такой сетью, как
уже говорилось, возрастает с числом нейронов скрытого слоя. При $$H$$ нейронах ошибка оценивается как $$O(1/H)$$.
Поскольку число выходов сети, как правило, много меньше числа входов, основное число весов в двухслойной сети сосредоточено в первом слое, т.е. $$W\sim Hd$$. В этом случае средняя ошибка аппроксимации выразится через общее число весов в сети следующим образом:$$\varepsilon_{approx}\sim O(d/W).$$
где d - размерность входов.
Наши недостатки, как известно - продолжения наших достоинств. И упомянутая выше универсальность персептронов превращается одновременно в одну из главных проблем обучающихся алгоритмов, известную как проблема переобучения.
Суть этой проблемы лучше всего объяснить на конкретном примере. Пусть обучающие примеры порождаются некоторой функцией, которую нам
и хотелось бы воспроизвести. В теории обучения такую функцию называют учителем. При конечном числе обучающих примеров всегда возможно
построить нейросеть с нулевой P уравнений для W
неизвестных. И если число неизвестных меньше числа уравнений, такая система является недоопределенной и допускает бесконечно много
решений. В этом-то и состоит основная проблема: у нас не хватает информации, чтобы выбрать единственное правильное решение -
функцию-учителя. В итоге выбранная случайным образом функция дает плохие предсказания на новых примерах, отсутствовавших в
обучающей выборке, хотя последнюю сеть воспроизвела без ошибок. Вместо того, чтобы обобщить известные примеры, сеть запомнила их. Этот эффект и называется переобучением.
На самом деле, задачей теории обучения является не минимизация ошибки обучения, а минимизация ошибки обобщения, определенной для всех возможных в будущем примеров. Именно такая сеть будет обладать максимальной предсказательной способностью. И трудность здесь состоит в том, что реально наблюдаемой является именно и только ошибка обучения. Ошибку обобщения можно лишь оценить, опираясь на те или иные соображения.
В этой связи вспомним изложенный в начале этой лекции принцип минимальной длины описания. Согласно этому общему принципу, ошибка предсказаний сети на новых данных определяется общей длиной описания данных с помощью модели вместе с описанием самой модели:$$-\log P(D|N)-\log P(N) = \text{описание ошибки + описание модели}$$
Первый член этого выражения отвечает наблюдаемой ошибке обучения. Мы оценили его выше. Теперь обратимся к оценке второго члена, регуляризирующего обучение.
Описание сети сводится, в основном, к передаче значений ее весов. При заданной точности такое описание потребует порядка$$-\log P(N)\sim W$$ бит. Следовательно удельную ошибку на один пример, связанную со сложностью модели, можно оценить следующим образом:$$\varepsilon_{complex}\sim W/P.$$
Она, как мы видим, монотонно спадает с ростом числа примеров.
Действительно, для однозначного определения подгоночных параметров (весов сети) по $$P$$ заданным примерам необходимо, чтобы
система $$P$$ уравнений была переопределена, т.е. число параметров $$W$$ было больше числа уравнений. Чем больше степень переопределенности,
тем меньше результат обучения зависит от конкретного выбора подмножества обучающих примеров. Определенная выше составляющая ошибки
обобщения, как раз и связана с вариациями решения, обусловленными конечностью числа
Итак, мы оценили обе составляющих ошибки обобщения сети. Важно, что эти составляющие по-разному зависят от размера сети (числа весов), что предполагает возможность выбора оптимального размера, минимизирующего общую ошибку:$$\varepsilon\sim\varepsilon_{approx}+\varepsilon_{complex}\sim d/W+W/P\geq \sqrt{d/P}.$$
Минимум ошибки (знак равенства) достигается при оптимальном числе весов в сети$$W\sim \sqrt{Pd},$$ соответствующих числу нейронов в скрытом слое равному по порядку величины:$$H\sim W/d \sim\sqrt{P/d}.$$
Этот результат можно теперь использовать для получения окончательной оценки сложности обучения (C - от английского complexity)$$C\sim PW^2\sim dP^2$$
Отсюда можно сделать следующий практический вывод: нейроэмуляторам с производительностью современных персональных компьютеров
( $$10^7$$ операций в секунду) вполне доступны анализ баз данных с числом примеров $$P\sim 10^4$$
и размерностью входов $$d\sim10^2\div10^3$$. Типичное время обучения при этом
составит $$\tau\sim10^4\div10^5$$ секунд, т.е. от десятков минут до несколько часов. Поскольку производственный цикл нейроанализа предполагает обучение
нескольких, иногда - многих сетей, такой размер баз данных, представляется предельным для
Согласно полученным выше оценкам ошибка классификации на таком классе задач порядка 10%. Это, конечно, не означает, что с такой точностью можно предсказывать что угодно. Многие относительно простые задачи классификации решаются с большей точностью, поскольку их эффективная размерность гораздо меньше, чем число входных переменных. Напротив, для рыночных котировок достижение соотношения правильных и неправильных предсказаний 65:35 уже можно считать удачей. Действительно, приведенные выше оценки предполагали отсутствие случайного шума в примерах. Шумовая составляющая ошибки предсказаний должна быть добавлена к полученной выше оценке. Для сильно зашумленных рыночных временных рядов именно она определяет предельную точность предсказаний. Подробнее эти вопросы будут освещены в отдельной лекции, посвященной предсказанию зашумленных временных рядов.
Другой вывод из вышеприведенных качественных оценок - обязательность этапа предобработки высокоразмерных данных. Невозможно
классифицировать непосредственно картинки с размерностью $$d\sim10^6$$. Из оценки точности классификации следует, что это потребует числа обучающих
примеров по крайней мере такого же порядка, т.е. сложность обучения будет порядка $$C\simd d^3\sim10^{18}$$. Современным
нейрокомпьютерам с производительностью $$10^{10}$$ операций в секунду потребовалось бы несколько лет обучения распознаванию таких образов.
Зрительная система человека, составляющая несколько процентов коры головного мозга, т.е. $$\sim10^{14}\frac{син}{c}$$ обладающая производительностью способна
обучаться распознаванию таких образов за несколько
Методы предобработки сигналов и формирования относительно малоразмерного пространства признаков являются важнейшей составляющей нейроанализа и будут подробно рассмотрены далее в отдельной лекции.
Итак, мы выяснили, что существует оптимальная сложность сети, зависящая от количества примеров, и даже получили оценку размеров скрытого слоя для двухслойных сетей. Однако в общем случае следует опираться не на грубые оценки, а на более надежные механизмы адаптации сложности нейросетевых моделей к данным для каждой конкретной задачи.
Для борьбы с переобучением в нейрокомпьютинге используются три основных подхода:
Прежде всего, для любого из перечисленных методов необходимо определить критерий оптимальной сложности сети -
(рис 3.7) Обучающее (темные точки) и валидационные (светлые точки) множества примеров
Обучение сетей обычно начинается с малых случайных значений весов. Пока значения весов малы по сравнением с характерным масштабом нелинейной функции активации (обычно принимаемом равным единице), вся сеть представляет из себя суперпозицию линейных преобразований, т.е. является также линейным преобразованием с эффективным числом параметров равным числу входов, умноженному на число выходов. По мере возрастания весов и степень нелинейности, а вместе с ней и эффективное число параметров возрастает, пока не сравняется с общим числом весов в сети.
В методе ранней остановки обучение прекращается в момент, когда сложность сети достигнет оптимального значения. Этот момент
оценивается по поведению во времени ошибки валидации. Рисунок 3.8. дает качественное представление
об этой методике.
(рис 3.8) Ранняя остановка сети в момент минимума ошибки валидации (штрих-пунктирная кривая). При этом обычно ошибка обучения (сплошная кривая) продолжает понижаться
Эта методика привлекательна своей простотой. Но она имеет и свои слабые стороны: слишком большая сеть будет останавливать свое обучение на ранних стадиях, когда нелинейности еще не успели проявиться в полную силу. Т.е. эта методика чревата нахождением слабо-нелинейных решений. На поиск сильно нелинейных решений нацелен метод прореживания весов, который, в отличае от предыдущего, эффективно подавляет именно малые значения весов.
Эта методика стремится сократить разнообразие возможных конфигураций обученных нейросетей при минимальной потере их аппроксимирующих
способностей. Для этого вместо колоколообразной формы априорной функции распределения весов, характерной для обычного обучения, когда
веса "расползаются" из начала координат, применяется такой алгоритм обучения, при котором функция распределения весов
сосредоточена в основном в "нелинейной" области относительно больших значений весов (см.
рисунок 3.9).
(рис 3.9) Подавление малых значений весов в методе прореживания связей
Этого достигают введением соответствующей штрафной составляющей в функционал ошибки. Например, априорной функции распределения:$$P(N)\infty\exp\left[-\lambda\sum_{ij}\frac{w^{2}_{ij}}{w^2_0+w^2_{ij}}\right],$$ имеющую максимум в вершинах гиперкуба с $$|w_{ij}|\sim w_0$$, соответствует штрафной член:$$E_{complex}=-\log P(N)=\lambda\sum_{ij}\frac{w^2_{ij}}{w^2_{0}+w^2_{ij}}$$ в функционале ошибки. Дополнительная составляющая градиента$$\frac{\partial{E_{complex}}}{\partial{w_{ij}}}=-\frac{2\lambda w_{ij}}{(w^2_0+w^2_{ij})^2}$$ исчезающе мала для больших весов, $$|w_{ij}|\gg w_0$$, и пропорциональна величине малых весов, $$|w_{ij}|\leq w_0$$. Соответственно, на больших штрафная функция практически не сказывается, тогда как малые веса экспоненциально затухают.
Таким образом, происходит эффективное вымывание малых весов (weights elimination), т.е. прореживание малозначимых связей. Противоположная методика предполагает, напротив, поэтапное наращивание сложности сети. Соответствующее семейство алгоритмов обучения называют конструктивными алгоритмами.
Эти алгоритмы характеризуются относительно быстрым темпом обучения, поскольку разделяют сложную задачу обучения большой многослойной сети на ряд более простых задач, обычно - обучения однослойных подсетей, составляющих большую сеть. Поскольку сложность обучения пропорциональна квадрату числа весов, обучение "по частям" выгоднее, чем обучение целого:$$W^2=\left(\sum_k W_k\right)^2>\sum_k W^2_k.$$
Для примера опишем так называемую каскад-корреляционную методику обучения нейросетей. Конструирование сети начинается с единственного выходного нейрона и происходит путем добавления каждый раз по одному промежуточному нейрону (см. рис 3.10(рис 3.10) Каскад-корреляционные сети: добавление промежуточных нейронов с фиксированными весами (тонкие линии)
Эти промежуточные нейроны имеют фиксированные веса, выбираемые таким образом, чтобы выход добавляемых нейронов в максимальной степени коррелировал с ошибками сети на данный момент (откуда и название таких сетей). Поскольку веса промежуточных нейронов после добавления не меняются, их выходы для каждого значения входов можно вычислить лишь однажды. Таким образом, каждый добавляемый нейрон можно трактовать как дополнительный признак входной информации, максимально полезный для уменьшения ошибки обучения на данном этапе роста сети. Оптимальная сложность сети может определяться, например, с помощью валидационного множества.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.