Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

It_Kompyuterny_Praktikum

.Pdf
Скачиваний:
40
Добавлен:
21.03.2016
Размер:
1.65 Mб
Скачать

3.2. Использование инструмента NNTool для построения нейронной сети

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

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

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

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

следующая: y(x) x2 2x 1, но исследователю данная зависимость

неизвестна, а известны лишь числовые значения yi ,i 1.100 . Требуется найти значение y при x 10.2 .

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

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

71

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

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 (целевые данные) и нажимаем кнопку

72

Import. Появится сообщение о добавление y в блок целевых данных инструмента NNTool (рис. 6.5).

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

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

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

73

В данном окне необходимо выбрать тип нейронной сети (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).

74

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

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

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

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

75

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

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

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

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

76

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

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

Simulate Network.

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

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

77

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

Зная зависимость y(x) x2 2x 1 можно вычислить требуемое (идеальное) значение: y(10.2) 84.64 . Нейронная сеть выдала результат

близкий к идеальному: 84.5466.

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

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

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

78

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

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

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

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

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

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

3.3. Кластеризация с помощью нейронных сетей

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

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

Понятие кластеризации. Задача кластеризации (категоризации, классификации "без учителя") – задача размещения входных векторов (образов) по категориям (кластерам), так чтобы близкие векторы (схожие образы) оказались в одной категории. Отличие задачи кластеризации от похожей на нее задачи классификации заключается в том, что набор категорий изначально не задан и определяется в процессе обучения нейронной сети. Примером задачи кластеризации служит задача сжатия информации путем уменьшения разнообразия данных.

Кластеризация может быть использована для решения следующих задач:

обработка изображение;

классификация;

тематический анализ коллекций документов;

построение репрезентативной выборки.

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

79

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

Задача. Используя встроенные функции пакета нейронных сетей математической среды MATLAB построить нейронную сеть со слоем Коханена, которая множество входных данных разделит на кластеры и выявит их центры. На обученную сеть подать новый входной вектор и определить к какому кластеру он относится.

Для создания нейронной сети со слоем Коханена воспользуемся встроенной в среду MATLAB функцией newc:

X=[0 1;0 1];

% Задание диапазона изменения элементов

clusters=5;

% Задание количество кластеров

points=5;

%Задание количество точек в кластере

std_dev=0.01;

 

P=nngenc(X,clusters,points,std_dev);%Моделирование входных данных

h=newc([0 1; 0 1],5,.1)

% создание слоя Коханена

h.trainParam.epochs=50;

%Задание количества циклов обучения

h=train(h,P)

 

w=h.IW{1};

 

% вывод графиков исходных данных и выявленных центров кластеров plot(P(1,:),P(2,:),'^r'),grid;

hold on; plot(w(:,1),w(:,2),'ob'); xlabel('p(1)');

ylabel('p(2)');

 

A=0.6

 

B=0.5

 

p=[A;B];

% Задание нового входного вектора

plot(A,B,'+k')

 

y=sim(h,p)

%Опрос сети

Результат работы программы представлен на рис.6.16. Кроме того, его можно увидеть в командном окне:

y = (4,1) 1

Предъявленный вектор отнесен к четвертому кластеру.

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]