Разработка ИИ в КС Отчет №3
.pdfМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Федеральное государственное бюджетное образовательное учреждение Высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М. А. Бонч-Бруевича» (СПбГУТ)
Факультет Информационных технологий и программной инженерии
Кафедра Программной инженерии
Лабораторная работа 3
По дисциплине: Разработка приложений искусственного интеллекта в киберфизических системах Вариант №1
Выполнил студент: Яковлев М. А. Андреев А. А.
Блинов И. С. ИКПИ-32 Приняла работу: Березкин А. А. Дата выполнения: «20» марта 2026 г.
Санкт-Петербург 2026 г.
Постановка задачи
В соответствии с индивидуальным заданием необходимо построить однослойный персептрон, который выполняет классификацию на 3 класса. Координаты проверочных точек и их ожидаемые номера классов: [0;0] – класс 1, [1;1] – класс 2, [–1;–1] – класс 3. Требуется сгенерировать обучающую выборку (не менее трёх точек на каждый класс), обучить на ней персептрон и затем классифицировать заданные проверочные точки. В процессе обучения необходимо визуализировать изменение разделяющих линий, а по окончании – представить график с обучающими точками, линиями и результатом классификации. Контрольный вопрос №1.
Ход работы
Теоретические сведения
Основу любой искусственной нейронной сети составляют простые вычислительные элементы – искусственные нейроны, каждый из которых имитирует работу биологического нейрона. В данной работе изучается однослойный персептрон – одна из первых и наиболее простых моделей нейронных сетей, предложенная Марком Розенблаттом в 1957 году. Персептрон состоит из одного слоя нейронов, каждый из которых имеет пороговую (бинарную) функцию активации. Такой нейрон вычисляет взвешенную сумму входных сигналов:
= ∑ +
=1
где wi – синаптические веса, b – смещение (порог). Затем к сумме применяется функция активации hardlim, которая возвращает 1, если ≥ 0 , и 0 в противном случае. Именно благодаря пороговой нелинейности персептрон способен разделять пространство признаков на две области с помощью гиперплоскости. Для классификации на K классов необходимо использовать m нейронов, где = log2 , поскольку каждый нейрон выдаёт один бит информации, и комбинация из m битов позволяет закодировать до 2^m различных классов. Для трёх классов достаточно двух нейронов, а выходные кодировки могут быть выбраны, например, так: класс 1 → [0; 0], класс 2 → [0; 1], класс 3 → [1; 0]. Важно отметить, что персептрон способен успешно обучаться только на линейно разделимых данных; если классы не могут быть разделены прямыми (гиперплоскостями), сеть не сойдётся. В данной задаче классы расположены в разных углах координатной плоскости, что обеспечивает их линейную разделимость.
Выборка и обучение
Обучающая выборка была сгенерирована случайным образом для трёх классов с центрами в точках (0,0), (1,1) и (–1,–1) (рис. 1). Вокруг каждого центра в круге радиусом 0,3 было создано по 5 точек (всего 15 точек). Для каждого класса выходной вектор задавался в соответствии с выбранной кодировкой: класс 1 – [0;0], класс 2 – [0;1], класс 3 – [1;0]. Приведём полученные координаты точек (таблица 1). Линейная разделимость обеспечивается тем, что облака точек находятся в разных квадрантах: класс 1 – вокруг начала координат, класс 2 – в первом квадранте (положительные x1 и x2), класс 3 – в третьем квадранте (отрицательные x1 и x2). Между ними можно провести прямые линии, которые разделят эти области.
2
Рисунок 1 - Создание точек
На рисунке 1 показано графическое представление обучающей выборки: синими квадратами обозначены точки класса 1, красными крестиками – класса 2, зелёными кружками – класса 3. Отчётливо видно, что группы точек расположены компактно и не пересекаются, что подтверждает их линейную разделимость. Во время обучения алгоритм двигает эти линии, пока каждая точка не попадёт в правильную зону. Если точка классифицирована неверно, веса W и
смещения b корректируются так, чтобы линия сдвинулась ближе к ошибочной точке. Пунктирные линии на графике показывают, как эти границы эволюционируют от случайного положения до идеального разделения всех классов.
Обучающая выборка сгенерирована случайным образом вокруг центров классов:
·Класс 1: центр (0,0)
·Класс 2: центр (1,1)
·Класс 3: центр (–1,–1)
Каждый класс содержит по 5 точек, разбросанных в круге радиусом 0,3. Всего 15 точек. Выходные кодировки:
·Класс 1 → [0; 0]
·Класс 2 → [0; 1]
·Класс 3 → [1; 0]
Таблица 1 - Проверочные точки
№ |
x1 |
x2 |
Ожидаемый класс |
1 |
0 |
0 |
1 |
2 |
1 |
1 |
2 |
3 |
-1 |
-1 |
3 |
|
|
|
|
3
Тестирование
На итоговом графике (рис. 2) отображены: обучающие точки с цветовой и маркерной дифференциацией по классам;
·две разделяющие линии (чёрные пунктирные);
·проверочные точки
На графиках отражены этапы раннего обучения и завершающего этапа:
Рисунок 2 - График на ранних этапах
Рисунок 3 - Верная классификация точек
Вывод
Входе выполнения лабораторной работы была изучена модель однослойного персептрона
иего архитектура. Реализована программа на языке MatLab, которая генерирует обучающую выборку с тремя линейно разделимыми классами, обучает персептрон с использованием правила коррекции весов и визуализирует процесс обучения (изменение разделяющих линий). Полученные результаты показывают, что персептрон успешно справляется с задачей классификации при условии линейной разделимости данных.
Контрольный вопрос
1.Структура персептронного нейрона. Персептронный нейрон включает входные синапсы с весами w , сумматор, вычисляющий взвешенную сумму, и нелинейный преобразователь с пороговой функцией активации (hardlim).
4
Программа
5
6
