Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ Компьютерный практикум.doc
Скачиваний:
489
Добавлен:
20.03.2016
Размер:
3.35 Mб
Скачать
    1. Использование инструмента nnTool для построения нейронной сети

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

Задание: Используя NNTool построить нейронную сеть; подать в качестве входных данных , в качестве целевых данных,; обучить нейронную сеть; получить значение выхода обученной сети от.

Пример выполнения:

Задача: имеется 100 входных значений х от 0.1 до 10 с шагом 0.1 и соответствующие им значения выходной переменной y. Зависимость y от x следующая: , но исследователю данная зависимость неизвестна, а известны лишь числовые значения.

Требуется найти значение y при .

В пакете Neural Network Toolbox среды MATLAB имеется инструмент NNTool, позволяющий в графической среде спроектировать искусственную нейронную сеть. Для запуска необходимо в режиме командной строки набрать nntool. Появится графическое окно данного инструмента (рис. 6.2):

Рис. 6.2. Графическое окно инструмента NNTool

В данном окне необходимо указать входные и выходные (целевые) значения нейронной сети и спроектировать структуру нейронной сети. Для ввода входных и выходных значений сети необходимо нажать на кнопку Import. Откроется окно Import to Network (рис. 6.3)

Рис. 6.3. Окно Import to Network

Данные можно загрузить из файла на диске (Load from disk file) либо импортировать из рабочей области MATLAB (Import from MATLAB workspace).

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

for i=1:100

x(i)=i*0.1;

y(i)=x(i)^2-2*x(i)+1;

end

Далее в окне Import to Network (рис. 6.3) выбрать импорт из рабочей области MATLAB, в блоке Select a Variable (выбор переменной) необходимо указать входные и желаемые выходные значения сети. В блоке Select a Variable выбираем х, в блоке Destination (назначение) указываем Input Data (входные данные) и нажимаем кнопку Import. Появится сообщение о добавление х в блок входных данных инструмента NNTool (рис. 6.4).

Рис. 6.4. Сообщение о добавлении переменной х в блок входных данных

Далее в блоке Select a Variable выбираем y, в блоке Destination (назначение) указываем Target Data (целевые данные) и нажимаем кнопку Import. Появится сообщение о добавление y в блок целевых данных инструмента NNTool (рис. 6.5).

Рис. 6.5. Сообщение о добавлении переменной y в блок целевых данных

В главном окне NNTool (рис. 6.2) необходимо нажать на кнопку New для проектирования нейронной сети. Откроется окно Create Network or Data. Для проектирования нейронной сети необходимо воспользоваться вкладной Network (Рис. 6.6).

Рис. 6.6. Вкладка Network окна создания нейронной сети

В данном окне необходимо выбрать тип нейронной сети (Network Type), диапазон входных значений (Input ranges), функцию тренировки сети (Training function), адаптивную функцию обучения (Adaption learning function), функцию ошибки (Performance function), количество слоев нейронной сети (Number of Layers) и для каждого слоя указать количество нейронов (Number of neurons) и активационную функцию (Transfer Function). Для обзора спроектированной сети можно воспользоваться кнопкой View.

Для нашей задачи мы спроектировали прямонаправленную нейронную сеть обратного распространения ошибки с диапазоном входных переменных [0.1 10], и двумя слоями (не считая входного слоя). В первом слое задали 10 нейронов и функцию активации в виде гиперболического тангенса. Во втором слое задали 1 нейрон и линейную функцию активации. Нажав на кнопку View, мы видим структуру нашей нейронной сети (рис. 6.7).

Рис. 6.7. Структура построенной нейронной сети

Далее в окне Create Network or Data нажимаем на кнопку Create (Создать). В итоге в главном окне NNTool в блоке Networks (Нейросети) появляется наша нейронная сеть. Для ее использования необходимо ее выделить и нажать на кнопку Open (Открыть). Появится окно со структурой нашей сети. В первую очередь необходимо нейронную сеть обучить. Для этого переходим на вкладку Train (рис. 6.8).

Рис. 6.8. Вкладка обучения нейронной сети

В блоке Training Data (Данные для обучения) необходимо указать входные (Inputs) и целевые (Targets) данные, а в блоке Training Results (Результат обучения) указать имена переменных выхода сети (Outputs) и массива ошибок (Errors). На вкладке Training Parameters (рис. 6.9) можно настроить параметры обучения: количество эпох обучения (epochs), точность обучения (goal), период обновления (show), время обучения (time) и другие. После настройки всех требуемых параметров необходимо нажать на кнопку Train Network (Обучение нейронной сети).

Рис. 6.9. Параметры обучения нейронной сети

Во время обучения нейронной сети можно наблюдать, как изменяется ошибка обучения (рис. 6.10).

Рис. 6.10. Обучение нейронной сети

Значение найденных весовых коэффициентов всех слоев нейронной сети и значение найденных смещений можно посмотреть/отредактировать на вкладке View/Edit Weights (рис. 6.11).

Рис. 6.11. Значение весовых коэффициентов

После окончания обучения в главном окне NNTool в блоках Output Data (Выходные данные) и Error Data (Ошибки) можно посмотреть значение выходов обученной сети и массива ошибок (рис. 6.12.)

Рис. 6.12. Выходы сети и ошибки обучения

Для нахождения выхода сети от в первую очередь зададим переменнуюи добавим ее в блокInput Data главного окна NNTool. После этого в окне структуры сети (рис. 6.8) перейдем на вкладку Simulate (Симуляция), в блоке входа (Inputs) укажем переменную хх, а в блоке выхода (Outputs) имя переменной выхода (рис. 6.13), после чего нажмем на кнопку Simulate Network.

Рис. 6.13. Вкладка Simulate

В блоке Output Data (данные выхода) главного окна NNTool в переменной exit мы видим значения выхода сети от (рис. 6.14).

Рис. 6.14. Выход сети

Зная зависимость можно вычислить требуемое (идеальное) значение:. Нейронная сеть выдала результат близкий к идеальному: 84.5466.

На главном окне NNTool с помощью кнопки Export (Экспорт) имеется возможность экспортировать используемые данные и структуру спроектированной нейронной сети в рабочую область MATLAB либо в mat-файл на диске (рис. 6.15) для последующего использования спроектированной искусственной нейронной сети в других работах.

Рис. 6.15. Окно экспорта

Вывод (пример):

В ходе выполнения лабораторной работы я познакомился с инструментом NNTool и с его помощью научился проектировать и использовать искусственные нейронные сети в среде MATLAB.

Контрольные вопросы:

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

  2. В чем отличие функций активаций tansig, logsig и purelin?

  3. Как в пакете NNTool задается критерий достижения точности аппроксимации?

  4. Каким образом можно использовать нейронные сети для решения задач прогнозирования значений функции?