Нейросетевое моделирование

А.С.Тоноян   

Прогнозирование на основе  
нейронных сетей 
 

Введение

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

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

1. Нейронные  сети – основные понятия и  определения

 В основу  искусственных нейронных сетей  (Барцев 1987, Куссуль 1990) (НС) положены следующие черты живых нейронных сетей, позволяющие им хорошо справляться с нерегулярными задачами:

 – простой  обрабатывающий элемент – нейрон;

 – очень  большое число нейронов участвует  в обработке информации;

 – один  нейрон связан с большим числом  других нейронов (глобальные связи);

 – изменяющиеся  по весу связи между нейронами;

 – массированная  параллельность обработки информации.

Прототипом для  создания нейрона послужил биологический  нейрон головного мозга. Биологический  нейрон имеет тело, совокупность отростков  – дендридов, по которым в нейрон поступают входные сигналы, и  отросток – аксон, передающий выходной сигнал нейрона другим клеткам. Точка соединения дендрида и аксона называется синапсом. (Розенблат 1965)

 Упрощенно  функционирование нейрона можно  представить следующим образом:

1) нейрон получает  от дендридов набор (вектор) входных сигналов;

2) в теле нейрона  оценивается суммарное значение  входных сигналов. Однако входы  нейрона неравнозначны. Каждый  вход характеризуется некоторым  весовым коэффициентом, определяющим  важность поступающей по нему  информации. Таким образом, нейрон не просто суммирует значения входных сигналов, а вычисляет скалярное произведение вектора входных сигналов и вектора весовых коэффициентов;

3) нейрон формирует  выходной сигнал, интенсивность  которого зависит от значения  вычисленного скалярного произведения. Если оно не превышает некоторого заданного порога, то выходной сигнал не формируется вовсе – нейрон "не срабатывает";

4) выходной сигнал  поступает на аксон и передается  дендридам других нейронов.

 Поведение  искусственной нейронной сети зависит как от значения весовых параметров, так и от функции возбуждения нейронов. Известны три основных вида (Тэнк 1982) функции возбуждения: пороговая, линейная и сигмоидальная. Для пороговых элементов выход устанавливается на одном из двух уровней в зависимости от того, больше или меньше суммарный сигнал на входе нейрона некоторого порогового значения. Для линейных элементов выходная активность пропорциональна суммарному взвешенному входу нейрона. Для сигмоидальных элементов в зависимости от входного сигнала, выход варьируется непрерывно, но не линейно, по мере изменения входа. Сигмоидальные элементы имеют больше сходства с реальными нейронами, чем линейные или пороговые, но любой из этих типов можно рассматривать лишь как приближение.

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

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

 Задать НС, способную решить конкретную  задачу, – это значит определить  модель нейрона, топологию связей, веса связей. Нейронные сети различаются между собой меньше всего моделями нейрона, а в основном топологией связей и правилами определения весов или правилами обучения, программирования.

 По структуре  связей сети делятся на два  больших класса: однослойные и многослойные.

 Подходы к  обучению однослойных и многослойных  сетей различны. Обучение многослойных  сетей состоит в том, что  на основе набора примеров {входное  состояние -> выходное состояние}  постепенно подбираются веса  всех связей так, чтобы каждое входное состояние вызывало соответствующее выходное. Обучающие алгоритмы представляют собою итерационные процедуры с медленным приближением к окончательным значениям весов связей. Этот способ впервые был реализован в персептроне Розенблата и локальных правилах обучения на основе модели Хебба. В последующие годы этот подход получил дальнейшее развитие в алгоритмах типа обратного распространения.

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

 Для общего  случая, когда описание поведения  сети задано в виде набора  векторов возможных состояний,  поиск синаптических весов сводится  к решению соответствующей системы  нелинейных уравнений. Исследования проекционного алгоритма показывают, что при очевидных достоинствах ему свойственен ряд недостатков, в частности склонность сети к ложным реакциям и низкая эффективность при доучивании, когда необходимо ввести новые данные, не разрушая информации, запомненной ранее. Кроме того, до настоящего времени принято считать, что данный алгоритм пригоден лишь для полносвязных нейронных сетей и неприменим в сетях другой архитектуры. Указанные недостатки и малая изученность таких вопросов, как структура и частота появления ложных реакций, реализация итеративных процедур доучивания и применение в неполносвязных сетях, затрудняет использование проекционного алгоритма в исследованиях по нейробионике и при проектировании нейропроцессоров. Недостатком проекционного алгоритма с точки зрения решения задачи прогнозирования является то, что при обучении необходимо с начала сформировать эталоны распознаваемых образов. В задаче прогнозирования это либо вовсе невозможно, либо чрезвычайно затруднено. Эталоны должны формироваться в самой сети на основе анализа исторических данных.

 Исходя из  вышеизложенного, можно заключить,  что для решения задач прогнозирования  наиболее подходит сеть с обратным  распространением.

Она позволяет  формальным образом обучить сеть прогнозировать изменение требования на основе исторических данных о требовании.   

2. Общий подход  к прогнозированию с помощью  
нейронных сетей

 На НС задача  прогнозирования формализуется  через задачу распознавания образов.  Данных о прогнозируемой переменной  за некоторый промежуток времени образуют образ, класс которого определяется значением прогнозируемой переменной в некоторый момент времени за пределами данного промежутка т.е. значением переменной через

интервал прогнозирования. Метод окон предполагает использование  двух окон Wi и Wo с фиксированными размерами n и m соответственно. Эти окна, способны перемещаться с некоторым шагом по временной последовательности исторических данных, начиная с первого элемента, и предназначены для доступа к данным временного ряда,

причем первое окно Wi, получив такие данные, передает их на вход нейронной сети, а второе – Wo – на выход. Получающаяся на каждом шаге пара

Wi à Wo        (2.1)

используется  как элемент обучающей выборки (распознаваемый образ, или наблюдение).

 Каждый следующий  вектор получается в результате сдвига окон Wi и Wo вправо на один элемент (s = 1). Предполагается наличие скрытых зависимостей во временной последовательности как множестве наблюдений. Нейронная сеть, обучаясь на этих наблюдениях и соответственно настраивая свои коэффициенты, пытается извлечь эти закономерности и сформировать в результате требуемую функцию прогноза P.

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

 МНОГОШАГОВОЕ  ПРОГНОЗИРОВАНИЕ. Используется для  осуществления долгосрочного прогноза  и предназначено для определения  основного тренда и главных  точек изменения тренда для  некоторого промежутка времени  в будущем. При этом прогнозирующая система использует полученные (выходные) данные для моментов времени k+1, k+2 и т.д. в качестве входных данных для прогнозирования на моменты времени k+2, k+3 и т.д.

 ОДНОШАГОВОЕ  ПРОГНОЗИРОВАНИЕ. Используется для  краткосрочных прогнозов, обычно  – абсолютных значений последовательности. Осуществляется прогноз только на один шаг вперед, но используется реальное, а не прогнозируемое значение для осуществления прогноза на следующем шаге.

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

 Характерный  пример успешного применения  нейронных вычислений в финансовой  сфере – управление кредитными  рисками. Как известно, до выдачи кредита банки проводят сложные статистические расчеты по финансовой надежности заемщика, чтобы оценить вероятность собственных убытков от несвоевременного возврата финансовых средств. Такие расчеты обычно базируются на оценке кредитной истории, динамике развития компании, стабильности ее основных финансовых показателей и многих других факторов. Другая очень важная область применения нейронных вычислений в финансовой сфере – предсказание ситуации на фондовом рынке.

Стандартный подход к этой задаче базируется на жестко фиксированном наборе "правил игры", которые со временем теряют свою эффективность из-за изменения условий торгов на фондовой бирже. Кроме того, системы, построенные на основе такого подхода, оказываются слишком медленными для ситуаций, требующих мгновенного принятия решений. Именно поэтому основные японские компании, оперирующие на рынке ценных бумаг, решили применить метод нейронных вычислений. В типичную систему на базе нейронной сети ввели информацию общим объемом в 33 года деловой активности нескольких организаций, включая оборот, предыдущую стоимость акций, уровни дохода и т.д. Самообучаясь на реальных примерах, система нейронной сети показала большую точность предсказания и лучшее быстродействие: по сравнению со статистическим подходом дала улучшение результативности в целом на 19%.

Прогнозирование на НС обладает и рядом недостатков. Нам необходимо как минимум 50 и  лучше 100 наблюдений для создания приемлемой модели. Это достаточно большое число  данных и существует много случаев, когда такое количество исторических данных недоступно. Например, при производстве сезонного товара, истории предыдущих сезонов недостаточно для прогноза на текущий сезон, из-за изменения стиля продукта, политики продаж и т.д. Даже при прогнозировании требования на достаточно стабильный продукт на основе информации о ежемесячных продажах, возможно мы не сможем накопить историю за период от 50 до 100 месяцев. Для сезонных процессов проблема еще более сложна. Каждый сезон истории фактически представляет собой одно наблюдение. То есть, в ежемесячных наблюдениях за пять лет будет только пять наблюдений за январь, пять наблюдений за февраль и т.д. Может потребоваться информация за большее число сезонов для того, чтобы построить сезонную модель. Однако, необходимо отметить, что мы можем построить удовлетворительную модель на НС даже в условиях нехватки данных. Модель может уточняться по мере того, как свежие данные становится доступными. Другим недостатком нейронных моделей – значительные затраты по времени и другим ресурсам для построения удовлетворительной модели. Эта проблема не очень важна, если исследуется небольшое число временных последовательностей. Тем не менее, обычно прогнозирующая система в области управления производством может включать от нескольких сотен до нескольких тысяч временных последовательностей.

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

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

3. Обучение нейронных  сетей  

 Мы можем  научить трехслойную сеть решать  определенную задачу, пользуясь  следующей процедурой. Сначала мы предъявляем сети серию тренировочных примеров, которые состоят из паттерна активностей входных элементов вместе с желаемым паттерном активностей выходных элементов (Куссуль1990).

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

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

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

4. Алгоритм обратного  распространения  

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

Примерно в 1974 году Поль Дж. Вербос изобрел значительно  более эффективную процедуру  для вычисления EW, когда работал  над своей докторской диссертацией в Гарвардском университете. Процедура, известная теперь как алгоритм обратного  распространением (back propagation algorithm), стала одним из наиболее важных инструментов в обучении нейронных сетей (Хинтон1992, Трикоз1993).

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

Описание НС и алгоритма обратного распространения

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

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

 Xj = S (Yi * Wij),     (3.1)

  i

где Yi – уровень  активности i-го элемента в предшествующем слое и Wij – вес связи между i-м  и j-м элементами. Далее, элемент вычисляет активность Yj с помощью некоторой функции от суммарного взвешенного входа. Обычно применяется сигма-функция:

      (3.2)

 После того  как активности всех выходных  элементов определены, сеть вычисляет  ошибку , которая определяется выражением

     (3.3)

где Yj – уровень  активности j-го элемента в верхнем  слое, а Dj – желаемый выход j-го элемента.

 Алгоритм  обратного распространением состоит  из четырех шагов.

1) Вычислить,  насколько быстро меняется ошибка  при изменении

выходного элемента. Эта производная ошибки (EA) есть разность

между действительной и ожидаемой активностью.

     (3.4)

2) Вычислить,  насколько быстро изменяется  ошибка по мере изменения суммарного  входа, получаемого выходным элементом.  Эта величина (EI) есть результат  шага 1, умноженный на скорость  изменения выходного элемента  с изменением его суммарного  входа.

     (3.5)

3) Вычислить,  как быстро изменяется ошибка  по мере изменения

веса на входной  связи выходного элемента. Эта  величина (EW) есть

результат шага 2, умноженный на уровень активности элемента, из

которого исходит  связь.

      (3.6)

 4) Вычислить, как быстро изменяется ошибка с изменением активности элемента из предыдущего слоя. Этот ключевой шаг позволяет применять обратное распространение к многослойным сетям. Когда активность элемента из предыдущего слоя изменяется, это влияет на активности всех выходных элементов, с которыми он связан. Поэтому, чтобы подсчитать суммарное воздействие на ошибку, мы складываем все эти воздействия на выходные элементы. Но эти воздействия нетрудно подсчитать. Этот результат шага 2, умноженный на вес связи к соответствующему выходному элементу.

      (3.7)

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

Современная оценка алгоритма обратного распространения.

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

Заключение

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

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

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

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

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

Нейросетевое моделирование