Федеральное агентство связи ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники
ЛАБОРАТОРНАЯ РАБОТА №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