Партнеры

Счетчики








Метод обратного распространения

Метод обратного распространения - это способ обучения многослойных нейронных сетей. Для обучения сети решению какой-либо задачи приходится предъявлять ей серию тренировочных примеров, которые состоят из паттерна активностей входных элементов вместе с желаемым паттерном активностей выходных элементов.

Предположим, мы хотим научить сеть распознавать рукописные цифры. Можно воспользоваться матрицей из 256 сенсоров, каждый из которых регистрирует присутствие или отсутствие чернильного пятнышка в пределах маленькой площадки - фрагмента одной цифры. Для сети в итоге потребуется 256 входных элементов (по одному на каждый сенсор), 10 выходных элементов (по одному на каждую возможную цифру) и некоторое количество скрытых элементов. Для каждой цифры, регистрируемой сенсорами, сеть должна генерировать высокую активность в соответствующем выходном элементе и низкую в остальных выходных элементах.

Чтобы натренировать систему, мы предъявляем ей изображение цифры и сравниваем действительную активность на 10 выходных элементах с желаемой активностью. Затем мы подсчитываем ошибку, определяемую как квадрат разности между действительным и желаемым выходом. После этого мы изменяем вес каждой связи, с тем чтобы уменьшить ошибку. Описанный процесс тренировки мы повторяем со многими различными написаниями каждой цифры, пока сеть не научится правильно распознавать все возможные изображения.

Чтобы реализовать эту процедуру, нам нужно изменять каждый вес на величину, пропорциональную скорости, с которой изменяется ошибка по мере изменения веса. Эта величина (называемая производной ошибки по весу и обозначаемая EW) вычисляется непросто. Один из способов вычисления EW заключается в том, чтобы изменить вес на очень маленькую величину и посмотреть, как изменится ошибка. Однако этот метод неэффективен, поскольку требует отдельных вариаций для каждого из многих весов.

Идея создания алгоритма обратного распространения

Примерно в 1974 году Поль Дж.Вербос изобрел значительно более эффективную процедуру для вычисления производной ошибки по весу, когда работал над своей докторской диссертацией в Гарвардском университете. Процедура, известная теперь как алгоритм обратного распространением (back propagation algorithm), стала одним из наиболее важных инструментов в обучении нейронных сетей. Алгоритм обратного распространением проще всего понять, когда все элементы сети линейны. Алгоритм вычисляет каждую производную ошибки по весу, сначала вычисляя EA - скорость, с которой изменяется ошибка при изменении уровня активности элемента. Для выходных элементов скорость изменения ошибки является просто разностью между действительным и желаемым выходом. Чтобы вычислить скорость изменения ошибки для скрытого элемента в слое, непосредственно предшествующем выходному слою, мы сначала идентифицируем все веса между этим скрытым элементом и выходными элементами, с которыми соединен данный скрытый элемент. Затем мы умножаем эти веса на величины скорости изменения ошибок для этих выходных элементов и складываем полученные произведения.

Эта сумма и равна EA для данного скрытого элемента. Вычислив скорости изменения ошибок для всех элементов скрытого слоя, прилегающего к выходному, можем аналогичным образом рассчитать скорости и для других слоев, перемещаясь в направлении, обратном тому направлению, в котором активность нейронов распространяется по сети. Отсюда и название алгоритма обратного прослеживания (или обратного распространения). После того как значение скорости изменения ошибки для элемента вычислено, подсчитать производную ошибки по весу для каждой входной связи элемента уже несложно. Величина производной ошибки является произведением скорости изменения ошибки и активности во входной цепи. Для нелинейных элементов алгоритм обратного распространением включает дополнительный шаг: перед перемещением в обратном направлении скорость изменения ошибки необходимо преобразовать в EI - скорость, с которой изменяется ошибка по мере изменения суммарного входа элемента.

Задание алгоритма обратного распространения

Чтобы обучить нейронную сеть решению какой-либо задачи, мы должны подправлять веса каждого элемента таким образом, чтобы уменьшалась ошибка - расхождение между действительным и желаемым выходом. Для этого нужно, чтобы нейронная сеть вычисляла производную от ошибки по весам (EW). Другими словами, она должна вычислять, как изменяется ошибка при небольшом увеличении или уменьшении каждого веса. Чаще всего для вычисления EW применяется алгоритм обратного распространением.

Чтобы реализовать этот алгоритм, мы сначала должны дать математическое описание нейронной сети. Предположим, что элемент j - типичный элемент выходного слоя, а элемент i - типичный элемент слоя, который предшествует выходному. Активность элемента выходного слоя определяется двухшаговой процедурой. Сначала вычисляется суммарный взвешенный вход Xj с помощью формулы Xj=Sum(Yi*Wij), где Yi - уровень активности i-го элемента в предшествующем слое и Wij - вес связи между i-ым и j-ым элементами.

Далее элемент вычисляет активность Yj с помощью некоторой функции от суммарного взвешенного входа. Обычно применяется сигма-функция: Yj=1/(1+e-Xj). После того как активности всех выходных элементов определены, сеть вычисляет ошибку, которая определяется выражением E=Sum(Yj-Dj)2/2, где Yj - уровень активности j-го элемента в верхнем слое, а Dj - желаемый выход j-го элемента.

Алгоритм обратного распространением состоит из четырех шагов. Сначала нужно вычислить, насколько быстро меняется ошибка при изменении выходного элемента. Эта скорость изменения ошибки (EA) есть разность между действительной и ожидаемой активностью: EAj=Yj-Dj.

Затем необходимо вычислить, насколько быстро изменяется ошибка по мере изменения суммарного входа, получаемого выходным элементом. Эта величина (EI) есть результат предыдущего шага, умноженный на скорость изменения выходного элемента с изменением его суммарного входа: EIj=EAj*Yj*(1-Yj).

Далее требуется вычислить, как быстро изменяется ошибка по мере изменения веса на входной связи выходного элемента. Эта величина (EW) есть тоже результат предшествующего шага, умноженный на уровень активности элемента, из которого исходит связь: EWij=EIj*Yi.

И в конце остается вычислить, как быстро изменяется ошибка с изменением активности элемента из предыдущего слоя. Этот ключевой шаг позволяет применять обратное распространение к многослойным сетям. Когда активность элемента из предыдущего слоя изменяется, это влияет на активности всех выходных элементов, с которыми он связан. Поэтому чтобы подсчитать суммарное воздействие на ошибку, мы складываем все эти воздействия на выходные элементы. Но эти воздействия нетрудно подсчитать. Это результат шага 2, умноженный на вес связи к соответствующему выходному элементу: EAi=Sum(EIj*Wij).

Пользуясь шагами 2 и последним, мы можем преобразовать величины EA одного слоя элементов в EA предыдущего слоя. Эту процедуру можно повторять, чтобы вычислять скорости изменения ошибок стольких предыдущих слоев, сколько их есть. Зная EA для элемента, можем воспользоваться шагами 2 и 3, чтобы вычислить производную ошибки по весу на его выходных связях.

Современная оценка алгоритма

На протяжении нескольких лет после его изобретения алгоритм обратного распространения оставался почти незамеченным, вероятно потому что не был в должной мере оценен специалистами. В начале 80-х годов Д.Румельхарт, работавший в то время в Калифорнийском университете в Сан-Диего, и Д.Паркер из Стэндфордского университета независимо друг от друга вновь открыли алгоритм. В 1986 году Румельхарт, Р.Уильямс из Калифорнийского университета и Джеффери Е.Хинтон продемонстрировали способность алгоритма обучить скрытые элементы вырабатывать интересные представления для сложных паттернов на входе и тем самым сделали его известным.

Алгоритм обратного распространения оказался на удивление эффективным в обучении сетей со многими слоями решению широкого класса задач. Но более всего он эффективен в ситуациях, когда отношения между входом и выходом нелинейны, а количество обучающих данных велико. Применяя алгоритм, исследователи создали нейронные сети, способные распознавать рукописные цифры, предсказывать изменения валютного курса и оптимизировать химические процессы. Они даже воспользовались алгоритмом для обучения сетей, которые идентифицируют переродившиеся предраковые клетки в анализируемых образцах ткани и регулируют положение зеркал в телескопах, чтобы исключить атмосферные искажения.

Р.Андерсен из Массачусетского технологического института и Д.Зипсер из Калифорнийского университета в Сан-Диего показали, что алгоритм обратного распространения представляет собой весьма эффективный инструмент для понимания функций некоторых нейронов в коре головного мозга. Они научили нейронную сеть реагировать на зрительные стимулы, применив алгоритм обратного распространения. Затем они обнаружили, что реакция скрытых элементов удивительно схожа с реакцией реальных нейронов, выполняющих преобразование зрительной информации, поступающей от сетчатки, в форму, необходимую для более глубоких областей мозга, перерабатывающих зрительную информацию.

Некоторые проблемы алгоритма

Метод обратного распространения достаточно хорош при создании представлений о распознаваемом образе в скрытых элементах сети. Алгоритм обратного распространения показал эффективность процедур обучения нейронных сетей, в которых веса постепенно изменяются, чтобы уменьшить ошибки. Раньше многие ученые полагали, что подобные методы окажутся безнадежными, поскольку должны неизбежно приводить к локально оптимальным, но в более широком масштабе ужасным решениям. Например, сеть для распознавания цифр может устойчиво сходиться к набору весов, при котором она будет путать единицы с семерками, хотя существует набор весов, позволяющий различать эти цифры наряду с другими. Из-за опасений подобного рода распространилось убеждение, что процедура обучения представляет интерес только в том случае, если она гарантирует сходимость к глобально оптимальному решению. Метод обратного распространения показал, что для многих задач глобальная сходимость не является необходимым условием для того, чтобы достичь хороших результатов.

С другой стороны, с биологической точки зрения, как подобие работы головного мозга, метод обратного распространения выглядит не очень убедительным. Наиболее очевидная трудность заключается в том, что информация должна проходить по тем же самым связям в обратном направлении, от каждого последующего уровня к предыдущему. Ясно, что этого не происходит в реальных нейронах. Однако этот довод на самом деле является весьма поверхностным. В мозге существует множество путей, ведущих от следующих слоев нервных клеток к предыдущим, и эти пути могут использоваться многообразными способами для передачи информации, необходимой для обучения.

Более серьезную проблему представляет собой быстродействие алгоритма обратного распространения. Здесь центральным является вопрос о том, как быстро растет время, необходимое для обучения, по мере возрастания размеров сети. Время, требующееся для вычисления производных от ошибки по весам на заданном тренировочном примере, пропорционально размерам сети, поскольку объем вычислений пропорционален количеству весов. Однако более крупные сети требуют большего количества тренировочных примеров, и им приходится модифицировать веса большее число раз. Следовательно, время обучения растет значительно быстрее, чем размеры сети.

Самая серьезная проблема метода обратного распространения заключается в том, что такая нейронная сеть требует учителя, предоставляющего желаемый выход для каждого тренировочного примера. В отличие от этого человек обучается большинству вещей без помощи учителя. Никто не дает нам детального описания внутренних представлений мира, которые мы должны научиться извлекать из нашего сенсорного входа. Мы учимся понимать речь или зрительные сцены без каких-либо прямых инструкций.

Если сеть сталкивается с большим набором сочетаний сигналов, но не имеет никакой информации о том, что с ними следует делать, то, очевидно, перед ней нет четко поставленной задачи. Тем не менее, исследователи разработали несколько универсальных, неконтролируемых процедур, которые могут правильно регулировать весовые параметры сети. Все эти процедуры имеют два общих качества: они оперируют явно или неявно с некоторым понятием качества представления и работают, изменяя веса, чтобы повысить качество представления, вырабатываемого скрытыми элементами. Несмотря на отмеченные недостатки применение метода обратного распространения в целях прогнозирования требований оправданно, так как при прогнозировании не возникает ситуации неопределенности действий, которые необходимо проделать с информацией, поступающей на вход нейронной сети.

Знайкина копилка, 5 февраля 2005 года