Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Методика работы с искусственными нейронными сетями. (Из Посвящается Джироламо Марчелло) 1988

(Из Посвящается Джироламо Марчелло) 1988

Методика работы с искусственными нейронными сетями

Цель работы: оценка возможностей использования искусственных нейронных сетей в задачах оценки риска.

1 Теоретические сведения

1.1 Основные понятия искусственных нейронных сетей

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

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

Организация нейронов и их связей в определенную структуру (архитектуру) оказывает значительное влияние на вычислительные возможности ИНС. Все сети имеют некоторое количество вычислительных элементов (нейронов), принимающих сигналы из внешней среды. Такие нейроны называются входными. Многие ИНС обладают одним или несколькими слоями «скрытых» вычислительных элементов, которые принимают сигналы от других нейронов. Этот слой принимает вектор входных данных или выходы предыдущего слоя и обрабатывает их параллельно. Ряд нейронов, которые представляют окончательный результат нейросетевых вычислений, определяются как выходные. Топологии связей, которые определяют поток данных между входными, скрытыми и выходными нейронами, сводятся к двум основным группам: прямонаправленные (слоистые) и рекуррентные (полносвязные) сети.

В слоистых сетях нейроны расположены в несколько слоев (рис.1). Нейроны первого слоя получают входные сигналы, преобразуют их и передают нейронам второго слоя. Далее срабатывает второй слой и т.д. до k -го слоя, который выдает выходные сигналы для интерпретатора и пользователя. Если не оговорено противное, то каждый выходной сигнал предыдущего слоя подается на вход всех нейронов последующего. Число нейронов в каждом слое может быть любым и никак заранее не связано с количеством нейронов в других слоях. Стандартный способ подачи входных сигналов: все нейроны первого слоя получают каждый входной сигнал, поэтому чаще всего количество нейронов входного слоя определяется размерностью вектора входных данных.

Рисунок 1 - Прямонаправленная сеть

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

Рисунок 2 - Полносвязная сеть

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

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

· супервизорное обучение (СО);

· несупервизорное обучение (НСО);

· усиленное обучение (УО).

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

Наиболее распространенным является первый способ. Этот вид обучения эквивалентен программированию на примерах. При таком подходе сети задается проблема, и ИНС ищет решение по известному соотношению «вход-выход». Здесь «учитель» (тренер) указывает, каким должен быть правильный ответ. Обучающий алгоритм по разнице между правильным (требуемым) выходом и действительным выходом сети регулирует ее веса таким образом, что в следующий момент времени (на следующем проходе) выход сети будет ближе к правильному ответу. На входной слой сети подается вектор входных параметров, а на выходной - соответствующий этому вектору номер класса (в задаче классификации). Такие примеры «вход-выход» сети должны быть предъявлены десятки раз прежде, чем сеть может дать точный ответ на некоторую сложную проблему (например, отнести новый, неизвестный сети объект к одному из классов, на которые она обучена) (рис.3).

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

Рисунок 3 - Схема супервизорного обучения

Переход к многослойным нейронным сетям, способным решать задачи классификации, был затруднен из-за отсутствия обучающего алгоритма для таких сетей. Метод обучения многослойных сетей, получивший название метода обратного распространения ошибки (ОРО, в английском написании - Back Propagation Error (BPE)), был предложен в 1986 г., после чего начался интенсивный период разработки нейросетевых технологий на основе многослойных сетей в приложениях к различным сферам науки и техники. Здесь рассмотрим метод ОРО для многослойного прямонаправленного персептрона (МПП), предназначенного для решения задач, которые могут быть выражены в виде образов (пар) вход - выход. Такие соотношения можно назвать обучающими примерами.

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

- прямое распространение входного обучающего образа;

- вычисление ошибки и ее обратное распространение;

- регулирование весов.

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

Схема алгоритма ОРО показана на рис.4.

Рисунок 4 - Алгоритм метода ОРО

2 Работа на компьютере

Выполнение данной работы производится с программным пакетом Statistica Neural Networks (SNN). ИНС предназначены, в основном, для решения задач классификации и регрессии. В данной работе обучение методам работы с ИНС проводится на примере задачи классификации. Ошибочная классификация или, иначе говоря, «перепутывание» классов приводит, по существу, к оценке риска как доле неправильно распознанных объектов. Далее обучение работе с пакетом выполняется как последовательность следующих шагов:

1.В состав пакета SNN входит файл данных Iris.sta, относящийся к классической задаче классификации ирисов, предложенной еще в 1936г. известным английским статистиком Р.Фишером. Этот пример во многих программных продуктах считается как своего рода испытательный полигон.

Рассматриваются три сорта цветов ириса: Setosa, Versicolor, Virginica. Всего имеется по 50 экземпляров каждого вида, и каждый из них характеризуется четырьмя величинами: длиной и шириной чашелистика, длиной и шириной лепестка.

Цель работы заключается в том, чтобы обученная ИНС предсказывала тип нового, предъявленного сети цветка по набору измерений из четырех признаков.

Открыть файл Iris.sta через опцию File - Open (Файл – Открыть). На экране появится таблица данных, состоящая из 150 строк и 5 столбцов. В случае, если числа первого столбца указаны серым цветом («не учитываемые»), то при помощи правой клавиши мыши выделить этот столбец и отмаркировать его как Input (Входной). Таким образом, файл содержит 4 входных переменных, подтверждением чему служит цифра «4» в поле «Variables», и одну выходную номинальную переменную, имеющую три значения: Setosa, Versicolor, Virginica, которая определяет тип цветка. На рис.5 показана часть таблицы исходных данных.

Кроме того, разделим выборку данных из 150 цветков на два множества: обучающее, состоящее из 80 цветков (показаны в таблице черным цветом), и контрольное из 70 экземпляров (показаны красным цветом). По первому множеству сеть обучается, второе - используется при контрольных проверках. Эти цифры приведены в окнах в верхней части таблицы. Как видно из таблицы, эти два множества перемешаны случайным образом. При необходимости данные могут еще раз перемешаны путем выбора опции Edit - Cases – Shuffle - All (Редактор – Строки - Перемешать - Все).

Рисунок 5 - Часть таблицы исходных данных

Тип переменной обозначается цветом, которым высвечивается ее имя в заголовке столбца таблицы:

· Входная - черный;

· Выходная - синий;

· Входная / выходная - зеленый;

· Неучитываемая - серый.

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

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

Через меню File – New - Network (Файл – Новый – Сеть) вызовем диалоговое окно Create Network (Создать сеть). Далее необходимо выбрать тип сети из выпадающего списка Type (Тип). По умолчанию всегда предлагается нужный нам тип сети Multilayer Perceptron (рис.6).

Рисунок 6 - Диалоговое окно создания сети

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

Диалоговое окно Create Network (Создать сеть) содержит две таблицы: левая предназначена для пре / постпроцессирования, а правая - для задания параметров сети. После нажатия кнопки Advise (Совет) можно быть уверенным в том, что пре / постпроцессирование произведено в полном соответствии с типом данных, а число слоев в сети и элементов в каждом слое выбрано разумным образом. Обычно от пользователя требуется только:

· Изменить (если требуется) преобразующую функцию для пре / постпроцессирования. Здесь вполне подойдет функция Minimax (Минимакс).

· Задать число слоев и скрытых элементов в сети. В пакете SNN на экран также выдается число элементов во входном и выходном слоях, однако два последних параметра полностью определяются числом входных и выходных переменных, поэтому их нельзя менять (высвечиваются серым цветом).

Примем число слоев персептрона, равным 3, а количество элементов в скрытом слое - 6. После этого нажмем кнопку Create (Создать), и на экране появится созданная нами сеть (рис.7).

Рисунок 7 - Сеть в виде трехслойного персептрона

Входной слой сети содержит 4 элемента, так как каждый цветок характеризуется четырьмя признаками; выходной слой сети имеет 3 элемента, объединенных в один (скобкой), поскольку от сети требуется расклассифицировать предъявляемый цветок (даже не участвовавший в обучении) к одному из трех типов ирисов.

3. Следующим шагом после создания сети является ее обучение. В пакете SNN реализованы основные алгоритмы обучения многослойных персептронов: методы обратного распространения ошибки (ОРО), сопряженных градиентов и Левенберга – Маркара. Здесь применим метод ОРО, суть которого состоит в следующем:

· Алгоритм ОРО последовательно обучает сеть на данных из обучающего множества. На каждой итерации (эпохе) все наблюдения из обучающего множества по очереди подаются на вход сети. Сеть обрабатывает их и выдает выходные значения.

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

· Алгоритм ОРО должен находить компромисс между различными наблюдениями и изменять веса таким образом, чтобы уменьшить суммарную ошибку на всем обучающем множестве.

Далее через пункт меню Train - Multilayer Perceptron – Back Propagation (Обучение – Многослойный персептрон – Обратное распространение) открыть диалоговое окно Back Propagation (Обратное распространение), которое представлено на рис.8.

Рисунок 8 - Диалоговое окно обратного распространения

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

Через пункт меню Statistics – Training Graph … (Статистики – График обучения) открыть окно Training Error Graph (График ошибки обучения). Этого же можно достичь, нажав специальную кнопку (восьмую справа в верхнем ряду).

Передвинуть последние два окна так, чтобы они не пересекались и были удобно расположены. Нажать кнопку Train (Обучить) в диалоговом окне Back Propagation (Обратное распространение). При этом будет запущен алгоритм обучения, а на графике появится зависимость ошибки от числа эпох (рис.9).

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

Кратко опишем наиболее важные параметры диалогового окна Back Propagation (Обратное распространение):

· Epochs (Эпохи). Задает число эпох обучения, которые проходятся при одном нажатии кнопки Train (Обучить). На каждой эпохе через сеть пропускается все обучающее множество, и на основании этих данных производится коррекция весов сети.

· Learning Rate (Скорость обучения). При увеличении скорости обучения алгоритм работает быстрее, но в некоторых случаях это может привести к неустойчивости.

· Momentum (Инерция). Этот параметр ускоряет обучение в ситуациях, когда ошибка мало меняется, а также придает алгоритму дополнительную устойчивость. Значение этого параметра должно лежать в диапазоне (0 …1). В данной задаче выбрать его значение ближе к 1 (положим 0,9).

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

· Cross Verification (Кросс- проверка). При отмеченной позиции качество выдаваемого сетью результата проверяется на каждой эпохе по контрольному множеству (если такое задано). При выключенной опции контрольные наблюдения игнорируются, даже если в файле данных они присутствуют.

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

Через меню Train - Auxiliary - Stopping Conditions (Обучение - Дополнительные – Условия остановки) вызывается диалоговое окно условий остановки, показанное на рис.10. По умолчанию таким условием является число эпох, которое также задано в диалоговых окнах всех обучающих алгоритмов.

Рисунок 10 - Окно условий остановки

5.После того, как сеть обучена, ее можно запустить на исполнение, т.е. на решение задачи классификации. В данном пакете это можно сделать несколькими вариантами:

· На текущем наборе данных - целиком на всем наборе или на отдельных наблюдениях.

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

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

При запуске сети на текущем наборе данных возможно обрабатывать отдельные наблюдения или все множество целиком.

Для обработки отдельных наблюдений необходимо через меню Run – Single Case (Запуск – Одно наблюдение) перейти к диалоговому окну Run Single Case (Прогнать одно наблюдение). В поле Case No (Номер наблюдения) задается номер наблюдения, подлежащего обработке. Для обработки текущего наблюдения нажать кнопку запуска. Значения входных переменных отображаются в таблице, расположенной в верхней части окна; выходные значения - в таблице в нижней части (рис.11).

Рисунок 11 - Диалоговое окно одного наблюдения

Для тестирования сети на всем наборе данных служит окно Run Data Set (Прогнать набор данных), доступ к которому осуществляется через меню Run – Data Set (Запуск - Набор данных). В таблице окна содержатся следующие данные: фактические выходы сети, целевые выходные значения, ошибка, суммарная ошибка (рис.12).

Рисунок 12 - Тестирование сети на всем наборе данных

Тестирование заданных пользователем наблюдений осуществляется из окна Run One-off Case (Прогнать отдельное наблюдение), доступ к которому осуществляется через меню Run – One-off (Запуск – Отдельное). Входные значения вводятся в таблицу входных значений, расположенную в верхней части окна; результаты - в таблицу выходных значений в нижней части окна (рис.13).

Рисунок 13 - Тестирование новых наблюдений

6. Оценим статистики классификации. При прогоне всего набора данных программа подсчитывает следующие статистики, характеризующие качество классификации сети:

· Число наблюдений, расклассифицированных правильно, неправильно и не расклассифицированных.

· Для каждого класса - число наблюдений, принадлежащих на самом деле к нему, но при классификации отнесенных к другому классу.

Диалоговое окно итоговых статистик, приведенное на рис.14, открывается через меню Statistics - Classification (Статистики – Классификация).

Рисунок 14 - Окно статистик классификации

7. В состав пакета входит Intelligent Problem Solver (Интеллектуальный решатель задачи ), который вызывается третьей кнопкой слева и проводит пользователя через все этапы построения сети:

· Выбрать обычную или расширенную версию (обычную).

· Определить тип решаемой задачи (стандартная или временной ряд) (стандартная).

· Выбрать зависимую выходную переменную (цветок).

· Выбрать независимые входные переменные (признаки цветка).

· Определить продолжительность процедуры поиска (средняя, 2 минуты).

· Установить количество сохраняемых сетей (10, остальные опции оставить по умолчанию).

· Выбрать формы представления результатов (указать все).

Спустя 2 минуты появятся итоговые результаты, которые надо сравнить с результатами, полученными ранее.


Дата публикования: 2014-12-08; Прочитано: 294 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.016 с)...