Боровиков В.П. - Нейронные сети (778916), страница 29
Текст из файла (страница 29)
КПАССИЧЕСКИЙ ПРИМЕР: ИРИСЫ ФИШЕРА В состав программы входит файл данных 1пял!а, относящийся к задаче Фишера о классификации ирисов. Применение классичсских методов для решения этой задачи подробно описано в книге В.П.Боровикова «Популярное введение в программу ШТАТ!БТ1СА> (М.: «Компьютер-Пресс», 1998). Рассматривается три вида цвстков ириса: 5егоха, Р'егк!со!ог и Р7г8апса. Всего имеется по 50 экземпляров каждого вида и для каждого из них измерены четыре величины: длина и ширина чашелистика, длина и ширина лепестка. Цель состоит в том, чтобы научиться предсказывать тип нового (пока нс известного) цветка по данным этих измерений.
Эта задача интересна сразу по нсскольким причинам. Во-первых, один нз классов (Юе!ока) линейно отделим от двух других. Оставшиеся два раздс- 138 Гпаеа Б. Папьнейшсе аозможносто нейроннык сетей пить гораздо труднее, кроме того, имеется несколько экземпляров, выбиваюдихся из общей картины, которые легко отнести к другому классу. Такие яыбросы являются хорошей проверкой надежности работы сети на сложных данных.
Предсптавпение нескопьких кпассов Загрузите файл 1гп.в!а в пакет БТ %виги! й1е!и ог!св и взгляните на данные. Здссь имеются четыре входных перемснных и одна выходная. Выходная пе- ременная — номинальная с тремя возможными значениями: 1гЬ = 1Бе!ози, 'гегв!со1, Игй!тнс), Формирование уменьшенноео набора данных Данные про ирисы содержат 150 наблюдений — это довольно много, и сеть будет обучаться медленно. Для учебных целей лучше сократить объем данных до 60 наблюдений.
При этом мы заодно познакомимся с некоторыми возможностями Редиктори динных — Риги Бе! Еаиог Кроме того, разобьем данные на две группы: обучающее множество (Тгинипя Бе!) будет использоваться для обучения сети, а контрольное множество (гегфси!!оп Бе!) — для проверки качества ее работы. Чтобы сформировать сокращенный набор данных, сделайте следующее: 1. Откройте набор данных 1гЬс!айвга. 2. Выделите наблюдения 21 — 50, для этого прокрутите таблицу так, чтобы стало видно наблюдение номер 20, щелкните на метке его строки н либо протащите мышь до нижней границы диапазона, либо выделите его с клавиатуры клавишами 1) и Рияе Рожи при нажатой клавише Б!и!т.
3. Переместите указатель на столбец с именами наблюдений, нажмите правую кнопку мыши и выберите из контекстного меню пункт Условия выбора -+ Исключить выбринпые ниблюденил. Все, кроме выбранных, наблюдения будут выделены курсивом, и программа БТ Феига1 №прог!гз нс станет их использовать. 4. Проделайте все то же самое для наблюдений 71 — 100 и 121 — 150 . 5. Запустите модуль Нейропные сети и выберите тип задачи: Классификиция. Задайте переменные.
Нспрсрывныс входные: Берийеп, Бери!нЫ, Ре!а!1еп, Реги1вЫ!и. Капториальная выходная: 1гЬ~уре. В качестве инструмента указываем Мистер Реигений. Далее нажимаем ОК и переходим на окно Мистери Решений. То жс можно проделать с помощью кнопки Выбора «ибльойе«ий а стяртояом окно модуля Нкй1«я««кк сеоюй. 139 Нейронные сети. ЯТАТШТ!СА Неига! НеГггогне б.
Нажмите кнопку Выборки. Измените число наблюдений в обучающем множестве (оно указано в поле Обучагошее) с 60 на 30. Объем контрольной выборки установите равным 30. 7. В диалоге Выбор наблюдений для Мастера Решений (или Конструктора сетей) указываем Повторный выбор, далее на вкладке Случайный выбираем Случайно. ОБУЧЕНИЕ С КРОСС-ПРОВЕРКОЙ Обсуж9енне Мы разделили данные на две части: обучающее и контрольное подмножества.
Стандартный способ обучения нейронных сетей заключается в том, что сеть обучается на одном из множеств, а на другом проверяется результат. Таким образом, контрольное множество для обучения не используется. Это дает независимый способ проверки того, научилась ли сеть чему-нибудь полезному. В отсутствие кросс-проверки сеть с большим числом весов и не слишком большим набором обучающих данных, скорее всего, будет слишком близко следовать обучающим данным («чрезмерная подгонка») и воспринимать не столько структуру данных, сколько содержащиеся в них помехи, Способность сети не только учиться на обучающих данных, но и показывать хорошие результаты на совершенно новых данных (т.е.
таких, которые сеть до того нс видела), называется обобщением. Хорошо ли сеть обобщает, в пакете БТ 111еига1 №гиогкв можно определить, следя за контрольной ошибкой — она должна быть достаточно мала. Может случиться так, что после нескольких прогонов обучающего алгоритма ошибка обучения падает почти до нуля, в то время как контрольная ошибка сначала убывает, а потом снова на.- чинает расти.
Это верный признак переобучения, и при росте контрольной ошибки обучение следует прервать. Если контрольное множество используется описанным способом, то, строго говоря, по окончании обучения следует проверить работу сети еще на одном — третьем множестве, которое вообще никак не участвовало в обучении и даже в контролировании результатов. Поскольку наилучшая сеть определяется по контрольному множеству, может получиться так, что выбранная сеть совершенно случайно дает на нем хорошие результаты.
Чтобы избежать такой ситуации, нужно какое-то количество наблюдений оставить для тестового множества. Оно будет использоваться только после того, как будст сформирован окончательный вариант ости. Если данных не слишком много и все их желательно использовать для обучения и контроля, то с этим этапом воз- 140 Гпава б. Папьнебаое воаыожноспа небронных сетеб пихают трудности. Многие пользователи нейронных сетей вообще не заботятся о тестовых множествах.
В пакете БТ №ига! №!н огсз автоматически учитывается разбиение данных на обучающее, контрольное и тестовое множества. Обучение проводится на обучающем множестве, контроль обучения — на контрольном множестве. Ошибки выводятся для каждого множества в отдельности. Кроме того, как мы уже убедились, есть возможность не учитывать некоторые наблюдения. Это бывает полезно в тех случаях, когда данных слишком много или когда есть подозрение, что некоторыеданные искажены.
Обучение с кросс-проверкой Давайте для нашей задачи про ирисы построим многослойный персептрон с тремя слоями, оставим значения параметров пре- и постпроцессироваиия по умолчанию и зададим число элементов в промежуточном слое равным шести. Поскольку выходная переменная — номинальная с тремя состояниями, программа БТ №ига! Фе!ног!сз автоматически выберет способ кодирования 1-из-Ф, и сеть будет иметь три выходных элемента. Каждое из трех возможных номинальных значений выражается высоким выходом одного из этих элементов и низким — двух оставшихся (например„типу Бегоаа может соответствовать выходной набор (0,97; 0,02; О,ОЦ). Как и в случае номинальной переменной с двумя состояниями, точная интерпретация зависит от значений порогов принятия (Ассер!) и отвержения фе!ек!).
Конкретнее, если наибольшее из выходных значсний превышает порог принятия, а остальные два — ниже порога отвержения, то номинальной переменной присваивается значение. В противном случае выход считается «неясным» (в таблице с предсказанными значениями ему соответствует пропущенное данное). Рис. 6.1 141 Неоронные сеи>ч.
ЯТАТ!ЗТ!СА Нео>в! Йе>иожв После того, как сеть построена, на ее графическом изображении в окне Архи>пектура сети видно, что три выходных элемента объединены скобками в одну выходную переменную. В Конструкторе сетей в окне обучения Многослойного персептрона перейдем на вкладку Быстрый. На первом этапе обучения выбираем метод Спуск по сопряженным градиентам (рис. б.1). Метод спуска по сопряженным градиентам — это еще один алгоритм обучения, существенно более быстрый, чем обратное распространение (В1яЬор, 1995). Другое его преимущество состоит в том, что не нужно выбирать значения параметров Скорость обучения — Ееагп>пя Яаге и Инерция — Мотеил>т, поэтому он проще в использовании. Замечание 1.
Одна эпоха алгори>има соирлже>тых градиентов занимаеп> больше времени, чем одна мохи алгорип>ма абра>иного распространения, но общее число эпох здесь бывает гораздо меньше, >пак что алгори>им являеи>ся более быси>рым не только по числу эпох, но и ио времени счеп>а. Чтобы начать работу алгоритма, нажмем кнопку ОК. Программа ЮТ №ига1 №1>югкз рисует две линии: одну для обучающего множества, другую — для контрольного. Сеть обучается на обучающем множестве и после каждой эпохи проверяется на контрольном множестве. Скорее всего, обе линии будут идти вниз, держась близко друг к другу, при этом к концу обучения контрольная ошибка может несколько запаздывать по сравнению с обучающей.
Окончательные значения ошибок (после ста эпох) должны быть в интервале 0,05-0,20. Если похожих рсзультатов не получилось, то попробуйте несколько раз заново инициализировать и прогонять сеть. Если она по-прежнему не будет работать, провсрьтс параметры сети и данные. Зимечт>ие 2. Если обучать сеть не мепюдом сопряженных градиешиов, а обраитыл расироси>ранениел>, используя при эп>ом контрольное .чиожеси>во, и>о можно замеитть, что >ш начальных эпохах «онтрольная ошибка буден> несколько меньше ошибки обучения — это моз>сет показаться странным, Причина закчючается в том, что ошибка на обучающем множестве накапливается по мере обработки каждого наблюдения, в то время как ошибка на контрольном множестве вычисляется в концс каждой эпохи.
Тем самым контрольная ошибка будет примерно на половину эпохи опережать обучающую. Если вы протсстирусте сеть послс того, как обучение будет закончено, то обнаружите, что ошибка обучения немного уменьшится по сравнению со своим последним значением, а контрольная ошибка не изменится. Качество классификации, выполненной сетью, можно оценить по информации, которая содержится в окне Статистики классификации (рис. 6.2). 142 Гпввв 6. Папьнеашое возыожнооп~о неоронвых седея Рвс.
6.2 Если оба пороговых значения Принять и Отвергнуть выбрать равными 0,5, то все или почти все наблюдения — как в обучающем, так и в контрольном множествах — будут расклассифицированы правильно. В пакете БТ №ига! Уегвог!гз статистики для обучающего и контрольного множеств выводятся раздельно. Огпкпюченне кросс-проверки Проверка сети на контрольном множестве на каждой эпохе занимает много времени и не всегда необходима.
Ее можно отключить, убрав пометку в поле Кросс-проверка (поставить отметку, например, около Создать проспвую сеть) в окне алгоритма обучения. В этом случае программа БТ №ига! !фелюг!сз будет просто обучать сеть на обучающем множестве, полностью игнорируя контрольное множество. Однако можно будет вычислить окончательную контрольную ошибку. УСПОВИЯ ОСТАНОВКИ До сих пор мы всякий раз обучали сеть в течение заранее заданного числа эпох (100).















