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

5.3. Нейропакет QwikNet32

Нейропакет QwikNet32 разработан С Jensen (9935 NE 125th Ln #4, Kirkland, WA 98034, e-mail cjensen@kagi com), trial-версия (версия для ознакомления с ограниченным сроком использования) пакета доступна в Интернет по адресу http //www simtel net/simtel net/win95/neural-pre html

5.3.1. Общая характеристика и интерфейс

Нейропакет QwikNet32 (версия 2 1) предназначен для работы в среде Windows и особых требований к вычислительным ресурсам не предъявляет В QwikNet реализуется лишь один тип нейронной сети - многослойная сеть прямого распространения с числом скрытых слоев до 5 и с набором из 6 алгоритмов обучения (модификации алгоритма обратного распространения ошибки) Вид контрольной панели программы после ее запуска приведен на рис 5 27

В верхней ее части расположено меню, включающее следующие пункты

File (Файл) с подпунктами New Network (Новая сеть), Open Network (Открыть сеть), Save Network (Сохранить сеть), Save Network as ... (Сохранить сеть как ) - сохранение структуры сети но не ее весов, Write network as С code (Записать сеть в кодах языка С), Exit (Выход)

Рис. 5.27 (см. скан) Контрольная панель нейропакета QwikNet

View (Вид) с подпунктами

Network (Сеть) - графическое изображение созданной сети;

• Training Error Plot (График ошибки обучения) - график, показывающий изменение общей ошибки нейронной сети в процессе обучения,

• Contour Plot (Контурный график) - трехмерный график, отображающий выход сети в зависимости от двух выбранных входов -для нормированных значений,

• Network Analysis Plot (График анализа сети) - гистограмма, показывающая уровни средних ошибок по каждому образцу обучающей или тестовой последовательности,

• Training History (История обучения) - протокол обучения сети - текстовая информация

Scale (Масштабирование) имеет единственную опцию Scale Data File (Масштабировать файл данных) - используется для масштабирования данных (см ниже)

Settings (Установочные параметры) также имеет только одну опцию Advanced Settings (Расширенные установочные параметры), позволяющую задать параметры процесса обучения.

Help (Справка) с подпунктами. Help (Справка); Registration Info (Информация о регистрации программы); Register QwikNet (Регистрация QwikNet) - для регистрации легальной копии нейропакета; About (О программе) - информация о программе и вычислительных ресурсах компьютера.

Ряд подпунктов меню дублируется кнопками в левой верхней части контрольной панели

Правее от отмеченных расположены еще две кнопки - Train Network (Запуск обучения) и Stop Training Network (Принудительное прекращение обучения). Эти кнопки продублированы в правой нижней части панели (кнопки Train и Stop). Справа от них расположена кнопка Test (Запуск тестирования сети)

Назначение других кнопок:

• Training Data и Testing Data позволяют подключать к программе (загружать) файлы с обучающей и тестовой последовательностями данных,

• Load Weights и Save Weights позволяют загрузить и сохранить в текстовом файле (например, для последующего анализа) веса и смещения обученной сети;

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

• Perturb позволяет случайным образом варьировать веса сети в процессе ее обучения и, тем самым, избегать останова процесса в точках локального, а не глобального минимума ошибки.

Диалоговые мини-окна контрольной панели (рис. 5.27) позволяют задать структуру нейронной сети, выбрать алгоритм и параметры ее обучения.

В окне Number of Hidden Layers (Число скрытых слоев) задается число скрытых слоев (до пяти) сети. В правой части контрольной панели - Network Topology (Топология сети) - для каждого скрытого слоя отдельно указывается число нейронов в нем (окна Hidden 1 - Hidden 5/ Neurons) и вид функции активации (окна Hidden 1 - Hidden 5/ Activation Function). В нейропакете реализован следующий набор функций активации:

• sigmoid (сигмоидная),

• tanh (гиперболический тангенс),

• linear (линейная),

• Gaussian (функция Гаусса).

В центральной части панели диалоговое окно Training Algorithm (Алгоритм обучения) позволяет выбрать один из шести алгоритмов обучения нейронной сети:

(см. скан)

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

Группа диалоговых окон в левой части панели Training Properties (Опции обучения) позволяют установить следующие параметры алгоритма обучения:

• Learning Rate - коэффициент скорости обучения (темп обучения), который определяет скорость изменений величин весов и смещений сети в процессе ее обучения, обычно при использовании алгоритма обратного распространения ошибки. Чем больше темп обучения, тем быстрее обучается сеть. Допустимые значения параметра - от 0,0 до 1,0; хорошим начальным приближением считается величина 0,1. Если данный параметр велик, процесс обучения может потерять устойчивость.

• Momentum - коэффициент импульса - константа, используемая в методе импульса (по умолчанию - 0)

• Convergence Tol. (convergence tolerance) - это максимально допустимая величина ошибки во время обучения. Если то выходной результат (output), выдаваемый нейронной сетью, должен абсолютно точно совпадать с образцом для обучения (pattern). В большинстве случаев это нереально При значение выхода output будет рассматриваться как корректное, если оно отличается не более чем на 10% (в среднем квадратическом смысле) от заданного значения (pattern). Процесс обучения будет продолжаться до тех пор, пока значение ошибки не снизится до установленного параметром tolerance предела (по умолчанию - 0,01).

• Maximum # Epoch (maximum number of epochs) - максимальное число периодов, которые нужно использовать для

обучения (по умолчанию 10000). Один период эквивалентен одному полному представлению всех образцов обучающей выборки.

• Error Margin - граница ошибки (по умолчанию - 0,01). Выходы сети, для которых ошибка меньше данной величины будут считаться «обученными», корректными.

• Pattern Clipping - «отсечение» образцов - определяет степень участия «обученных» образцов в последующем обучении сети. Образец считается «обученным», когда связанная с ним ошибка сети менее заданной в опции Error Margin. Значение параметра от 0,0 до 1,0. По умолчанию - 1.

• Cross-Validate Training (обучение с перекрестным пересечением) - когда эта опция установлена, обучающий набор данных автоматически делится на два набора: 90 % - для обучения и 10% - для тестирования. Набор для тестирования используется для проверки качества обучения сети.

Два последних мини-окна в рассматриваемой части контрольной панели Input Noise (Входной шум) и Weight Decay (Разрушение веса) используются для задания параметров, в ряде случаев улучшающих свойства обученной сети (свойства обобщения); задание первого ненулевого параметра обеспечивает добавление гауссовского шума небольшой интенсивности к данным обучающей выборки, задание второго ограничивает большие весовые коэффициенты.

Диалоговые окна в части контрольной панели Weights (Веса) относятся к ранее описанным кнопкам Randomize и Perturb и позволяют задавать;

• диапазон случайных вариаций начальных значений весов сети в процентах от некоторой автоматически определяемой программой величины, связанной с количеством входов нейрона (по умолчанию -100%);

• диапазон вариации весов сети при повторном обучении.

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

Окно Threshold (Порог) определяет минимальный процент примеров за эпоху (по умолчанию - 80%), которые должны насытить нейрон. Нейрон считается насыщенным, когда данный

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

Окно Prevent Saturation позволяет установить или убрать режим автоматического предотвращения насыщения нейронов.

Сообщения в правой нижней части контрольной панели Training Stats (Статистика обучения) и Testing Stats (Статистика тестирования) отображают информацию во время работы программы в соответствующих режимах.

Заметим, что по всем элементам интерфейса и режимам работы нейропакета имеются достаточно информативные и удобно организованные разделы справки на английском языке.

5.3.2. Правила работы с нейропакетом

Работу с нейропакетом рассмотрим на примере все той же задачи моделирования логической функции «Исключающее ИЛИ».

1) Подготовка исходных данных. Исходные данные готовятся в формате табл. 4.1 и сохраняются в виде текстового файла (разделители - пробелы или табуляции). Файл для обучения нейронной сети имеет расширение ргп и следующее содержание:

Несколько первых строк, начинающихся звездочкой, отводятся под комментарии; далее находится строка, указывающее число входов - [INPUTS] 2, затем - строка, указывающее число выходов - [OUTPUTS] 1. Вообще-то эти параметры можно и не указывать, они все равно будут запрошены программой.

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

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

• для всех входов от 0 до 1 или от -1 до +1,

• для выходов - в случае сигмоидальной или гауссовой функций активации - от 0,1 до 0,9, а в случае гиперболического тангенса - от -0,9 до 0,9

Нейропакет имеет опцию, позволяющую проводить соответствующее масштабирование и обратное преобразование к естественным, исходным значениям

Подготовим текстовый файл, содержащий только таблицу, без комментариев и указания количества входов

и сохраним его под именем хог raw

Запустим нейропакет Выберем в меню (рис 5 27) пункт Scale/ Scale Data File При этом появится окно диалога (рис 5 28)

Рис. 5.28 Диалоговое окно при выполнении масштабирования данных

Полагая, что в дальнейшем будем строить сеть с сигмоидальными активационными функциями, оставим предлагаемые по умолчанию установки масштабирования и нажмем кнопку Input File (Входной файл) В последующем диалоге укажем файл xor raw После этого появится окно, требующее указать число входов и выходов в таблице обучающей выборки (рис. 5.29)

Рис. 5.29 Диалоговое окно задания числа входов и выходов

Введем 2 в строку Number of Inputs (Число входов) и 1 в строку Number of Outputs (Число выходов) Подтвердим ввод нажатием кнопки ОК, после чего вернемся к окну рис. 5.28

Нажмем кнопку Output File (Выходной файл) и в ответ на подсказку введем имя файла xor trn Нажмем далее кнопку Scale File (Файл масштаба) и в ответ на подсказку введем имя хог Данный файл будет сохранен с расширением по умолчанию scl

Выполним операцию масштабирования Scale и по нажатию кнопки Exit (Выход) вернемся к контрольной панели на рис. 5.27 Созданный файл хог trn с обучающей выборкой будет иметь структуру, со строками [INPUTS] 2, [OUTPUTS] 1 и с диапазонами изменений входов и выходов согласно отмеченным рекомендациям

2) Задание структуры сети и параметров обучения Используя кнопки и диалоговые мини-окна контрольной панели, зададим следующую структуру нейронной сети

• количество скрытых слоев (Number of Hidden Layers) - 1

• число нейронов в скрытом слое (Hidden 1/Neurons) - 2

• функции активации нейронов скрытого слоя (Hidden 1/ Activation Function) - сигмоидные (Sigmoid),

• функция активации выходного нейрона Output/Activation Function) - сигмоидная (Sigmoid)

Сохраним остальные параметры процесса обучения по умолчанию как на рис 5 27, убрав лишь флажок в окне Cross-Validate Training (Обучение с перекрестным пересечением) Далее нажатием кнопок Training Data и Testing Data выберем и в качестве обучающего и в качестве тестирующего один и тот же файл - хог trn

3) Обучение нейронной сети Используя кнопку с треугольным значком Train Network (Обучение сети) в верхней части контрольной панели или кнопку Train (Обучение) в ее правой нижней части, запустим процесс обучения Данный процесс будет сопровождаться изменением цифр в разделах панели Training Stats (Статистика обучения) и Testing Stats (Статистика тестирования) По истечении процесса обучения панель программы примет вид, соответствующий рис. 5.30


Рис. 5.30 (см. скан) Контрольная панель по завершении процесса обучения нейронной сети

Судя по результату, обучение прошло успешно (правильно оценены все 4 образца, т. е. 100% образцов, количество периодов (Epoch) обучения меньше предельно заданного (10000) значения, величины ошибок также в заданных пределах

Теперь можно в полной мере оценить графические возможности пакета Рассмотрим, например, графическое изображение сети, используя кнопку View Network или соответствующие опции меню (рис. 5.31)

Рис. 5.31 (см. скан) Вид структуры нейронной сети

Можно просмотреть график анализа сети (Network Analysis Plot) с разнообразными опциями его представления (рис. 5.32), а также, используя пункты меню View/Contour Plot или кнопку увидеть трехмерное изображение выхода сети (рис 5 33) и даже повращать его Можно просмотреть файл протокола обучения сети (опция меню View/Training History) и еще многое другое

4) Сохранение результатов С помощью опций меню File/Save as ... сохраним полученную сеть, например, под именем хог (с расширением по умолчанию net)

При работе с нейропакетом необходимо отдельно сохранять веса и смещения обученной сети (с помощью кнопки Save Weights) в файле с расширением по умолчанию wts, например, с именем хог wts Он, кстати, имеет текстовый формат, что удобно

для просмотра) Закроем программу, теперь обученную нейронную сеть можно использовать для прогнозирования

Рис. 5.32 (см. скан) График анализа нейронной сети

Рис. 5.33 (см. скан) Трехмерное представление выхода обученной нейронной сети

5) Опрос сети. Для выполнения прогноза, подготовим файл текстового формата со следующим содержимым

т. е. включающим только значения входов Сохраним его под именем xortest tst

Запустим нейропакет, откроем файл хог net с сохраненной структурой сети и файл xor.wts с ее весами. Далее нажатием кнопки Testing Data в качестве тестового файла укажем созданный файл xortest tst После чего нажмем кнопку Test в правом нижнем углу контрольной панели (рис 5.30). При этом появляется диалоговое окно (рис 5.34), предлагающее указать имя выходного файла (с расширением по умолчанию out)

Рис. 5.34 (см. скан) Диалоговое окно для задания имени выходного файла

Укажем имя хог и нажмем кнопку Сохранить, после чего появляется новое окно (рис 5 35), запрашивающее запись имен столбцов (Write column headers) и выходов-образцов тестового файла (Write test file outputs (targets))

Рис. 5.35 Запрос на вид выходного файла

В нашем случае выходов у тестового файла нет, поэтому укажем только запись имен, подтвердив это нажатием кнопки ОК После этого в рабочей директории нейропакета появится файл хог out с содержимым

Цифры, в общем, близки к цифрам последнего столбца файла xortrn (см выше), не надо забывать, что к тому же выход сети здесь представлен в масштабируемом виде

Можно перейти к естественному масштабу Для этого вначале несколько изменим содержание фала хог out, добавив звездочку в начало первой строки (т. е. превратив заголовок в комментарий), затем с помощью пункта меню Scale/Scale Data File перейдем к окну масштабирования вида рис. 5.28 Укажем в нем в качестве входного файл (модифицированный) хог out Далее в появившемся окне диалога вида рис. 5.29 укажем число входов - 0, число выходов - 1 После возвращения к окну масштабирования, зададим имя выходного файла (Output File), например xorouttrn, укажем в качестве файла масштаба (Scale File) ранее созданный хог scl, установим опцию Unscale from file (в правой верхней части окна) и нажмем кнопку Scale После завершения процесса преобразования данных можно закрыть окно масштабирования

В итоге, получим текстовый файл xorout trn с содержимым

которое и является прогнозируемым выходом нашей сети в естественном масштабе Как видно погрешность здесь все же не очень мала Можно попытаться повторить процесс обучения, задать

другие параметры (меньшую величину ошибки и т. п.), при этом результат, естественно, будет точнее

5.3.3. Общее суждение

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

К недостаткам пакета, на наш взгляд, следует отнести необходимость использования, по сути, ручного масштабирования данных и опроса сети

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