
- •Лабораторная работа №1 Задача классификации
- •1.1. Постановка задачи
- •1.2. Создание набора данных
- •1.3. Создание новой сети
- •1.4. Сохранение набора данных и сети
- •1.5. Обучение сети
- •1.6. Запуск нейронной сети
- •1.7. Классификация с номинальной выходной переменной
- •2. Решение задачи классификации «Ирисы Фишера»
- •2.1. Постановка задачи
- •2.2. Формирование набора данных
- •2.3. Обучение с кросс-проверкой
- •3. Задание для самостоятельного выполнения
- •Лабораторная работа № 2 Решение задачи регрессии
- •1. Введение
- •2. Постановка задачи регрессии
- •2.1. Редактирование переменных из набора данных
- •3. Обучение сети в задаче регрессии
- •4.Тестирование обученной сети
- •5. Заданиедля самостоятельного выполнения
- •Лабораторная работа №3 Задача анализа временного ряда и прогнозирования
- •1.1. Постановка задачи
- •1.2. Создание сети типа многослойного персептрона
- •1.3. Проекция временного ряда
- •2. Задание для самостоятельного выполнения
- •Вопросы для самоконтроля
2. Решение задачи классификации «Ирисы Фишера»
2.1. Постановка задачи
В состав тестовых примеров Exampls программы входит файл данных IRIS.STA, относящийся к задаче Фишера о классификации ирисов. Применение классических методов для решения этой задачи подробно описано в книге В. П. Боровикова «Популярное введение в программу STATISTICA» («Компьютер–Пресс», 1998).
Рассматривается три вида цветков ириса: Setosa, Versicolor и Virginica. Всего имеется по 50 экземпляров каждого вида, и для каждого из них измерены четыре величины: длина и ширина чашелистика, длина и ширина лепестка. Цель состоит в том, чтобы научиться предсказывать тип нового (пока не известного) цветка по данным этих измерений. Эта задача интересна сразу по нескольким причинам. Во-первых, один из классов (Setosa) линейно отделим от двух других. Оставшиеся два разделить гораздо труднее, и, кроме того, имеется несколько экземпляров, выбивающихся из общей картины, которые легко отнести к другому классу. Такие выбросы являются хорошей проверкой надежности работы сети на сложных данных.
Загрузите файл IRIS.STA в пакет ST Neural Net\vorks и взгляните на данные. Здесь имеется четыре входных переменных и одна выходная. Выходная переменная – номинальная с тремя возможными значениями: Iris = {Setosa, Versicol, Virginic}.
2.2. Формирование набора данных
Данные про ирисы содержат 150 наблюдений – это довольно много, и сеть будет обучаться медленно. Для учебных целей давайте сократим объем данных до 60 наблюдений. При этом мы заодно познакомимся с некоторыми возможностями Редактора данных – Data Set Editor. Кроме того, мы разобьем данные на две группы: обучающее множество Training Set будет использоваться для обучения сети, а контрольное множество Verification Set – для проверки качества ее работы.
Чтобы сформировать сокращенный набор данных, сделайте следующее:
Откройте набор данных IRIS.STA и вызовите Редактор данных – Data Editor.
Выделите наблюдения 21–50, для этого прокрутите таблицу так, чтобы стало видно наблюдение номер 20, щелкните на метке его строки и либо протащите мышь до нижней границы диапазона, либо выделите его клавишами вниз при нажатой клавише SHIFT.
Нажмите правую кнопку мыши и выберите из контекстного меню пункт Не учитывать – Ignore. Отмеченные наблюдения будут выделены серым цветом, и программа ST Neural Networks не будет использовать их при обучении.
Проделайте то же самое для наблюдений 71–100 и 121–150.
Поменяйте число наблюдений в обучающем множестве (оно указано в поле Обучающее – Training) с 60 на 30. Программа ST Neural Networks автоматически отнесет оставшиеся наблюдения к контрольному множеству, так что теперь у нас будет 30 обучающих и 30 контрольных наблюдений.
Нажмите кнопку Перемешать – Shuffle. Обучающие и контрольные наблюдения будут взяты случайным образом среди всех 60 наблюдений. Вы заметите это, взглянув на таблицу результатов. Обучающие наблюдения показаны черным цветом, а контрольные – красным.
2.3. Обучение с кросс-проверкой
Обсуждение. Мы разделили данные на две части: обучающее и контрольное подмножества. Стандартный способ обучения нейронных сетей заключается в том, что сеть обучается на одном из множеств, а на другом проверяется результат; таким образом, контрольное множество для обучения не используется. Это дает независимый способ проверки того, научилась ли сеть чему-нибудь полезному. В отсутствие кросс-проверки сеть с большим числом весов и не слишком большим набором обучающих данных, скорее всего, будет слишком близко следовать обучающим данным («чрезмерная подгонка») и воспринимать не столько структуру данных, сколько содержащиеся в них помехи.
Способность сети не только учиться на обучающих данных, но и показывать хорошие результаты на совершенно новых данных (т.е. таких, которые сеть до того не видела), называется обобщением. Хорошо ли сеть обобщает, в пакете ST Neural Networks можно определить, следя за контрольной ошибкой – она должна быть достаточно мала. Может случиться так, что после нескольких прогонов обучающего алгоритма ошибка обучения падает почти до нуля, в то время как контрольная ошибка сначала убывает, а потом снова начинает расти. Это верный признак переобучения, и при росте контрольной ошибки обучение следует прервать.
Если контрольное множество используется описанным способом, то, строго говоря, по окончании обучения следует проверить работу сети еще на одном – третьем множестве, которое вообще никак не участвовало в обучении и даже в контролировании результатов. Поскольку наилучшая сеть определяется по контрольному множеству, может получиться так, что выбранная сеть совершенно случайно дает на нем хорошие результаты. Чтобы избежать такой ситуации, нужно какое-то количество наблюдений оставить для тестового множества. Оно будет использоваться только после того, как будет сформирован окончательный вариант сети. Если данных не слишком много и все их желательно использовать для обучения и контроля, то с этим этапом возникают трудности. Многие пользователи нейронных сетей вообще не заботятся о тестовых множествах.
В пакете ST Neural Networks автоматически учитывается разбиение данных на обучающее, контрольное и тестовое множества. Все алгоритмы используют для обучения только обучающее множество, а результаты и ошибки выводятся отдельно по каждому из этих трех множеств. Кроме того, как мы уже убедились, есть возможность не учитывать некоторые наблюдения. Это бывает полезно в тех случаях, когда данных слишком много или когда есть подозрение, что некоторые данные искажены.
Выполнение обучения с кросс-проверкой
Для нашей задачи про ирисы построим многослойный персептрон с тремя слоями, позволим Советнику – Network Advisor выбрать параметры пре/постпроцессирования и зададим число элементов в промежуточном слое равным восьми. Поскольку выходная переменная – номинальная с тремя состояниями, программа ST Neural Networks автоматически выберет способ кодирования 1 из N, и сеть будет иметь три выходных элемента. Каждое из трех возможных номинальных значений выражается высоким выходом для одного из этих элементов и низким – для двух оставшихся (например, типу Setosa может соответствовать выходной набор{0,97; 0,02; 0,01}). Как и в случае номинальной переменной с двумя состояниями, точная интерпретация зависит от значений порогов принятия (Accept) и отвержения (Reject). Конкретнее, если наибольшее из выходных значений превышает порог принятия, а остальные два – ниже порога отвержения, то номинальной переменной присваивается значение; в противном случае выход считается «неясным». После того как сеть построена, на ее графическом изображении в окне Рисунок сети – Network Illustration видно, что три выходных элемента объединены скобками в одну выходную переменную (рис. 16).
Откроем теперь диалоговое
окно Спуск по сопряженным
градиентам – Conjugate
Gradient
Descent
(см. рис.17) с помощью
команды Сопряженные
градиенты – Conjugate
Gradients...
меню Обучить
Многослойный персептрон – Train–Multilayer
Perceptrons
или кнопки .
|
|
Рис. 16. Схема структуры сети |
Рис. 17. Окно обучения |
Метод спуска по сопряженным градиентам – это еще один алгоритм обучения, существенно более быстрый, чем обратное распространение. Другое его преимущество состоит в том, что не нужно выбирать значения параметров Скорость обучения – Learning Rate и Инерция – Momentum, и поэтому он проще в использовании.
Замечание. Одна эпоха алгоритма сопряженных градиентов занимает больше времени, чем одна эпоха алгоритма обратного распространения, но общее число эпох здесь бывает гораздо меньше, так что алгоритм является более быстрым не только по числу эпох, но и по времени счета.
Чтобы начать работу алгоритма, нажмем кнопку Обучить – Train. Программа ST Neural Networks рисует две линии: одну для обучающего множества, другую – для контрольного (рис. 18).
Сеть обучается на обучающем множестве и после каждой эпохи проверяется на контрольном множестве. Скорее всего, обе линии будут идти вниз, держась близко друг к другу, при этом к концу обучения контрольная ошибка может несколько запаздывать по сравнению с обучающей.
|
Рис. 18. График ошибки обучения |
Окончательные значения ошибок (после ста эпох) должны быть в интервале 0,05–0,2. Если у вас не получилось похожих результатов, попробуйте несколько раз заново инициализировать и прогонять сеть. Если она по-прежнему не хочет работать, проверьте параметры сети и данные.