Моделирование нейронных сетей в Matlab (2010) (1245259)
Текст из файла
Федеральное агентство по образованиюГосударственное образовательное учреждениевысшего профессионального образования«Омский государственный технический университет»МОДЕЛИРОВАНИЕ НЕЙРОННЫХ СЕТЕЙ В MATLABМетодические указания к лабораторной работеСоставитель: Федотов А.В., к.т.н., доцентОмск 2010Цель работы: Знакомство со средствами и методами MATLAB и пакета Simulink для моделирования и исследования нейронных сетей. Применение нейронных сетей для аппроксимации функций.Используемые средства: Персональный компьютер с инсталлированной системой MATLAB 6.5 или старшей версии.ОБЩИЕ СВЕДЕНИЯТипичный пример сети с прямой передачей сигнала показан на рисунке.
Нейроны регулярным образом организованы в слои. Входной слой служит просто для ввода значений входных переменных. Каждый из скрытых ивыходных нейронов соединен со всеми элементами предыдущего слоя. Можно было бы рассматривать сети, в которых нейроны связаны только с некоторыми из нейронов предыдущего слоя; однако, для большинства приложенийсети с полной системой связей предпочтительнее.При работе (использовании) сети во входные элементы подаются значения входных переменных, затем сигналы последовательно отрабатываютнейроны промежуточных и выходного слоев.
Каждый из них вычисляет своезначение активации, беря взвешенную сумму выходов элементов предыдущего слоя и вычитая из нее пороговое значение. Затем значение активациипреобразуются с помощью функции активации, и в результате получаетсявыход нейрона. После того, как вся сеть отработает, выходные значения элементов выходного слоя принимаются за выход всей сети в целом.Вначале сеть настраивается.
Процесс настройки сети получил название«обучение сети». Перед началом обучения связям присваиваются небольшиеслучайные значения. Каждая итерация процедуры состоит из двух фаз. Вовремя первой фазы на сеть подается входной вектор путем установки в нужное состояние входных элементов. Затем входные сигналы распространяютсяпо сети, порождая некоторый выходной вектор. Для работы алгоритма требуется, чтобы характеристика вход-выход нейроподобных элементов была неубывающей и имела ограниченную производную. Обычно для этого используют сигмоидную нелинейность.2Известные типы сетей:* Однослойный перцептрон;* Многослойный перцептрон;* Сеть Хэмминга;* Сеть Ворда;* Сеть Хопфилда;* Сеть Кохонена;* Когнитрон;* Неокогнитрон.ВЫПОЛНЕНИЕ РАБОТЫ1. Работа с нейронной сетью в командном режимеВыполним исследование нейронной сети для аппроксимации выбранной функции, используя функции пакета Neural Networks Toolbox .
В составпакета входит более 160 различных функций, дающих возможность создавать, обучать и исследовать нейронные сети.Для выполнения работы необходимо запустить MATLAB и перейти вкомандное окно.Создадим обобщенно-регрессионную НС (сеть типа GR N N ) с именема, реализующую функциональную зависимость между входом и выходомвида у = х2 на отрезке [-1, 1], используя следующие экспериментальные данные:х = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1],у = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1].Проверку качества восстановления приведенной зависимости осуществим, используя данные контрольной выборки x1 = [-0.9 -0.7 -0.3 0.4 0.8], которым соответствуют значения y1 = [0.81 0.49 0.09 0.16 0.64].Процедура создания и использования данной НС описывается следующим образом:>> x = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1];>> % Задание входных значений>> у = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1];>> % Задание целевых значений>> a=newgrnn(х,у,0.01); % Создание НС с отклонением0.01>> Y1 = sim(а,[-0.9 -0.7 -0.3 0.4 0.8]) % Опрос НСY1 =0.8200 0.6400 0.0400 0.0900 0.8100Как видно, точность аппроксимации в данном случае получилась неочень высокой — максимальная относительная погрешность аппроксимациисоставляет 30,61 %.3Можно попытаться улучшить качество аппроксимации за счет подборавеличины отклонения, но в условиях примера приемлемый результат легкодостигается при использовании сети с радиальными базисными элементамитипа newrbe:>> a=newrbe(х,у);>>Yl = sim(a,[-0.9 -0.7 -0.3 0.4 0.8]) % Опрос НСY1 =0.8100 0.4900 0.0900 0.1600 0.6400Нетрудно видеть, что применение сети типа newrb приводит здесь непросто к интерполяции заданных обучающей выборкой значений, а действительно к точному восстановлению заданной зависимости — по крайней мере,для использованных точек контрольной последовательности.Созданную сеть можно сохранить для последующего использованиянабором в командной строке команды save ('а'); при этом будет создан файлa.mat, то есть файл с именем НС и расширением mat.
В последующих сеансах работы эту сеть можно загрузить, используя функцию load (' а'). Естественно, допустимы все другие формы записи операторов save и load.Рассмотрим теперь задачу восстановления некоторой, вообще говоря,неизвестной зависимости по имеющимся экспериментальным данным с использованием линейной НС.Пусть экспериментальная информация задана значениямих = [1.0 1.5 3.0 -1.2], у = [0.5 1.1 3.0 -1.0].Создадим векторы входа и целей:>> х = [1.0 1.5 3.0 -1.2];>> у = [0.5 1.1 3.0 -1.0];Теперь создадим линейную нейронную сеть:>> b=newlind(х,у); % Создание линейной НС с именем bПроведем опрос сети для значения входа, равного 3.0 (этому, согласноэкспе¬риментальным данным, соответствует целевое значение 3.0):>> y1 = sim(b, 3.0) % Опрос сетиy1 =2.7003Погрешность восстановления по данным обучающей выборки в данномслучае - 10%.
Отметим, что в условиях как первого, так и второго примерадать какую-либо оценку предельной величине погрешности аппроксимации4невозможно, особенно для значений входов, выходящих за пределы диапазона входов обучающей последовательности. К сожалению, это является характерной особенностью нейросетевых моделей. Для подавляющего числа задач, решаемых с помощью аппарата нейронных сетей ˗ не только для задачклассификации или прогноза ˗ каких-либо вероятностных оценок точностиполучаемых решений получить не удается.2.
Использование GUI-интерфейса пакета нейронных сетей2.1. Создание нейронной сетиСоздадим, используя графический интерфейс пользователя, нейроннуюсеть для выполнения операции у = х2 при задании векторов входах = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1]и целиу = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1].Для открытия основного окна интерфейса необходимо в командномокне MATLAB ввести команду>> nntoolВыполнение команды приведет к открытию окна создания нейроннойсети Network/Data Manager.Сформируем последовательность входов и целей в рабочей областиGUI-интерфейса, используя окно Create New Data.С этой целью сначала нажмем кнопку New Data,5далее в поле Name окна Create New Dataвведем сначала имя переменной х,затем в области значений Value вектор значений[-1 - 0.8 - 0.5 - 0.2 0 0.1 0.3 0.6 0.9 1]и, используя радиокнопку Inputs (в правой части окна), укажем тип переменных (Inputs — Входы).Ввод завершим нажатием радиокнопки Create (Создать).Аналогичную операцию проделаем для вектора у, с указанием (с помощью радиокнопки Targets), что это — вектор целевых данных.Создадим новую нейронную сеть.Для этого в окне Network/Data Manager нажмем кнопку New Network.В открывшемся окне Create New Network выберем нейронную сетьтипа feed-forward backprop с прямой передачей сигнала и с обратным распространением ошибки.При создании сети сохраним ей имя, даваемое по умолчанию(network1).Диапазон входов определим (в окне Create New Network) с помощьюопции Get from input.Количество нейронов (Number of neurons) первого слоя (Layer 1) установим равным двум.Остальные установки при создании сети оставим по умолчанию.Создание сети завершим нажатием кнопки Create.После этого в окне Network/Data Manager, в области Networks появится имя новой созданной сети — network1.
Выберем это имя с помощьюмышки, что приведет к активизации всех кнопок указанного окна.Выполним инициализацию сети, для чего с помощью кнопкиInitialize... выберем закладку Initialize. Это приведет к открытию диалоговойпанели Network: network1.67Для ввода в панели Network: network1 установленных диапазонов иинициализации весов воспользуемся кнопками Set Ranges (Установитьдиапазоны) и Initialize Weights (Инициализировать веса). Если требуетсявернуться к прежним диапазонам, то следует выбрать кнопки Revert Ranges(Вернуть диапазоны) и Revert Weights (Вернуть веса), но в условиях примера это не нужно.2.2. Обучение нейронной сетиДля обучения созданной сети, выбирается закладка Train в панелиNetwork: network1 и открывается новая диалоговая панель.Панель имеет три закладки:Training Info (Информация об обучающих последовательностях);Training Parameters (Параметры обучения);Optional Info (Дополнительная информация).Применяя эти закладки, можно установить имена последовательностейвхода и цели (на вкладке Training Info — в левой ее части необходимо указать х и у), а также значения параметров процедуры обучения (на вкладкеTraining Parameters; в условиях примера сохраним значения по умолчанию).На вкладке Optional Info следует указать переменные x и y в качествеValidation Data и Test Data.8Теперь нажатие кнопки Train Network вызывает обучение сети.
Качество обучения сети на выбранной обучающей последовательности отображается графиком. Видно, что к концу процесса обучения ошибка становитсяочень малой (вид данного рисунка при повторе вычислений может отличаться от приведенного).Результаты обучения можно просмотреть в окне Network/Data Manager, активизируя имена последовательностей выходов network1_outputs илиошибок network1_errors, и используя кнопку View.Следует отметить, что в данном случае точность аппроксимации заданной функции получилась не очень высокой — максимальная абсолютная погрешность составляет 0.055, относительная — 5.5%, в чем можно убедиться,просмотрев значения ошибок (networkl_errors) или выходов (network1_outputs) сети.Заметим, что точность аппроксимации здесь можно было бы повысить,конструируя сеть с большим числом нейронов, но при этом необходима иболее представительная обучающая выборка.2.3. Работа с созданной сетьюДля просмотра структурной схемы сети необходимо, выбрав имя сети(network1), воспользоваться кнопкой View.9При необходимости можно экспортировать созданную нейронную сетьв рабочую область системы MATLAB (нажав кнопку Export и далее, в открывшемся окне Export or Save from Network/Data Manager, — кнопки Select All (Выбрать все) и Export) и получить информацию о весах и смещениях непосредственно в рабочем окне системы, выполнив команду:> > n e t wo r k 1 .
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.