Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

Справочная подсистема

В состав системы MATLAB6 входит чрезвычайно мощная подсистема справкиHelp. Объем документации, к которой организуется доступ, составляет более 250 М и поставляется на отдельном компакт-диске. Обеспечивается доступ не только к встроенной системеHelp, но и к документам в форматеHTML, а также к полнотекстовым документам в форматеPDF.

Рис. 1.11

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

Навигатор справочной системы позволяет установить в поле Product Filterмеру использования источников информации: в полном (All) или ограниченном объеме (Selected). С помощью кнопкиContents tab вывести заголовки и оглавления документов; с помощью кнопкиIndex tabвывести на экран индексный указатель, а с помощью кнопкиSearch tabобратиться к поисковой системе. Наконец, кнопкаFavorites tabпозволяет просмотреть и изменить список справочных документов, определенных в качестве первоочередных для просмотра.

Как только требуемая информация найдена, она выводится в окно просмотра. При этом обеспечивается возможность перехода к другим страницам, используя стрелки в верхней и нижней частях страницы или клавиши "вперед" и "назад" инструментальной панели этого окна. Здесь же вы можете увидеть кнопку вывода на печать содержимого страницы, а также окно для поиска Find in page, окно с названием документа-источника, а также кнопку создания закладкиAdd to Favorites.

Рис. 1.12

И вновь, как это свойственно среде MATLAB6, пользователь имеет доступ к контекстному меню со следующими опциями:Evaluate Selection(Вычислить выделенное),Open Selection(Открыть выделенное),Help on Selection(Справка о выделенном),Back(Назад),Forward(Вперед),Reload (Перезагрузить раздел),Copy(Копировать).

1.2. GUI-интерфейс для ППП NNT

Отличительной особенностью 12-го выпуска программных продуктов фирмы MathWorksявляется включение в их состав различных инструментальных средств организации диалога с пользователем. Как правило, этоGUI-интерфейсы. Не является исключением и пакет по нейронным сетям ПППNNT, в состав которого входит инструментальное средствоNNTool. Этот графический интерфейс позволяет, не обращаясь к командному окну системыMATLAB, выполнять создание, обучение, моделирование, а также импорт и экспорт нейронных сетей и данных, используя только инструментальные возможностиGUI-интерфейса. Конечно, такие инструменты наиболее эффективны лишь на начальной стадии работы с пакетом, поскольку имеют определенные ограничения. В частности, интерфейсNNToolдопускает работу только с простейшими однослойными и двухслойными нейронными сетями, но при этом пользователь выигрывает во времени и эффективности освоения новых объектов.

Вызов GUI-интерфейсаNNToolвозможен либо командойnntoolиз командной строки, либо из окна запуска приложенийLaunchPadс помощью опцииNNToolиз разделаNeuralNetworkToolbox. После вызова на экране терминала появляется окноNetwork/Data Manager (Управление сетью/данными) (рис. 1.13)

Рис. 1.13

Здесь:

Help– кнопка вызова окна подсказкиNetwork/Data Manager Help (рис. 1.14);

New Data– кнопка вызова окна формирования данныхCreate New Data (рис. 1.15);

New Network– кнопка вызова окна создания новой нейронной сетиCreate New Network (рис. 1.16);

Import– кнопка вызова окна для импорта или загрузки данныхImport or Load to Network/Data Manager (рис. 1.17);

Export– кнопка вызова окна для экспорта или записи данных в файлExport or Save fromNetwork/Data Manager (рис. 1.18).

Кнопки View, Delete становятся активными только после создания и активизации данных, относящихся к последовательностям входа, цели, выхода или ошибок сети. КнопкаViewпозволяет просмотреть, а кнопкаDeleteудалить активизированные данные.

Кнопки View, Delete, Initialize…, Simulate…, Train…, Adaptстановятся активными после создания и активизации самой нейронной сети. Они позволяют просмотреть, удалить, инициализировать, промоделировать, обучить или адаптировать нейронную сеть и будут описаны ниже.

Прежде всего рассмотрим назначение и способы работы с перечисленными выше окнами.

Окно Network/Data Manager Help. Это окно подсказки показано на рис. 1.14 и описывает правила работы с диспетчеромNetwork/Data Manager при создании нейронной сети.

Рис. 1.14

Чтобы создать нейронную сеть, необходимо выполнить следующие операции:

  • Сформировать последовательности входов и целей (кнопка New Data), либо загрузить их из рабочей области системыMATLABили из файла (кнопкаImport).

  • Создать новую нейронную сеть (кнопка New Network), либо загрузить ее из рабочей области системыMATLABили из файла (кнопкаImport).

  • Выбрать тип нейронной сети и нажать кнопку Train, чтобы открыть окно для задания параметров процедуры обучения.

  • Открыть окно Networkдля просмотра, инициализации, моделирования, обучения и адаптации сети.

Окно Create New Data. Это окно показано на рис. 1.15 и включает 2 области редактирования текста для записи имени вводимых данных (областьName) и ввода самих данных (областьValue), а также 6 кнопок для указания типа вводимых данных.

Рис. 1.15

Различают следующие типы данных:

Inputs(Входы) – последовательность значений входов;

Targets(Цели) – последовательность значений цели;

Input Delay States (Состояния ЛЗ входа) – начальные условия линии задержки на входе;

Layer Delay States(Состояния ЛЗ слоя) – начальные условия линии задержки в слое;

Outputs(Выходы) – последовательность значений выхода сети;

Errors (Ошибки) – разность значений целей и выходов.

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

Окно Create New Network. Это окно показано на рис. 1.16 и включает поля для задания параметров создаваемой сети. В зависимости от типа сети количество полей и их названия изменяются.

Рис. 1.16

Обратимся к описанию полей.

Network Name (Имя сети) – стандартное имя сети, присваиваемое GUI-интерфейсом NNTool; в процессе создания новых сетей порядковый номер будет изменяться автоматически.

Network Type(Тип сети) – список сетей, доступных для работы с интерфейсомNNTool. Для удобства этот список повторен в нижеследующей таблице. ИнтерфейсNNToolпозволяет создавать нейронные сети только с одним или двумя слоями.

п/п

Тип сети

Название сети

Число слоев

Обучаемые параметры

1

Competitive

Конкурирующая сеть

1

IW{1,1}, b{1}

2

Cascade-forward backprop

Каскадная сеть с пря­мым рас­пространением сигнала и обратным распрос­т­ра­не­нием ошибки

2

IW{1,1},b{1}, LW{2,1}, IW{2,1}, b{2}

3

Elman backprop

Сеть Элмана с обратным рас­пространением ошибки

2

IW{1,1},b{1}, LW{2,1},b{2}, LW{1,1}

4

Feed-forward backprop

Сеть с прямым распрост­ра­нением сигнала и обрат­ным распространением ошибки

2

IW{1,1},b{1}, LW{2,1},b{2}

5

Time delay backprop

Сеть с запаздыванием и об­рат­ным распростра­нением ошибки

2

IW{1,1},b{1}, LW{2,1}, b{2}

6

Generalized regression

Обобщенная регрессионная сеть

2

IW{1,1},b{1}, LW{2,1}

7

Hopfield

Сеть Хопфилда

1

LW{1, 1}, b{1}

8

Linear layer (design)

Линейный слой (создание)

1

IW{1, 1}, b{1}

9

Linear layer (train)

Линейный слой (обучение)

1

IW{1,1}, b{1}

10

LVQ

Сеть для классификации вход­­ных векторов

2

IW{1, 1}, LW{2, 1}

11

Perceptron

Персептрон

1

IW{1, 1}, b{1}

12

Probabalistic

Вероятностная сеть

2

IW{1,1},b{1}, LW{2,1}

13

Radial basis (exact fit)

Радиальная базисная сеть с нулевой ошибкой

2

IW{1,1},b{1}, LW{2,1}

14

Radial basis (fewer neurons)

Радиальная базисная сеть с ми­­ни­мальным числом нейронов

2

IW{1,1},b{1}, LW{2,1}, b{2}

15

Self-organizing map

Самоорганизующаяся карта Кохонена

1

IW{1,1}

Примечания:

  • Для сетей 2, 3, 7 в данной версии интерфейса NNToolне обеспечивается просмотр структурных схем.

  • Сети 5, 9 допускают введение линий задержек на входе.

  • Сети 3 допускают введение линий задержек в слое.

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

Продолжим описание полей.

Input ranges(Диапазоны входа) – допустимые границы входов, которые либо назначаются пользователем, либо определяются автоматически по имени входной последовательности, выбираемой из спискаGet from Inp… .

Training function(Функция обучения) – список обучающих функций.

Adaption learning function (Функции настройки для режима адаптации) – список функций настроек.

Performance function (Функция качества обучения) – список функций оценки ка­чества обучения.

Number of layers (Количество слоев) – количество слоев нейронной сети.

Properties for(Свойства) – список слоев:Layer1 (Слой 1),Layer2 (Слой 2).

Number of neurons(Количество нейронов) – количество нейронов в слое.

Transfer function(Функция активации) – функция активации слоя.

Окно Import or Load to Network/Data Manager. Это окно показано на рис. 1.17 и включает 3 поля.

Рис. 1.17

Source (Источник) – поле для выбора источника данных. Это либо рабочая областьсистемы MATLAB (кнопка выбора Import from MATLAB Workspace), либо файл (кнопкавыбораLoad from disk file).

Если выбрана первая кнопка, то в поле Select a Variable вы можете видеть все переменные рабочей области и, выбрав одну из них, например Р1, можете определить ее в полеDestination (Назначение) как последовательность входаInputs(Входы).

Если выбирается кнопка Load from disk file, то активизируется полеMAT-file Nameи кнопкаBrowse, что позволяет начать поиск и загрузку файла из файловой системы.

Окно Export or Save from Network/Data Manager. Это окно показано на рис. 1.18 и позволяет передать данные из рабочей областиGUI-интерфейсаNNToolв рабочую область системыMATLABили записать их в виде файла на диске.

Рис. 1.18

В данном случае нами выбрана переменная network1, которая принадлежит к классуnetworkobjectи описывает нейронную сеть. После того как эта переменная экспортирована в рабочую область, можно, например, построить модель нейронной сети в системеSimulinkс помощью оператораgensim.

Диалоговая панель Networkпоказана на рис. 1.19.

Рис. 1.19

Она открывается только в том случае, когда в окне Network/Data Managerвыделена созданная сеть и становятся активными кнопкиView, Initialize, Simulate, Train, Adapt.

Панель имеет 6 закладок:

View (Просмотреть) – структура сети;

Initialize(Инициализация) – задание начальных весов и смещений;

Simulate(Моделирование) – моделирование сети;

Train (Обучение) – обучение сети;

Adapt(Адаптация) – адаптация и настройка параметров сети;

Weights(Веса) – просмотр установленных весов и смещений.

Особенности работы с соответствующими окнами будут рассмотрены на приведенных ниже примерах создания конкретных нейронных сетей.

Пример. Нейронная сеть с прямой передачей сигнала.

Создать и обучить нейронную сеть выполнению операции y=x12+x2, если заданы последовательности входаP= [1 0.5 0 1; –2 0 0.5 1] и целиT= [–1 0.25 0.5 2].

Сформируем последовательности входов и целей в рабочей области GUI-интерфейсаNNTool, используя окноCreate New Data.

Выберем нейронную сеть типа feed-forwardbackpropс прямой передачей сигнала и с обратным распространением ошибки. Схема этой сети показана на рис. 1.19.

Выполним инициализацию сети, для чего выберем закладку Initialize, откроется диалоговая панель, показанная на рис. 1.20. Диапазоны значений исходных данных выберем по входам из ниспадающего менюGet from input. Для ввода установленных диапазонов и инициализации весов надо воспользоваться кнопкамиSet Ranges(Установить диапазоны) иInitialize Weights(Инициализировать веса). Если требуется вернуться к прежним диапазонам, то следует выбрать кнопкиRevert Ranges(Вернуть диапазоны) иRevert Weights(Вернуть веса).

Рис. 1.20

Затем выполняется обучение сети, для чего выбирается закладка Train и открывается диалоговая панель, показанная на рис. 1.21.

Рис. 1.21

Панель имеет три закладки:

Training Info(Информация об обучающих последовательностях) (рис. 1.21);

Training Parametrs(Параметры обучения) (рис. 1.22);

Optional Info (Дополнительная информация) (рис. 1.23).

Рис. 1.22

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

Рис. 1.23

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

Теперь можно приступить к обучению сети (кнопка Train Network).

Рис. 1.24

Качество обучения сети с прямой передачей сигнала на выбранной обучающей последовательности поясняется на рис. 1.24. Практически нулевая точность достигается за 13 циклов обучения.

Соответствующие веса и смещения можно увидеть, если выбрать закладку Weights (рис. 1.25).

Рис. 1.25

Для удобства работы можно экспортировать созданную нейронную сеть в рабочую область системы MATLAB и получить информацию о весах и смещениях непосредственно в рабочем окне системы:

network1.IW{1, 1}, network1.b{1}

ans = –1.9390 –2.2747

ans = 1.1389

network1.LW{2, 1}, network1.b{2}

ans = –1.5040

ans = 0.5024

Результаты обучения можно просмотреть в окне Network/Data Manager, выбрав кнопку Manager (рис. 1.25). Появляется окно (рис. 1.26); теперь, активизируя имена последовательностей выхода или ошибокnetwork1_outputsиnetwork1_errors, можно про­смотреть результаты, используя кнопкуView. Получаем выходные данные, практически равные целям, и ошибки порядка 10-14.

Рис. 1.26

Пример. Классификация входных векторов.

Создать нейронную сеть в виде персептрона, который разделяет векторы входа на два класса. Обозначим эти классы как 0 и 1. Обучающую последовательность сформируем в виде двух массивов ячеек: массива входов Р = {[2; 2] [1; 2] [–2; 2] [–1; 1] [1; –2]} и массива целей Т = {0 0 1 1 1}, который задает принадлежность каждого вектора входа к определенному классу. Выполним эту операцию в рабочей области системыMATLAB, а затем импортируем их в рабочую область интерфейсаNNTool.

Зададим персептрон с одним нейроном, функцией активации HARDLIMи правилом настройкиLEARNP. Для этого из списка нейронных сетей выберем тип сетиPerceptron(рис. 1.27) и зададим требуемые параметры.

Рис. 1.27

Чтобы увидеть структурную схему сети, воспользуемся кнопкой View(рис. 1.28).

Рис. 1.28

Теперь выполним инициализацию сети, используя закладку Initialize, а затем адаптацию и настройку параметров сети, используя закладкуAdaptокнаNetwork. Для этого следует указать имена входа и цели, а также задать количество циклов адаптации (в данном случае достаточно трех циклов) и нажать кнопкуAdapt Network.

В результате настройки будут установлены следующие значения весов и смещений, которые можно увидеть, выбрав закладку Weights. Для данной сети вектор весов равенIW{1, 1} = [–3 –2], а смещениеb{1} = 1. Таким образом, линия переключения, разделяющая плоскость на 2 области, описывается следующим образом:

L: –3p1– 2p2+ 1 = 0.

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

а

б

Рис. 1.29

Пример динамической линейной сети:

Спроектировать динамическую линейную нейронную сеть для предсказания синусоидальной функции по четырем предшествующим значениям.

Архитектура сети: линейная нейронная сеть с линией задержки по входу на 4 такта, с одним входом, значения которого заключены в диапазоне [–1 1], и одним выходом.

Обучающая последовательность:

входная последовательность

time = 0:0.1:10;

P = sin(time);

последовательность целей

T = P;

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

P = con2seq(P);

T = P;

Целесообразно сформировать эти последовательности в рабочей области системы MATLAB, а затем импортировать их в рабочую область интерфейсаNNTool.

Затем выберем сеть типа Linearlayer (train) с линией задержки по входу (рис. 1.30), инициализируем ее, установим начальные значения весов, выполним адаптацию сети, предварительно установив имена последовательностей входа и цели, а также указав количество циклов адаптации – 250.

Рис. 1.30

По окончании проектирования экспортируем нейронную сеть в рабочую область системы MATLAB.

Теперь можно построить модель нейронной сети в системе Simulink и построить ее схему (рис. 1.31):

gensim(network1)

Рис. 1.31

Эта схема в отличие от иллюстративных схем на рис. 1.19 и 1.29 является в полной мере функциональной схемой и может быть применена для моделирования нейронной сети.

Используя описание нейронной сети, можно просмотреть веса и смещение в рабочем окне системы MATLAB:

IW = network1.IW{1,1}

IW = 0.8135 0.4798 0.1716 –0.1143 –0.3858

b = network1.b{1}

b = 0.0024

Извлечем информацию об ошибке сети и построим соответствующий график (рис. 1.32). Обратите внимание на специальную форму применения оператора cat, которая позволяет преобразовать массив числовых ячеек в числовой массив.

E = cat(2,network1_errors{:});

plot(time(10:101), E(10:101))

Рис. 1.32

Из анализа рисунка следует, что погрешность обучения не превышает 0.01.

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