Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭКОНОМЕТРИКА и математическая экономика / Тихонов Э.Е. Методы прогнозирования в условиях рынка

.pdf
Скачиваний:
170
Добавлен:
20.04.2015
Размер:
1.91 Mб
Скачать

2.2.Открываем диалоговое окно Обратное распространение:

Train→Multilayer Perceptron→Back Propagation (рисунок 4.30).

2.3.Открываем диалоговое окно ошибки: Statistics→ Case Errors

(рисунок 4.31).

Рисунок 4.31. Ошибки наблюдений

Представленное на рисунке 4.31 диалоговое окно позволяет определить ошибки сети (во время и по результатам обучения).

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

Также имеется возможность следить за тем, как ошибки меняются в процессе обучения - для этого служит функция Пересчитывать по ходу - Real-time update; ее нужно активизировать перед запуском алгоритма обратного распространения. Сделав это, вы сможете наблюдать, как алгоритм пытается искать компромисс между обучающими и мешающими наблюдениями.

151

Все окна открываются и располагаются таким образом, чтобы они не пересекались.

3.Нажимаем кнопку Обучить Train, в диалоговом окне Об-

ратное распространение - Back Propagation будет запущен алго-

ритм обучения. При этом на график (рисунок 4.31) будет выводится ошибка.

4.Повторно нажимаем кнопку Обучить - Train, чтобы алгоритм переходил к очередным эпохам.

Рисунок 4.32. График ошибки обучения

Причем обращаем внимание на величину ошибки (рисунок 4.31), чем больше число итераций, тем больше величина ошибки. Наилучшую оценку обученной сети можно получить из диалогового окна Regression Statistics (рисунок 4.33), здесь анализируется показатель S.D.Ratio (отношение стандартного отклонения ошибки к стандартному отклонению данных), если он меньше 0.1, это означает прекрасное качество регрессии. В нашем примере он превышает значение 0.7, что также является достаточно неплохим результатом обучения.

ST Neural Networks автоматически вычисляет среднее и стандартное отклонение обучения и поднаборов проверки, а также вычисляются средние и стандартные отклонения ошибок предсказания.

Кроме того, ST Neural Networks показывает стандартный Pear- son-R коэффициент корреляции между фактическими и предсказанными значениями. Совершенное предсказание будет иметь коэффи-

152

циент корреляции 1,0. Корреляция 1,0 не обязательно указывает совершенное предсказание (только предсказание, которое является совершенно линейно коррелированным с фактическими данными), хотя практически коэффициент корреляции - хороший индикатор работы. Это обеспечивает простой способ сравнения работы (выполнения) нашей нейронной сети со стандартным методом наименьших квадратов.

Средние данные – среднее значение переменных. Data S.D. - стандартное отклонение переменной.

Abs. E. Mean - абсолютное значение ошибки (разница между целевыми и фактическими значениями переменной).

Error S.D. - стандартное отклонение ошибок для переменной . S.D. Ration - стандартное отношение отклонения.

Корреляция - Pearson-R коэффициент корреляции между целевыми и фактическими значениями.

Рисунок 4.33. Статистика регрессии

5. Если модель не достаточно «хорошо обучена», можно оптимизировать некоторые параметры, от которых зависит работа алгоритма обратного распространения.

153

5.1.Эпохи-Epochs. Задает число эпох обучения, которые проходятся при одном нажатии клавиши Обучить - Train. Значение по умолчанию установлено 100.

5.2.Скорость обучения-Learning rate. При увеличении скорости алгоритм работает быстрее, но в некоторых задачах это может привести к неустойчивости. Установим в начале максимальное значение 0,9, но убедившись, что оно не подходит, так как это приводит к неустойчивости (скорее всего из-за того, что данные зашумлены), подбором определяем значение 0,1, наилучшее для нашей сети и процесса обучения.

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

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

6. Если после оптимизации параметров алгоритма обратного распространения ошибки меняются незначительно, то возможно изменить веса, которые меняются автоматически, если нажать кла-

вишу Reinitialize, предварительно очистив окно Training error graph (Clear). А затем опять начать процесс обучения, нажав клавишу Train (обучение). Стоит также проанализировать и изменившееся диалоговое окно Regression Statistics (рисунок 4.35).

7. Последним моментом является запуск нейронной обученной сети, который может осуществляться тремя способами.

7.1.Обработка наблюдений по одному: Run → Run Single Case

Case No (введите номер наблюдения, подлежащего обработке) → нажмите клавишу Run и в поле Output проследите выходное значение.

7.2.Прогон всего набора данных: Run → Run Data Set → нажмите клавишу Run, и результаты будут выведены в нижней части окна. Наибольший интерес представляет среднеквадратическая ошибка – RMS error сети на данном наборе данных.

7.3.Тестирование на отдельном наблюдении: Run → Run One-off Case →введите входное значение и нажмите клавишу Run, и результаты будут выведены в поле Output.

154

Рисунок 4.34. График ошибки обучения

Рисунок 4.35. Статистика регрессии

4.5.2. Обучение с помощью метода Левенберга-Маркара

Метод Левенберга-Маркара считается одним из лучших алгоритмов нелинейной оптимизации, известных на сегодняшний день, и

155

это один из самых известных алгоритмов обучения нейронных сетей. Он имеет два существенных ограничения.

1.Алгоритм можно применять только для относительно небольших сетей (в пределах нескольких сотен нейронов);

2.Алгоритм годится только для сетей с одним выходом. Замечание. Применение алгоритма Левенберга-Маркара связано

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

Вначале создадим с помощью советчика - Intelligent Problem Solver многослойный персептрон с тремя слоями и в промежуточном слое возьмем шесть элементов. Затем командами: File → New → Network, видоизменяем сеть, создав в промежуточном слое шесть элементов (установив в поле Layer 2 цифру 6).

В итоге получим следующую сеть, представленную на рисунке

4.36.

Рисунок 4.36. Иллюстрация сети

Для обучения сети с помощью метода Левенберга-Маркара необходимо выполнить следующие действия:

Statistics → Training error graph;

Statistics → Case Errors;

Statistics → Regression Statistics;

Train → Multilayer Perceptron → Levenberg-Marquardt.

156

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

Рисунок 4.37. График ошибки обучения

Рисунок 4.38. Обучение методом Левенберга-Маркара

Вначале окно Tranding error graph будет пустым, то есть на нем не будет отражен график изменения ошибки. Обучение заключается в том, что в окне Levenberg-Marquardt необходимо нажать клавишу Train, после этого лишь начнется обучение сети и в окне Tranding error graph появится график изменения ошибки, причем в верхней части этого окна указывается ошибка на обучающей и верификационной части выборки (их значения не должны сильно различаться).

157

Рисунок 4.39. Ошибки наблюдений

Рисунок 4.40. Статистика регрессии

Кроме того, динамику изменения ошибки можно проследить в окне Case Errors. Но более точную оценку обученной сети и оценку результата работы сети в задаче регрессии можно получить из диалогового окна Regression Statistics. Здесь подсчитывают среднее и стандартное отклонение для выходных переменных и ошибки сети, а также отношение стандартного отклонения ошибки к стандартному отклонению данных.

Причем важно заметить, если величина Отношение ст.откл. – S.D.Ratio меньше 0,1, это означает прекрасное качество регрессии. В

158

нашем случае эта величина превышает 0,2, что также является хорошим показателем обучения нейронной сети.

4.5.3. Алгоритм выполнения обучения сети с помощью метода Левенберга-Маркара

1.Создаем нейронную сеть. Вначале создадим с помощью мастера - Intelligent Problem Solver многослойный персептрон с тремя слоями и в промежуточном слое возьмем шесть элементов. С помощью мастера, строим основную нейронную сеть, а затем командами: File-New-Network, видоизменяем сеть, создав в промежуточном слое шесть элементов (установив в Layer 2 цифру 6).

2.Затем начнем обучение с помощью метода ЛевенбергаМаркара. Для этого выполняем следующие команды:

Statistics→Tranding error graph;

Statistics→ Case Errors;

Statistics→ Regression Statistics;

Train→Multilayer Perceptrons→ Levenberg-Marquardt.

3.В диалоговом окне Levenberg-Marquardt нажимаем клавишу Train (обучение) несколько раз (то есть обучение происходит на различных эпохах, если же нажать только один раз, то получим обучение лишь на одной эпохе).

4.Если же ошибка на обучаемой и верификационной выборке очень велика, то стоит изменить весовые коэффициенты. Они автоматически поменяются, если нажать клавишу Reinitialize , предварительно очистив окно Training error graph (Clear). А затем опять начинаем процесс обучения, нажав клавишу Train (обучение).

5.Анализируем полученные данные по выведенным диалоговым окнам. Что касается диалогового окна Regression Statistics, то анализируется показатель S.D.Ratio, если он меньше 0,1, это означает прекрасное качество регрессии.

4.6.Генетические алгоритмы отбора входных данных

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

159

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

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

-Из-за «проклятия размерности» иногда лучше просто убрать некоторые переменные, в том числе и несущие значимую информацию, чтобы хоть как-то уменьшить число входных переменных, а значит и сложность задачи, и размеры сети. Вопреки здравому смыслу, такой прием иногда действительно улучшает способность сети к обобщению (Bishop, 1995) [10].

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

Можно попытаться поэкспериментировать в среде пакета ST Neural Networks - последовательно строить сети с различными наборами входных переменных, чтобы постепенно составить себе картину того, какие же входные переменные действительно нужны. Можно воспользоваться методом регуляризации весов по Вигенду (Weigend Weight Regiilariation) и в окне Редактор сети - Network Editor

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

Самое действенное средство решения данного вопроса в пакете

ST Neural Networks -- это Генетический алгоритм отбора входных данных - Genetic, Algorithm Input Selection. Этот алгоритм выполняет большое число экспериментов с различными комбинациями входных данных, строит для каждой из них вероятностную либо обоб- щенно-регрессионную сеть, оценивает ее результаты и использует их в дальнейшем поиске наилучшего варианта.

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

160