МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Чувашский государственный университет имени И.Н. Ульянова
Нейрон...
43 downloads
959 Views
1MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Чувашский государственный университет имени И.Н. Ульянова
Нейронные сети в MS Excel Методические указания к практическим занятиям и лабораторным работам
Чебоксары 2004
УДК 004.670.322.6 (075.8)
Составитель В.Х. Федотов
Нейронные сети в MS Excel: Метод. указания к практ. занятиям и лаб. работам / Сост. В. Х. Федотов; Чуваш. ун-т. Чебоксары, 2004. 72 с. Содержат описание Excel-надстройки для нейросетевого моделирования Excel Neural Package. Приводятся подробные примеры ее использования для решения экономических задач с использованием двух базовых парадигм нейронных сетей – многослойного персептрона и сетей Кохонена. Для студентов III-V курсов, обучающихся по специальностям «Менеджмент», «Финансы и кредит», «Математические методы в экономике».
Отв. редактор доцент И.М. Петров Утверждено Методическим советом университета
2
Характеристика пакета Excel Neural Package Семейство продуктов Excel Neural Package (компания «НейроОК») дополняет пакет MS Excel алгоритмами обработки данных, использующими технологии нейронных сетей. Реализовано как набор надстроек (add-ins) над Excel и состоит из следующих компонент: Winnet - программа-эмулятор нейросети для построения нелинейных моделей, обобщающих эмпирические данные. Инструмент статистического прогнозирования. Kohonen Map - программа построения самоорганизующихся карт Кохонена. Инструмент графического анализа многомерных данных. Demo Examples – файлы демонстрационных примеров. Times Series – программа анализа финансовых рядов. Winnet Winnet программно реализует распространенную архитектуру нейронной сети - многослойный персептрон. Предназначен для поиска скрытых зависимостей в больших массивах численной информации, для которых в явном виде аналитические зависимости не известны. Основные характеристики Winnet 3.0 Параметр Максимальное число строк Максимальное число столбцов Входное преобразование Выявление релевантных переменных до обучения сети Число слоев нейронной сети Число нейронов в слое Переходные функции Изменение цветовой палитры Алгоритмы обучения
Комментарий 65536 (ограничение Excel ) 256 (ограничение Excel ) Линейное, сигмоидальное Энтропийный анализ - алгоритм Boxcounting До 5 Зависит от объема памяти Линейная, гиперболический тангенс Улучшение наглядности Адаптивный выбор параметров обучения Rpropagation. Подключаются как внешние модули
3
Winnet имеет следующий набор средств контроля за обучением: • Графики ошибок обучения, обобщения и диаграмм рассеяния. • Диаграммы отклика «реальное значение - предсказанное нейросетью» для каждого выхода нейронной сети. • Возможности настройки параметров тестового множества. • Остановка обучения по различным критериям останова. Kohonen Map Kohonen Map представляет собой программный инструмент для построения и анализа информации с помощью алгоритма самоорганизующихся карт Кохонена. Основные применения задачи кластеризации и визуализации многомерной информации. Пользователь может представить весь массив данных в виде двумерной цветной карты и визуализировать на ней интересующие его характеристики. Карта «раскрашивается» по любому интересующему параметру и строится по специальному алгоритму, сохраняющему локальную близость данных: точки, близкие на карте, будут близки и в исходном многомерном пространстве. (Обратное, вообще говоря, неверно!) Основные характеристики Kohonen Map 1.0 Параметр Входное преобразование Понижение размерности Размер карты Кохонена Число градаций цвета Изменение цветов Поиск по карте
Комментарий Линейное, сигмоидальное, нормировка Метод главных компонент (Principal Components Analysis) Ограничен объемом свободной памяти От 2 до 10 Улучшение наглядности Быстрое нахождение положения на карте и просмотр ячеек карты
Demo Examples - демонстрационные примеры К пакету прилагаются демонстрационные файлы. 1. «НейроРиэлтер» - прогноз стоимости жилья в Москве. 4
2. «Эксперт 200» - кластерный анализ предприятий, входивших в рейтинг журнала «Эксперт». 3. «Нефтяная отрасль» - определение недооценки акций нефтяных предприятий по фундаментальным параметрам. 4. «Биржа» – биржевой день фьючерсных торгов. Эти примеры только демонстрируют общие подходы. Можно добиться лучших результатов, самостоятельно обучая новые варианты нейросетей, используя другие представления данных и способы их предобработки. НейроРиэлтер НейроРиэлтер - это нейросеть, натренированная более чем на полутора тысячах предложений по продаже квартир в Москве, взятых из базы данных риэлтерского агентства «МИАН». Нейроцена квартиры обобщает имеющиеся данные, предлагая средневзвешенную рыночную цену предложения на момент составления базы. НейроРиэлтер хорошо подходит для определения цены типичных квартир, близких по параметрам к имеющимся в базе данных. Демонстрационные файлы в поддиректории …\Realtor: Realtor.xls – файл данных; Real5.wnp и Real9.wnp – файлы проектов многослойного персептрона с 5 и 9 нейронами в скрытом слое соответственно. Для загрузки демонстрационного файла проекта нейросети из файла Realtor.xls, лист Realtor, необходимо после запуска Winnet в окне Select data source задать параметры: колонки (В-M), первая строка (4), последняя строка (1725), использовать первую строку в качестве имен входов (Включено). В качестве примеров приведены два проекта нейросети. Оба имеют 11 входов, 5 и 9 нейронов в скрытом слое. Результаты обучения приведены в столбцах О и R соответственно. В столбцах P и S для оценки погрешности предсказания посчитаны относительные ошибки. Эксперт 200 Пример демонстрирует общий подход к решению задачи кластеризации: как можно разделить имеющиеся данные на 5
группы с учетом нескольких факторов. В пример включены предприятия, входившие в рейтинг журнала «Эксперт». Демонстрационные файлы в поддиректории …\Expert200: Indicator97.xls – файл данных; Pr97_3x3.kmp и Pr97_10x10.kmp – файлы проектов сетей Кохонена. Для загрузки файла проекта сети Кохонена задаются следующие параметры: колонки (D,K-N), начальная строка (5), конечная строка (191), использовать первую строку как названия столбцов (Включено), использовать данные в первом столбце как идентификатор (Включено). Для обучения сети были использованы 4 параметра, объединенных под общим названием Индикаторы. Результаты для двух проектов (сети 3х3 =9 кластеров и 10х10 =100 кластеров) приведены в столбцах O-P и Q-R. Просмотр и анализ результатов можно проводить как встроенными в Kohonen Map средствами, так и средствами MS Excel. Нефтяная отрасль Пример прикладного применения нейросетей к финансовому анализу - оценка недооцененности акций нефтяных компаний по параметрам фундаментального анализа их производственной деятельности. Демонстрационные файлы в поддиректории …\Oil: Oil.xls – файл данных; Oil2x3x1.wnp и Oil5x1.wnp – файлы проектов нейросетей. Для загрузки файла проекта нейросети задаются следующие параметры: колонки (C-H), начальная строка (5), конечная строка (36), использовать первую строку как названия столбцов (Включено). В качестве примеров для сравнения приведены два проекта нейросети. Первый, с 5 входами и 1 выходом без скрытого слоя, пример реализации линейной модели. Второй пример с использованием данных о наиболее значимых входах имеет 2 входа, 3 нейрона в скрытом слое и 1 выход. В качестве входов использовались предобработанные данные о производственных и финансовых результатах эмитентов за год – Индикаторы, приведенные в столбцах C-G. В качестве выхода использовалась Оцененность компании, равная отношению капитализации к общему объему реализации. 6
Результаты прогноза нейросетей приведены в столбцах I–L. Если учесть аппроксимационные свойства нейросети, то можно трактовать полученную для каждой компании Оцененность как «истинную», полученную при анализе оцененностей всех компаний отрасли, а «ошибку» трактовать как отличие текущей оценки рынком стоимости акций компании от «истинной». Соответственно, если текущая оцененность сильно превосходит «истинную», то можно говорить о переоцененности акций и, следовательно, об ожидании снижения цен на акции. И наоборот, если текущая оцененность значительно меньше «истинной», то можно говорить о недооцененности акций и, следовательно, об ожидании повышения цен. Биржа Биржа – биржевой день фьючерсных торгов. Пример применения нейросетей к анализу и предсказанию поведения фондового рынка. Использованы поминутные данные за 7 часов биржевых торгов (с 11 часов 15 минут до 18 часов 15 минут) – всего 420 обучающих образцов за один день (26 ноября) биржевых торгов. Предсказывалось возможное изменение курса ценной бумаги на следующую минуту. Демонстрационные файлы в поддиректории …\Lkoh: 971126.xls – файл данных; lkoh.wnp – файл проекта нейросети. Для загрузки файла проекта задаются следующие параметры: колонки (B-U), начальная строка (5), конечная строка (424), использовать первую строку как названия столбцов (Включено). Результаты прогноза приведены на Листе 2 в столбце АН. Работа с пакетом Excel Neural Package Установка пакета 1. Создайте папку для работы. Пример: C:\Program\Office\ ENP. 2. Скопируйте в эту папку все файлы из директории …\Neural tools package. 3. Запустите MS Excel. 4. Выберите команду Меню/Сервис/Надстройки. В окне Надстройки нажмите кнопку Обзор. В открывшемся окне 7
Обзор выберите в созданной папке файл NPackage.xla и нажмите ОК. 5. В окне Надстройки в списке доступных надстроек появится новый пункт Neural tools Package. Проверьте, что он выбран. Нажмите ОК. 6. В левом верхнем углу экрана появится панель Neural Analysis, на которой расположены кнопки доступных нейроинструментов. Перетащите мышкой панель в любое удобное место экрана. 7. Возможны два варианта работы - вы впервые работаете с данными или обученная ранее сеть используется для работы с новыми данными. Winnet – многослойный персептрон Программа реализует классическую нейросетевую архитектуру многослойного персептрона. Для обучения используются модификации алгоритма обратного распространения ошибки – Backpropagation Algorithm или коротко - BackProp. Первый этап – обучение персептрона Это первый вариант работы с системой. На этом этапе происходит обучение нейросети на нашем наборе данных. В результате сеть должна построить аппроксимацию многомерных данных с заданной нами точностью, автоматически подбирая свои внутренние параметры - веса нейронов («черный нейроящик»). Для этого необходимо: • Загрузить исходные данные в Excel любым способом. • Запустить надстройку Excel Winnet. • Определить данные: что является входной информацией, а что – выходной. • Предобработать данные – осуществить их нормировку. • Попутно можно оценить значимость различных входов для выходной информации и, если необходимо, изменить (удалить/добавить) входы. • Создать нейросеть. 8
• Обучить нейросеть на учебном множестве и оценить работу на тестовом множестве. • Сохранить предсказанные данные в книге Excel. • Если необходимо, сохранить обученную нейросеть. • Закрыть Winnet. Второй этап – дообучение и прогнозирование персептрона Это второй вариант работы с системой. В этом случае обученная на первом этапе работы нейросеть может использоваться для дообучения (повторного обучения с модифицированными параметрами) или, что более важно - для прогнозирования (получения новых данных). При этом данные должны иметь такой же формат, какой использовался на первом этапе в процессе обучения. Схема работы: • Загрузить данные в Excel. • Запустить Winnet. • Загрузить созданный ранее проект. • Выполнить необходимые действия с сетью средствами Winnet. • Сохранить новые данные в книге Excel. • Сохранить измененный проект. • Завершить сеанс работы. Kohonen Map – самоорганизующаяся карта Сети Кохонена используются для решения задач кластеризации по заданным критериям (классификация, группировка, представительная выборка и др.). В литературе они получили красивое альтернативное название – самоорганизующиеся карты Кохонена. Данная программа реализует архитектуру такой сети. Первый этап – обучение нейросети Кохонена На этом этапе необходимо: • Загрузить данные в Excel любым способом и запустить Kohonen Map. • Определить входы, необходимые для работы сети Кохонена кластеризации. • Предобработать данные – осуществить их нормировку. 9
• При желании - выбрать нужное число главных компонент. • Создать и обучить сеть Кохонена. • Провести анализ многомерных данных средствами Kohonen Map. • Сохранить обработанные данные и рисунки в книге Excel. • Если необходимо, сохранить обученную нейросеть. • Выйти из Kohonen Map. Второй этап – дообучение и прогнозирование На этом этапе созданная ранее и сохраненная модель используется для анализа новых или обновленных данных. Последовательность действий: • Загрузить данные в систему и запустить Kohonen Map. • Загрузить созданный ранее проект. • Провести анализ результатов встроенными средствами Kohonen Map. • При необходимости сохранить данные в книге Excel. • Сохранить нейросеть (при необходимости) и выйти из Kohonen Map. Нейромодель «Вавилон» Задача «Инфляция-производство» Вавилон - это нейросетевая модель типа «инфляцияпроизводство», использующая для обучения выборку из 32 поквартальных данных за 1995-2002 годы, сформированных на основе бухгалтерской отчетности ООО «Вавилон» (г. Чебоксары). Задача – с помощью пакета Excel Neural Package построить сеть на основе архитектуры многослойного перспетрона, анализирующую наши данные и формирующую связь между показателями экономического роста данного предприятия (входы модели) х1
х2
Выручка
Себестоимость
х3
х4
х5
Прибыль от Балансовая Стоим. осн. реализации прибыль фондов
10
х6
х7
Рентаб. общая
Рентаб. собственная
и уровнем инфляции (выход модели), оцениваемом через поквартальный индекс потребительских цен в Чувашии (ИПЦ). Модель будет использоваться для прогнозирования развития данного предприятия на будущие периоды времени (кварталы). Алгоритм 1. Персептрон «4-3-1» 1. Разместим исходные данные на листе книги Excel, например, так. В первой и второй строках запишем условные и полные названия колонок, а с 3-й по 34-ю – сами данные. A
B
C
1
D I
E х1
F х2
G х3
ИПЦ
Выручка
Себестоимость
H х4
I х5
J х6
K х7
3 1995
1
1
132,2
201840
При- Балан- Стоим. быль совая основот приных реализ быль фондов 200120 1720 1906 156120
… 1995
2
2
130,3
206151
204134
2017
2102
188200
1,1
4,3
1995
3
3
126,6
248842
245620
3222
2117
190264
1,1
4,3
1995
4
4
115,4
243189
240136
2940
1084
202404
0,5
1,8
1996
1
5
107,3
440531
400111
40420
30245
755344
4
19,5
1996
2
6
105,6
484255
422133
62122
36780
880112
4,2
20,4
1996
3
7
105,7
508470
445050
63420
45246
814466
5,6
27,1
1996
4
8
104,5
554502
484438
67918
52047
915842
5,7
28,2
1997
1
9
104
552753
522333
30420
41222 2015612
2
12,8
1997
2 10
103,5
564299
522177
42122
46780 2055388
2,3
14,2
1997
3 11
103,3
675642
632222
43420
43444 2091426
2,1
13
1997
4 12
100,5
700213
637123
48678
39395 2163830
1,8
11,3
1998
1 13
107,6 1272210 1229765
42445
78236 1461204
5,4
21
1998
2 14
109,5 1493449 1432173
61276
76883 1582006
4,9
19,1
1998
3 15
120,8 1858141 1792262
65879
73245 1902642
3,8
15,1
1998
4 16
118 2029936 1941401
74123
60158 1928648
3,1
10,7
1999
1 17
113,2 2931555 2529111 402444 367200 7156120
5,1
22,6
1999
2 18
111,4 3333699 2932444 401255 375400 7388200
5,1
22,4
1999
3 19
111,7 4148223 3732344 415879 386250 7614264
5,1
22,4
1999
4 20
100,2 4229238 3821512 393314 429608 7842968
5,5
24,2
2000
1 21
105,1 4812096 4440203 582420 486620 10156144
4,8
20,6
2000
2 22
105,6 5513465 4532222 581111 532300 10188248
5,2
22,4
2 Год Квар № тал
11
Рен- Рентаб. таб. об- собстщая венная 1,2 4,7
2000
3 23
Прибыль от реализ 106,1 5757577 4511107 625233
2000
4 24
107,2 6562879 4633225 655719 652725 10233682
6,4
27,4
2001
1 25
106,1 10433333 4742424 690234 686111 10156144
6,8
22,1
2001
2 26
105 10462269 4755577 703846 702300 10188248
6,9
22,4
2001
3 27
103,4 10400553 4727524 710246 708100 10114246
7
25,4
2001
4 28
103,3 10609859 4822663 724964 712725 14294322
5
26,2
2002
1 29
103,9 10625287 4829676 721400 712344 10156144
7
22,6
Год Квар № тал
ИПЦ
Выручка
Себестоимость
Балан- Стоим. совая основприных быль фондов 588100 10114246
Рен- Рентаб. таб. об- собстщая венная 5,8 25
2002
2 30
103,8 10631179 4832354 736800 732106 10188248
7,2
22,5
33 2002
3 31
103,8 10631157 4832344 740277 738212 10114246
7,3
25,1
34 2002
4 32
103,7 10984046 4992748 764333 752566 22440110
3,4
25,2
2. Нажмем кнопку Нейроэмулятор на панели инструментов Neural Analysis. В появившемся диалоговом окне Select data source опишем размещение нашей таблицы. В поле «Использовать первую колонку для обозначения имен» (Use first row as column name) поставим галочку. Нажимаем ОК.
3. Откроется основное окно Winnet - эмулятора многослойного персептрона. Окно содержит 4 вкладки Data, Network, Training и Output, отражающие все этапы работы с нейросетью. Выберем вкладку Data, предназначенную для выполнения первого этапа работы с сетью - определения и пре/постпроцессирования данных. 12
4. Определим входы с помощью кнопки Select Inputs.
В окне All Data увидим полный список из 8 параметров нашей модели. Выберем в качестве входных последние 7. Для этого выполним, например команду Select All, которая перенесет все параметры в окно Inputs. Затем вернем «лишний» параметр ИПЦ назад в окно All Data кнопкой корректировки < . Полученный результат показан ниже.
13
5. Выполним препроцессирование входных данных с помощью кнопки Normalization. Этот шаг позволяет избавиться от лишних вычислительных проблем за счет выравнивания диапазонов переменных. Выберем, например, вариант Mean/Variance, при котором данные переводятся в безразмерную форму вычитанием среднего и нормированием на их дисперсию. Нажимаем ОК. Теперь все входы становятся сравнимыми по порядку величины.
Как видно, имеются и другие способы препроцессирования данных – линейная нормализация ((-1,+1) normalization) и нелинейное преобразование биполярным сигмоидом гиперболическим тангенсом thx=(e2x–1)/(e2x+1) (than14
normalization) к диапазону [-1,+1]. Вернемся в окно Select Inputs с помощью кнопки ОК. 6. Далее с помощью кнопки Select Outputs аналогично предыдущим пунктам выбираем выходной параметр - ИПЦ и нормализуем его с помощью Mean/Variance. Результат:
7. Определим значимость входных параметров. Нажмем кнопку Boxcounting, и система самостоятельно, используя новейший алгоритм Boxcounting, определит статистическую значимость входов для заданных выходов. В окне Boxcounting results в графическом виде мы увидим, что наиболее значимыми параметрами являются х2 и х6 (≈0,4 и 0,3 соответственно), а значимость параметров х1 и х5 – близка к нулю и они несущественны с точки зрения влияния на результирующую переменную. Остальные переменные занимают промежуточное положение по значимости. Внизу показываются значения параметров нормализации: Среднее(Mean predictability) =0,095 и Дисперсия(Variance) = =0,109. Чем больше их отношение отличается от 1, тем лучше предсказательная сила соответствующей модели. Вычислим отношение Среднее/Дисперсия ≈0,87. Как видно, оно близко к единице, т.е. предсказательная сила данной сети невысока. Уменьшение количества входов позволяет сократить время обучения нейросети или дает возможность увеличить ее нелинейные свойства. Поэтому вернемся в основное окно и удалим незначимые входы х1 и х5 из списка Inputs. 15
8. Процедуру по определению значимости входов можно и нужно повторить столько раз, сколько нужно. Так, выполним ее еще один раз, вновь выполняя команду Boxcounting.
Параметры нормализации изменились: среднее возросло, дисперсия осталась прежней. Отношение Среднее/Дисперсия = =0,137/0,109 ≈1,26 стало дальше от единицы, т.е. предсказательная сила модели стала лучше. Исключим и последнюю переменную. 16
Параметры нормализации вновь изменились: среднее уменьшилось, отношение Среднее/Дисперсия =0,062/0,109 ≈0,57 стало еще дальше от единицы, а предсказательная сила модели стала еще лучше. Этот процесс можно было бы продолжить и дальше (исключить третий и, возможно, второй столбцы), но мы на этом пока остановимся. Получившаяся схема входов-выходов примет вид:
17
9. Теперь создадим простую двухслойную нейросеть (с одним скрытым слоем) и архитектурой «4-3-1». Перейдем на закладку Network и выполним команду Create Net. В окне Network Constructor определим структуру сети: − число слоев без входного (Number of layer) =2; − число входов (Number of inputs) =4; − число нейронов в 1-м слое (Layer1, neurons) =3; − порядок нелинейности первого слоя (order) =1; − тип выходной функции первого слоя (function) = tanh; − число нейронов во втором слое (neurons) =1; − порядок нелинейности второго слоя (order) =1; − тип выходной функции 2-го слоя (function) = linear.
Подтверждаем выбор нажатием ОК и возвращаемся в исходное окно, где конфигурация сети «4-3-1» будет отражена графически. На практике редко используется архитектура нейросети с количеством скрытых слоев более одного. Нелинейность нейросети определяется количеством нейронов в этом скрытом слое. Использовать порядок нелинейности нейрона больше 1 рекомендуется только квалифицированным пользователям. 18
При создании нейросети следует также учитывать, что общее число связей сети (весов) должно быть в несколько раз или даже на порядок меньше объема обучающей выборки. Это обеспечит достаточно гладкую аппроксимацию данных. В противном случае нейросеть просто «переобучится», т.е. запомнит данные, потеряв возможность делать статистически значимые предсказания на новых данных. В нашем примере имеется 15 связей, а объем выборки равен 32. Таким образом, необходимое условие успешного обучения формально выполняется (32 больше, чем 15, в 2 с лишним раза), но для получения заведомо более качественного результата имеется 2 варианта - увеличение числа примеров до 150 (и более) или уменьшение числа связей до 3-5. Первый путь реализуется легко введением достаточного числа дополнительных обучающих примеров. Второй вариант интереснее, и он может быть реализован разными способами. Например, сокращением числа входов до двух и уменьшением числа нейронов в промежуточном слое до двух. Тогда получится сеть типа «2-2-1» с пятью связями и т.д. Однако дальше мы продолжим работу с сетью вида «4-3-1». 10. Начнем подготовку к обучению сети. Перейдем на следующую закладку Training. 19
Перед обучением надо задать тестовое множество из всей совокупности обучающих примеров. Примеры из этого множества не будут участвовать в обучении. На них будут строиться оценки предсказательных свойств обученной сети. Нажмем кнопку Edit test set. В открывшемся окне зададим размер тестовой выборки (Number of test examples) =0, а ее характер установим в режим случайной выборки (Random test set). Как правило, число примеров в тестовой выборке составляет 20-30% и не менее нескольких десятков. Однако с учетом малости нашей выборки мы выбрали это число равным нулю. Поэтому тестовые примеры придется, возможно, добавить позже.
Характер обучающей выборки установлен Random, так как для задач аппроксимации наиболее естественным является случайный выбор тестового множества. Отдельная опция Random+Last examples полезна для прогнозирования временных рядов. При этом последние примеры всегда исключаются из обучения и являются прогнозом. Подтвердим выбранные настройки нажатием кнопки ОК и вернемся в основное окно. 20
11. Приступим непосредственно к обучению. Нажмем кнопку Start training. За ходом обучения сети можно наблюдать по изменению параметров в области Информация об обучении (Training Info), показанной в правом нижнем углу следующего рисунка. Ждем, пока процесс обучения остановится сам или прерываем его искусственно кнопкой Остановить обучение (Stop Training).
21
Процесс обучения остановился сам. Как видно, на данный момент прошло 9336 эпох (Epoches), и текущая ошибка обучения (Training error) составляет 0,2. Заметим, что у вас могут получиться другие результаты. Это объясняется тем, что начальные значения весов выбираются случайным образом, хотя реализованный в программе механизм выбора случайных чисел фиксированный. В данном случае сработал один из критериев остановки обучения. Посмотрим их с помощью команды Критерии остановки (Stopping criteria).
Как видно, процесс обучения остановился по достижении требуемой точности обучения равной 0,2, а максимальное число эпох равное 10 000 не было достигнуто. В этом окне можно изменять критерии остановки обучения, например – подбором. Однако на результаты обучения влияют и другие параметры. За ходом обучения можно наблюдать и в графическом виде в окнах, вызываемых нажатием клавиш в области Graphs. Выберем окно История обучения (Errors History).
Эта диаграмма показывает, что ошибка обучения стабилизировалась уже в районе 1000-й эпохи. Следовательно, можно ослабить критерий точности. Желательно остановить 22
процесс обучения в момент, когда ошибки обучения и обобщения начнут сильно расходиться. Это сигнализирует о начале режима «переобучения». Результаты обучения можно визуально оценить и на графике Network answers. Соответствующее окно показано ниже (зеленая линия с точками показывает отклик сети, а оранжевая – реальные данные).
Можно управлять параметрами процесса обучения, что рекомендуется только квалифицированным пользователям. Например, командой Randomize sinapses можно изменить начальные значения весов сети. При этом выдается окно Randomization, которое позволяет перемешать веса сети и выбрать их новые начальные значения, а также добавить так называемый «шум». Все эти настройки могут оказать существенное влияние на работу сети, вплоть до потери устойчивости и сходимости.
В окне Randomization имеется два варианта реализации алгоритма обучения – без шума и с шумом. В первом варианте (Randomize synapses) начальные веса сети выбираются случайным образом в заданном интервале. Верхняя граница 23
интервала определяется пользователем в окошечке Ввода весов (Enter range). Как видно, по умолчанию эта граница выбрана равной 0,5, что соответствует интервалу [-0,5,+0,5]. Это число можно изменить, однако рекомендуется оставаться в диапазоне [-1,+1]. В частности, в нашем примере уменьшение этого значения до 0,35 приводило к ускорению процесса обучения. Обратим внимание на то, что нажатие кнопки ОК приводит к инициализации начальных значений весов по алгоритму случайных чисел. Поэтому для воспроизводимости результатов обучения рекомендуется перед началом каждого обучения выполнять процедуру рандомизации - команду Randomize synapses и ОК. При этом простое закрытие окна (× или Cancel) приведет к использованию в качестве начальных значений весов, полученных в предыдущем цикле обучения. Если сеть имеет слишком много элементов, то она может запомнить весь учебный набор. В нашем примере ресурсами сети «4-3-1» являются восемь вершин, в т.ч. 3 «скрытых» и 15 связей, в т.ч. 12 – в первом слое. Число учебных образцов равно 32, т.е. больше числа даже всех, а не только скрытых ресурсов сети. Поэтому в данном случае сеть не может механически запомнить все учебные образцы, для запоминания которых требуется 12х5= =60 элементов. Такие возможности могут быть заведомо реализованы, например, сетью с 60:4 =15 скрытыми элементами в промежуточном слое. Однако и при меньшем числе элементов «переобучение» не исключено. Добавление шума к синапсам (Add noise to sinapses) как раз и служит для борьбы с эффектом переобучения. Добавление случайной доли (до 10%) шума к учебным образцам позволяет снизить вероятность запоминания исходных данных. При этом важно, чтобы шум добавлялся к исходному (немодифицированному) набору данных. Иначе эти данные могут «поплыть», т.е. перестать соответствовать первоначальным закономерностям. Блок выбора алгоритма обучения позволяет изменить стандартный алгоритм обратного распространения на его адаптивный вариант (Select algorithm) и/или отредактировать управляющие параметры выбранного алгоритма (Edit current algorithm). 24
По умолчанию выбраны следующие значения. Начальная ошибка элементов (Initial delta) =0,1, может варьироваться в интервале [0,10]. Минимальная ошибка (Minimal delta) =1⋅10-8, может варьироваться в интервале [0,1]. Максимальная ошибка (Maximal delta) =10, может варьироваться в интервале [0,100]. Шаг снижения Nu(-) =0,5, может варьироваться в интервале [0,1]. Шаг повышения Nu(+) =1,2, может варьироваться в интервале [0,10]. Эти параметры следует регулировать осторожно и только квалифицированным пользователям. 12. Обучение закончено. Теперь можно выполнить еще один этап работы с сетью - экспортировать результаты работы сети назад в книгу Excel. Для этого перейдем на последнюю закладку Вывод (Output). Она содержит 2 блока параметров и одну кнопку управления сохранением: − блок Опции вывода (Output options) служит для выбора одного из двух следующих режимов: Вывод только отклика сети (Output only network answer) или Вывод всех данных (Output all data), т.е. и отклика и исходной информации; − блок Место вывода (Output place) служит для выбора одного из двух вариантов места сохранения результатов работы сети: текущий лист (Use active Excel Worksheet) или выбранный лист выбранной книги (Select Workbook/Worksheet). Дополнительно имеется возможность уточнить левую верхнюю ячейку диапазона вывода на выбранном листе (Left upper cell of output), которая по умолчанию принимается равной А1. Выбранные в нашем примере параметры обеспечивают сохранение только результатов работы нейросети в указанной книге на листе Нейро_Вавилон.xls в блоке ячеек, начинающемся с клетки L2. 25
Выполним команду Output. Получим следующую таблицу: A 1 2
3
B C
D I
E х1
F х2
G х3
H х4
Кв ВыручГод ар № ИПЦ ка та л 1995 1 1 132,2 201840
Себестоимость
1995
2
2 130,3
206151
204134
2017
2102
1995
3
3 126,6
248842
245620
3222
2117
1995
4
4 115,4
243189
240136
2940
1996
1
5 107,3
440531
1996
2
6 105,6
484255
1996
3
7 105,7
1996
4
8 104,5
1997
1
9
Прибыль от реализ 200120 1720
I х5
Балан- Стоим. совая основприных быль фондов 1906 156120
J х6
K х7
L
Рентаб общая 1,2
Рентаб. ИПЦ собств 4,7 130,79
188200
1,1
4,3 129,64
190264
1,1
4,3 128,05
1084
202404
0,5
1,8 115,52
400111 40420 30245
755344
4 19,5 105,81
422133 62122 36780
880112
4,2 20,4 105,80
508470
445050 63420 45246
814466
5,6 27,1 105,64
554502
484438 67918 52047
915842
5,7 28,2 105,65
104
552753
522333 30420 41222 2015612
2 12,8 104,04
1997
2 10 103,5
564299
522177 42122 46780 2055388
2,3 14,2 104,34
1997
3 11 103,3
675642
632222 43420 43444 2091426
2,1
1997
4 12 100,5
700213
637123 48678 39395 2163830
1,8 11,3 101,56
1998
1 13 107,6 1272210 1229765 42445 78236 1461204
5,4
1998
2 14 109,5 1493449 1432173 61276 76883 1582006
4,9 19,1 110,04
26
13 101,90 21 107,25
Кв ВыручСебеГод ар № ИПЦ ка стоита мость л 1998 3 15 120,8 1858141 1792262
33 34
Прибыль от реализ 65879
Балан- Стоим. совая основприных быль фондов 73245 1902642
Рентаб общая 3,8
Рентаб. ИПЦ собств 15,1 120,60
1998
4 16
118 2029936 1941401 74123 60158 1928648
3,1 10,7 118,12
1999
1 17 113,2 2931555 2529111 402444 367200 7156120
5,1 22,6 113,09
1999
2 18 111,4 3333699 2932444 401255 375400 7388200
5,1 22,4 111,46
1999
3 19 111,7 4148223 3732344 415879 386250 7614264
5,1 22,4 106,47
1999
4 20 100,2 4229238 3821512 393314 429608 7842968
5,5 24,2 105,58
2000
1 21 105,1 4812096 4440203 582420 486620 10156144
4,8 20,6 104,72
2000
2 22 105,6 5513465 4532222 581111 532300 10188248
5,2 22,4 104,68
2000
3 23 106,1 5757577 4511107 625233 588100 10114246
5,8
2000
4 24 107,2 6562879 4633225 655719 652725 10233682
6,4 27,4 104,67
2001
1 25 106,1 10433333 4742424 690234 686111 10156144
6,8 22,1 104,75
2001
2 26
105 10462269 4755577 703846 702300 10188248
6,9 22,4 104,73
2001
3 27 103,4 10400553 4727524 710246 708100 10114246
7 25,4 104,76
2001
4 28 103,3 10609859 4822663 724964 712725 14294322
5 26,2 104,61
2002
1 29 103,9 10625287 4829676 721400 712344 10156144
7 22,6 104,76
2002
2 30 103,8 10631179 4832354 736800 732106 10188248
7,2 22,5 104,78
2002
3 31 103,8 10631157 4832344 740277 738212 10114246
7,3 25,1 104,82
2002
4 32 103,7 10984046 4992748 764333 752566 22440110
3,4 25,2 104,66
25 104,70
Выбор второго режима вывода - Вывод всех данных (Output all data) приводит к формированию более информативной таблицы, содержащей все включенные в модель данные и не включающей неиспользуемые данные. A 1 2 3
B
C
D
E
СебеПрибыль от Балансовая Рентабельстоимость реализации прибыль ность общая (Input) (Input) (Input) (Input)
F
ИПЦ ИПЦ (Output) (Predicted)
200120
1720
1906
1,2
132,2
130,79
204134
2017
2102
1,1
130,3
129,64
245620
3222
2117
1,1
126,6
128,05
240136
2940
1084
0,5
115,4
115,52
400111
40420
30245
4
107,3
105,81
422133
62122
36780
4,2
105,6
105,80
445050 484438 522333 522177
63420 67918 30420 42122
45246 52047 41222 46780
5,6 5,7 2 2,3
105,7 104,5 104 103,5
105,64 105,65 104,04 104,34
27
СебеПрибыль от Балансовая Рентабельстоимость реализации прибыль ность общая (Input) (Input) (Input) (Input)
32 33
632222 637123 1229765 1432173 1792262 1941401 2529111 2932444 3732344 3821512 4440203 4532222 4511107 4633225 4742424 4755577 4727524 4822663 4829676 4832354 4832344 4992748
43420 48678 42445 61276 65879 74123 402444 401255 415879 393314 582420 581111 625233 655719 690234 703846 710246 724964 721400 736800 740277 764333
43444 39395 78236 76883 73245 60158 367200 375400 386250 429608 486620 532300 588100 652725 686111 702300 708100 712725 712344 732106 738212 752566
2,1 1,8 5,4 4,9 3,8 3,1 5,1 5,1 5,1 5,5 4,8 5,2 5,8 6,4 6,8 6,9 7 5 7 7,2 7,3 3,4
ИПЦ ИПЦ (Output) (Predicted) 103,3 100,5 107,6 109,5 120,8 118 113,2 111,4 111,7 100,2 105,1 105,6 106,1 107,2 106,1 105 103,4 103,3 103,9 103,8 103,8 103,7
101,90 101,56 107,25 110,04 120,60 118,12 113,09 111,46 106,47 105,58 104,72 104,68 104,70 104,67 104,75 104,73 104,76 104,61 104,76 104,78 104,82 104,66
13. И, наконец, сохраним наш нейропроект с результатами работы командой Save Project, расположенной на вкладке Data. На запрос имени файла проекта ответим – Vavilon.wnp. Предварительно, конечно, нужно выбрать папку для его размещения. 14. Можно теперь закрыть окно программы Winnet. Дальнейший анализ полученных результатов будем проводить стандартными статистическими методами в Excel. Найдем уравнение нейрорегрессии и ошибку прогноза: ИПЦ(н)=117,81+1,70⋅10-6х2-3,003⋅10-5х3+1,76ּ10-5х4-1,99х6, где: х2 - себестоимость, х3 -прибыль от реализации, х4 - балансовая прибыль, х6 - общая рентабельность. Для сравнения приведем и уравнение обычной регрессии: ИПЦ(о)=117,59+1,96⋅10-6х2-4,79⋅10-6х3-1,022⋅10-5х4-1,960х6. Соответствующая статистика приведена в таблице.
28
Нейростатистический показатель Число обучающих примеров, n Число независимых переменных, k Общая нейроошибка, Σ(yнейро - yсредн ) Ошибка регрессии, Σ(yрасч - yсредн ) 2 Остаток, Σe(t)2=Σ(yнейро -yсредн ) 2- Σ(yрасч -yсредн ) 2 Коэф. детерминации, R2=1-Σe(t) 2/ Σ(yнейро–yсредн ) 2) Коэффициент множественной корреляции, R=√ R 2 Скорректированный Rкор 2 =1-(1- R 2)(n-1)/(n-k-1) Стандартная ошибка MS регрессии, Σ(yрасч -yсредн ) 2/k MS остатка, Σe(t)2/(n-k-1) Критерий Фишера, F = (R 2/k)/((1- R 2 )(n-k-1)) Значимость критерия Фишера
Значение 32 4 1983,74 648,12 1335,62 0,33 0,57 0,23 7,03 162,03 49,47 3,28 0,03
Табличное значение критерия Фишера при доверительной вероятности 0,95, ν1 =k =4, ν2 =n-k-1 =27 составляет 2,73. Поскольку Fрасч =3,28> Fтабл =2,73, то уравнение регрессии можно считать адекватным. Для оценки независимости рассчитаем критерий ДарбинаУотсона: d=Σ(e(t)-e(t-1))2 / Σe(t)2 =1,41777E-05. В качестве критических табличных уровней при n =32 и k =4 для уровня значимости 5% возьмем значения di=1,18 и du=1,73. Расчетное значение не попало в интервал, т.е. оценки можно считать независимыми. В следующей таблице показан расчет коэффициентов уравнения нейрорегрессии и сопутствующая статистика Стьюдента (t-критерий): Переменная
Коэффициент Стандартная Критерий регрессии ошибка Стьюдента ИПЦ-(Output) 117,81 3,42 34,42 Себестоимость 1,70129E-06 3,05E-06 0,5578 Прибыль от реализации -3,00265E-05 5,598E-05 -0,5363 Балансовая прибыль 1,75885E-05 5,599E-05 0,3141 Рентабельность общая -1,99 0,94 -2,12
Табличное значение критерия Стьюдента при уровне значимости 5% и степенях свободы 32-4-1 =27 составляет 2,052. Так как расчетное значение больше табличного только для последнего коэффициента (рентабельность), то только он может 29
рассматриваться как значимый. Остальные коэффициенты можно опустить. С учетом проведенного анализа результаты нейромоделирования могут быть записаны в виде приближенного уравнения нейрорегрессии (х6 - общая рентабельность): ИПЦ(нейро) ≈117,815-1,994х6. Общая оценка работы нейросети приведена в следующей таблице. Год Квар- № тал п/п
1995 1995 1995 1995 1996 1996 1996 1996 1997 1997 1997 1997 1998 1998 1998 1998 1999 1999 1999 1999 2000 2000 2000 2000 2001 2001 2001 2001 2002 2002 2002 2002
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
ИПЦ (фактический)
132,20 130,30 126,60 115,40 107,30 105,60 105,70 104,50 104,00 103,50 103,30 100,50 107,60 109,50 120,80 118,00 113,20 111,40 111,70 100,20 105,10 105,60 106,10 107,20 106,10 105,00 103,40 103,30 103,90 103,80 103,80 103,70
ИПЦ (предсказанный нейросетью) 130,79 129,64 128,05 115,52 105,81 105,80 105,64 105,65 104,04 104,34 101,90 101,56 107,25 110,04 120,60 118,12 113,09 111,46 106,47 105,58 104,72 104,68 104,70 104,67 104,75 104,73 104,76 104,61 104,76 104,78 104,82 104,66
ОтносиИПЦ Относительная (расчет тельная ошибка по уравнению ошибка нейронейронейропрогноза, регрессии) регрессии, % % -0,01 115,42 -0,17 -0,01 115,62 -0,15 0,01 115,62 -0,11 0,00 116,82 0,01 -0,01 109,84 0,03 0,00 109,44 0,04 0,00 106,65 0,01 0,01 106,45 0,02 0,00 113,83 0,10 0,01 113,23 0,10 -0,01 113,63 0,10 0,01 114,23 0,14 0,00 107,05 -0,01 0,01 108,04 -0,01 0,00 110,24 -0,11 0,00 111,63 -0,06 0,00 107,65 -0,06 0,00 107,65 -0,04 -0,05 107,65 -0,04 0,05 106,85 0,07 0,00 108,24 0,03 -0,01 107,45 0,02 -0,01 106,25 0,00 -0,03 105,05 -0,02 -0,01 104,26 -0,02 0,00 104,06 -0,01 0,01 103,86 0,00 0,01 107,85 0,05 0,01 103,86 0,00 0,01 103,46 0,00 0,01 103,26 -0,01 0,01 111,04 0,07
Сумма квадратов ошибок =
0,01 30
0,15
Как видно из таблицы, результаты нейромоделирования хорошо аппроксимируют фактические данные и общая квадратичная ошибка составляет всего 0,01%. Приближенное уравнение регрессии, полученное на основе нейромоделирования, конечно, содержит большую ошибку, но тоже всего 0,15% (хуже в 15 раз). Графическая иллюстрация таблицы приведена ниже. ИПЦ
Сравнение фактического уровня инфляции с нейропрогнозом 140
ИПЦ (Predicted)
130
ИПЦ(расч по ур.нейрорегр)
ИПЦ,%
120 110 100 90 80 0
4
8
12
16 Кварталы
20
24
28
32
Новый сеанс работы с нейросетью Если нейросеть была создана в предыдущем сеансе работы с Excel, то сохраненный ранее проект можно использовать для работы с новыми данными. Эти данные обязательно должны иметь тот же формат, как и те, по которым сеть обучалась. Для этого предназначена кнопка Load Project (Загрузить проект) на вкладке Data. Вспомним, что наш нейропроект хранится в файле Vavilon.wnp, а Excel-таблица с исходными данными и результатами предыдущего моделирования в файле Vavilon.xls. Для загрузки файла проекта нейросети из файла Vavilon.xls необходимо вновь запустить программу Winnet и в окне Select data source восстановить прежние параметры диапазона данных для нейромоделирования. 31
Алгоритм 2. Повторное обучение персептрона «4-3-1» 1. Загрузим сохраненные ранее данные в Excel. Для этого откроем нашу книгу Vavilon.xls. 2. Загрузим созданный ранее проект. Нажмем кнопку Нейроэмулятор на панели инструментов Neural Analysis. В появившемся окне Select data source вновь укажем размещение нашей таблицы (количество и порядок столбцов новых данных обязательно должны совпадать с использованными при создании проекта и обучении нейросети). Столбцы, используемые в качестве выходов, можно занулить или игнорировать. Зададим: колонки =D-К, первая строка =2, последняя строка =34 и включим флажок Использовать первую строку в качестве имен входов. Нажимаем ОК. Замечание. Имеется и более быстрый способ загрузки проекта. Если перед загрузкой нейроэмулятора выделить диапазон с исходными данными на листе Excel, то после запуска нейроэмулятор автоматически заполнит параметры размещения наших исходных данных. 3. Загрузим созданный ранее проект. Для этого перейдем на вкладку Data и нажмем кнопку Load Project (Загрузить проект). В открывшемся окне выберем файл нашего проекта Vavilon.wnp и завершим загрузку командой Открыть. 4. Теперь мы можем продолжить работу с нейросетью аналогично тому, как это было проделано выше – в алгоритме 1. Например, перейдем на закладку Network и вновь увидим графическое изображение нейросети с архитектурой «4-3-1». Здесь мы делать ничего не будем. 5. Перейдем дальше на закладку Training, зададим прежние параметры обучения – критерий остановки по ошибке равной 0,2 (использовать критерии остановки) и начнем обучение – Start Training.
32
Просмотрим график ошибок. Видно, что стабилизация ошибки происходит в районе 7000-8000-й эпох, т.е. примерно так же, как и раньше.
Отклик сети (Network answer) также подобен прежнему.
33
6. Перейдем на закладку Output, зададим параметры сохранения результатов в книге Excel так же, как это делалось раньше. 7. Сам нейропроект можно не сохранять, так как мы не вносили в него изменений. 8. Заканчиваем сеанс работы с нейросетью, закрывая окно программы Winnet. Модификация модели «Вавилон» На этом примере мы попытаемся более детально познакомиться с процессом обучения нейронной сети, особенно останавливаясь на тех моментах нейромоделирования, которые были мало затронуты в предыдущих примерах. Попытаемся улучшить качество нейромодели, уменьшая число связей за счет дальнейшего сокращения малозначащих входов. О том, что это возможно, уже упоминалось при рассмотрении алгоритма 1 (см. п.9). Алгоритм 3. Персептрон с архитектурой «2-3-1» 1. Вновь загрузим книгу Vavilon.xls с сохраненными ранее данными в Excel. 2. Вновь загрузим сохраненный файл проекта Vavilon.wnp с прежними параметрами расположения исходных данных. 3. Продолжим работу с нейросетью. Перейдем на закладку Data и выполним команду Boxcounting, чтобы просмотреть диаграмму значимости входов модели.
4. Видно, что входы 2 и 3 менее значимы. Удалим вначале вход 3. Как это делается, мы уже рассматривали в алгоритме 1. Посмотрим параметры нормализации. Они практически не изменились - среднее стало 0,063 (было 0,062). Поэтому удалим 34
и вход номер два. Вновь посмотрим параметры нормализации. Они опять почти не изменились - среднее стало 0,066. Это означает, что удаление этих двух входов практически не повлияет на прогностические свойства нейромодели. Однако новый вариант модели будет лучше соответствовать необходимому условию успешного обучения - число образцов должно быть значительно больше числа связей. Кроме того, такая модель будет проще – что неплохо. 5. Перейдем на закладку Network и выполним команду Create Network. Получим сеть «2-3-1».
6. Приступим к ее обучению. Перейдем на вкладку Training. Установим критерий остановки (Stopping criteria) по количеству эпох = 100 000, ошибке обучения > переведем их в окно списка Selected. Отметим, что в отличие от Winnet теперь все данные являются входными и участвуют в обучении. Корректировку выбранных входов можно провести кнопками < или