Главная > Искусственные нейронные сети. Теория и практика
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

Глава 5. ПРОГРАММЫ МОДЕЛИРОВАНИЯ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ

Помня золотое методическое правило «от простого - к сложному», рассмотрение нейропакетов начнем с простых и доступных для пользователя

5.1. Нейропакет Neural10

5.1.1. Общая характеристика

Бесплатная версия пакета доступна через сеть Интернет по адресу http:/www.simtel net/simtel net/win3/neural-pre.html. Разработан пакет в 1992 г. (в Southern Scientific СС, South Africa) под Windows Основной исполняемый файл - Slug.exe.

Пакет реализует одну нейросетееую парадигму - двухслойную сеть прямого распространения с одним алгоритмом обучения (обратного распространения ошибки) Активационная функция нейронов скрытого слоя - сигмоид, выходных нейронов - линейная

5.1.2. Создание, обучение и работа нейронной сети

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

Процедура работы с пакетом такова.

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

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

Выборка сохраняется в виде текстового файла (с рекомендуемым расширением dat), например, xor dat

2) Подготавливается пустой текстовый файл протокола (с расширением по умолчанию log), например,

3) Запускается программа Slug.exe, после чего на экране появляется контрольная панель программы (рис. 5.1), а также меню с опциями File, Parameters, Data, Train, Run

Рис. 5.1 Контрольная панель программы Slug exe

Для создания нейронной сети выбирается опция меню File. В выпадающем подменю (содержащем опции New, Open, Save, Save as) выбирается пункт New (Новая), после чего появляется окно конструирования сети (рис. 5.2), где необходимо указать

• число входных нейронов (Number of neurons in input layer), равное числу входных переменных, в нашем примере - 2,

• число нейронов в выходном слое (Number of neurons in output layer), равное числу выходных переменных - 1,

• число нейронов в скрытом слое (Number of neurons in hidden layer), выбираемое в соответствии с рекомендациями, приведенными в гл 1 (формулы (1.5)-(1.8))-2

Рис. 5.2 Окно конструирования конфигурации нейронной сети

Задав данные значения подтверждаем это нажатием кнопки ОК, после чего опять появится вид контрольной панели рис 5 1

4) Теперь необходимо открыть подготовленные файлы с обучающей выборкой и протоколом Сделать это можно или с помощью опций меню Data, Input File (для файла обучающей выборки) и Data, Output File (для файла протокола), или с помощью кнопок панели Data File, Open и Log File, Open И в том, и в другом случае будет появляться окно вида рис. 5.3 с файлами данных с расширениями dat и с файлами протокола с расширениями log

Рис. 5.3 Окно загрузки файла данных

Откроем подготовленные файлы xor dat и xor.log

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

Рис. 5.4 Окно установки параметров процесса обучения нейронной сети

Параметры процесса обучения следующие коэффициент скорости обучения Learning Rate, импульс (Momentum), максимально допустимая ошибка (Maximum Error), максимальное число итераций в процессе обучения (об этих параметрах более подробно - в разд 1 4 и в прил 3) На рис 5 4 показаны значения данных параметров, устанавливаемые по умолчанию (параметр Kmod в программе не используется) Если нет каких-либо личных соображений, можно согласиться со значениями и подтвердить это нажатием кнопки ОК Окно при этом закроется, а панель приобретет вид рис 5 5

6) При нажатии кнопки Train можно наблюдать процесс обучения изменяются цифры в окошках Data Count (общее количество итераций) и в Current Error (текущая ошибка) Количество итераций, естественно, все время увеличивается, а текущая ошибка должна изменяться в сторону уменьшения Обучение заканчивается, если текущая ошибка становится меньше заданной или, если общее количество итераций достигает заданного максимального числа (процесс обучения можно принудительно приостановить нажатием кнопки Pause, а затем возобновить нажатием появляющейся кнопки Resume или вообще прекратить нажатием кнопки Stop)

Рис. 5.5. Контрольная панель после подготовки к процессу обучения

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

Вариантов действий здесь четыре:

• изменить (увеличить, если возможно) объем обучающей выборки;

• изменить структуру сети (увеличить число скрытых нейронов);

• изменить параметры процесса обучения;

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

Но в нашем случае все будет удачно, процесс обучения закончится с итоговыми цифрами, например,

В нижней части контрольной панели при этом появится надпись «Trained!» (обучена).

7) Теперь с помощью кнопки Save net или опций меню File, Save или File, Save as можно сохранить обученную сеть под каким-либо именем с расширением .апп, например, как хог.апп, и с

помощью соответствующих кнопок Close (рис. 5.5) закрыть файлы обучающей выборки и протокола.

Файл протокола содержит достаточно интересную информацию. Откроем его, например, с помощью текстового редактора. Для рассматриваемого примера содержимое файла xor.log примет следующий вид:

Вначале повторяется обучающая выборка (Ю MATRIX), затем требуемые (целевые) значения выхода этой выборки (DESIRED MATRIX), затем - значения входов в обучающей выборке (INPUT MATRIX), далее - набор данных, характеризующих изменение ошибки сети в процессе ее обучения (например, запись вида означает номер итерации процесса обучения и соответствующую ошибку нейронной сети), рассчитанные значения выхода сети по наборам входных данных (Network response) и, наконец, приводится итоговая матрица весов сети (Final Weights). Каждая строка данной матрицы (кроме нижней) соответствует одному из нейронов: первая строка - первому (входному) нейрону, вторая - второму входному нейрону, третья - первому нейрону скрытого слоя, четвертая - второму нейрону того же слоя, пятая - единственному выходному нейрону и шестая (последняя) - смещениям. Первый столбец матрицы соответствует первому из отмеченных нейронов, второй - второму и т. п. Элементы матрицы (кроме нижней строки) являются весами связей между нейронами. Так, в рассматриваемом примере видно, что первый входной нейрон соединен с третьим и четвертым (т. е. со

всеми нейронами скрытого слоя) с весами, соответственно, третий нейрон соединен с выходным с весом -2,9008 и По данным весам можно судить о значимости отдельных входов и связей и попытаться оптимизировать структуру сети, о чем подробнее будет рассказано ниже

8) Использовать обученную сеть достаточно просто Подготовим два текстовых файла первый, содержащий только наборы интересующих нас значений входов, для которых с помощью обученной сети требуется дать оценку выхода или выходов (с расширением dat), другой - пустой (с расширением log) для сохранения ответа сети, например, файл xortest dat, с данными

и файл xortest log

Запустим программу Slug ехе, откроем файл сохраненной и обученной сети (хог апп) и оба подготовленных файла После нажатия кнопки Run контрольная панель примет вид рис. 5.6


Рис. 5.6 (см. скан) Контрольная панель программы Slug ехе после опроса обученной сети

Что изменилось? В окошке Data Count появилась цифра 4 -по числу предъявленных входных наборов в файле xortest dat, а также надпись Run Complete (выполнение завершено) Теперь необходимо закрыть оба файла и ознакомиться с результатами работы сети, сохраненными в файле xortest log

Желаемый ответ содержится в третьем столбце нижней матрицы Комментарии, по-видимому, излишни

Завершая описание работы с программой укажем на возможность «дозаписи» информации в уже имеющийся (и заполненный) log-файл - с помощью кнопки Append Это требуется в случае, когда имеется несколько файлов с данными, но желательно использовать один и тот же файл протокола

Что можно отметить в заключение? Нейропакет крайне прост, но, тем не менее, позволяет решать достаточно сложные задачи с использованием нейросетевого подхода

<< Предыдущий параграф Следующий параграф >>
Оглавление