Материал: Лабораторная работа 2

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Федеральное агентство связи ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники

ЛАБОРАТОРНАЯ РАБОТА №2 по дисциплине «Системы искусственного интеллекта»

Выполнил: студент 3-го курса дневного отделения группы ИКПИ-85

Коваленко Леонид Александрович Преподаватель:

доцент кафедры ПИиВТ Белая Татьяна Иоанновна

Санкт-Петербург

2021

Цель работы Изучение модели нейрона перцептрона и архитектуры перцептронной

однослойной нейронной сети; создание и исследование моделей перцептронных нейронных сетей в системе MATLAB.

Задание Индивидуальное задание согласно варианту представлено в табл. 1.

Таблица 1 — Индивидуальное задание

 

Кол-во классов

Координаты точек проверочного

Контрольный

№ вв.

для

множества и номер класса1, к

 

классификации

которому принадлежит каждая точка

вопрос

 

 

 

 

 

 

14

4

(0, 1) — 1; (1, -1) — 2; (-1, -1) — 3

72

Теоретические сведения Искусственная нейронная сеть (ИНС) — математическая модель,

описывающая отдельные элементарные функции, присущие нервной системе живых организмов. Структурным элементом ИНС является искусственный нейрон, полностью описываемый вектором входов X , вектором синаптических коэффициентов W , а также функцией активации f (S) . ИНС обычно применяются для решения задач, плохо подлежащих формализации (т. е. таких, которые нельзя описать аналитически).

В данной работе будет рассмотрен простейший вид ИНС — персептрон. Персептрон — это однослойная нейронная сеть, позволяющая решать задачу классификации линейно разделимых объектов.

Прежде, чем начать пользоваться сетью, ее необходимо обучить — т. е. определить значения синаптических коэффициентов и смещений (смещения можно также рассматривать как синаптические коэффициенты входов, на которые постоянно подана единица). Алгоритм обучения в соответствии с дельта-правилом можно описать следующим образом:

1.Подать на вход сети вектор входных данных;

2.Если ответ на выходе верный, перейти на п. 5, если нет, то на п. 3;

1Номера классов в таблице наведены условно.

2Код программы на языке MATLAB без использования функций Neural Network Toolbox.

2

3.

Скорректировать

синаптические

коэффициенты:

wij (k +1)=wij (k )+v δ xi , где

i — номер входа, j — номер нейрона в слое, k

номер итерации, 0<v <1

— коэффициент скорости обучения (определяется

эмпирически),

δ=Y теорY практ

разность между

теоретическим

и

практическим значениями выхода, xi

— значение, поданное на i -й вход;

 

4.Подать на вход тот же вектор, и перейти на п. 2;

5.Подать на вход очередной вектор, и так действовать в соответствии с

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

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

Практическая часть Ввиду того, что для однозначного задания положения точки на

плоскости достаточно двух координат, персептрон будет иметь два входа: x1

иx2 . Однако, дабы работать со смещениями как с синаптическими

коэффициентами, понадобится также вход x0 , на который постоянно подана единица. Т. к. классифицировать необходимо на четыре класса, то понадобится два нейрона ( 22=4 ). Следовательно, матрица весовых коэффициентов W будет иметь размерность 2× 3 (два нейрона, три параметра).

Основная идея классификации в данном случае будет следующей: прямая, "проводимая" первым нейроном будет делить множество точек плоскости на два класса — так мы получим первый разряд кодовой комбинации, кодирующей номер класса. Второй нейрон будет "проводить" линию, которая также делит множество точек плоскости на два класса, и так мы получим второй разряд кодовой комбинации. Пересекаясь, обе линии будут делить множество точек плоскости на четыре класса, что и требуется в условии.

3

Проверочные точки представлены в табл. 2. Таблица 2 — Проверочные точки

 

 

Классифи

Классифи

 

 

 

Кодовая

№ п/п

Класс

X

 

Y

комбинац

кация I

кация II

 

 

 

 

 

 

ия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

0

1

 

-1

00

 

 

 

 

 

 

 

 

2

2

0

1

-1

 

-1

01

 

 

 

 

 

 

 

 

3

4

1

1

0

 

1

11

 

 

 

 

 

 

 

 

Точки обучающей выборки представлены в табл. 3.

 

 

Таблица 3 — Точки обучающей выборки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Классифи

Классифи

 

 

 

Кодовая

№ п/п

Класс

X

 

Y

комбинац

кация I

кация II

 

 

 

 

 

 

ия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

3

 

-1

 

 

 

 

 

 

 

 

 

2

1

0

0

5

 

-1

00

 

 

 

 

3

4

 

-3

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

6

 

1

 

 

 

 

 

 

 

 

 

5

 

 

 

-4

 

-2

 

 

 

 

 

 

 

 

 

6

2

0

1

-2

 

-2

01

 

 

 

 

7

-4

 

-4

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

-3

 

-4

 

 

 

 

 

 

 

 

 

9

 

 

 

6

 

9

 

 

 

 

 

 

 

 

 

10

3

1

0

6

 

6

10

 

 

 

 

11

8

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

7

 

4

 

 

 

 

 

 

 

 

 

13

 

 

 

-2

 

6

 

 

 

 

 

 

 

 

 

14

4

1

1

-4

 

4

11

 

 

 

 

15

-2

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

-3

 

2

 

 

 

 

 

 

 

 

Код программы, моделирующей, обучающей и тестирующей работу

персептрона, на языке MATLAB с использованием функций Neural Network Toolbox представлен в табл. 4.

4

Таблица 4 — Код на MATLAB (Neural Network Toolbox)

program1.m

%Для MATLAB R2018b (9.5.0.944444) Pro

%Программа, написанная с использованием функций Neural Network Toolbox clear all; close all; clc;

%=== Исходные данные ===

%Обучающая выборка из 15 точек

P = [ 3

 

5

4 6 -4 -2 -4 -3

 

6

6

8

7 -2 -4 -2 -3;

 

 

-1 -1 -3

1 -2 -2 -4 -4

 

9

6

6

4 6 4 4 2];

% Результаты классификации точек

обучающей выборки

T1

=

[0

0

0 0

1 1

1

1 0 0 0

0

1

1

1 1]; % Классификация I (слева-направо)

T2

=

[0

0

0 0

0 0

0

0 1 1 1

1

1

1

1 1]; % Классификация II (сверху-вниз)

%Отображение графика классификации I точек обучающей выборки figure(1); % Создание окна номер 1 с фигурой

plotpv(P, T1); % Построение графика

%Отображение графика классификации II точек обучающей выборки figure(2); % Создание окна номер 2 с фигурой

plotpv(P, T2); % Построение графика

%Проверочная выборка (14 вариант)

A = [0

1

-1;

1

-1

-1];

%Минимальные и максимальные значения координат min_c = min([-10, P(1, :), P(2, :)]);

max_c = max([+10, P(1, :), P(2, :)]);

%=== Построение персептрона с помощью функций Neural Network Toolbox ===

%Создание перцептрона с 2 входами и 2 нейронами

%В качестве функции активации персептрона по умолчанию

%используется функция hardlim (Hard-limit transfer function)

net = newp([min_c max_c; min_c max_c], 2);

%Установка макс. количества эпох для обучения: 50 net.trainParam.epochs = 50;

%Обучение сети

net = train(net, P, [T1; T2]);

% Моделирование работы персептрона на проверочной выборке a = sim(net, A);

%Визуализация полученного результата figure(3); % Создание окна номер 3 с фигурой

plotpv(horzcat(A, P), horzcat(a, [T1; T2])); % Построение графика axis([min_c max_c min_c max_c]); % Настройка диапазонов осей графика

%Построение классификационных линий

%net.IW - матрица входных весов

%net.b - вектор смещения

plotpc(net.IW{1}, net.b{1});

Для обучения используется функция train.

Функция адаптации — adapt — не используется в задачах кластеризации и классификации (задача данной лабораторной как раз является таковой), т. к. она предназначена для обучения по мере поступления данных (т. е. важен порядок), а задачи кластеризации и классификации решаются по всей совокупности данных без учета их порядка.

5