Файл: Отчет по лабораторной работе 5 по дисциплине Основы искусственного интеллекта.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 42

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




Министерство науки и высшего образования Российской Федерации

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

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

автоматизированных систем
ОТЧЕТ

по лабораторной работе №5

по дисциплине «Основы искусственного интеллекта»
Алгоритм обучения персептрона


Руководитель

А.М. Семенов

«»2023 г.
Студент группы 20ПИнж(б)РПИС

В.В. Машков

«»2023 г.


Оренбург 2022
1 Цель работы

Цель работы:

Изучить алгоритм обучения персептрона.

Задачи работы:

Написать программу моделирующую алгоритм обучения персептрона.
2 Ход работы

Данные для обучения персептрона представлены в таблице 1

Таблица 1 – Набор данных для обучения

Х1

Х2

Х3

выход

2,2

3,1

1,0

1

6,5

3,2

1,0

-1

8,4

4,9

1,0

-1

9,7

6,3

1,0

-1

1,5

6,8

1,0

1

3,1

4,4

1,0

1

5,4

2,2

1,0

-1

6,3

4,4

1,0

1

1,5

6,1

1,0

-1

8,1

2,1

1,0

-1

4,5

3,7

1,0

1

2,1

3,1

1,0

1

6,5

3,4

1,0

-1

4,5

8,3

1,0

1

2,3

2,1

1,0

1

4,4

2,3

1,0

-1

3,0

0,3

1,0

-1

8,1

3,2

1,0

1

4,8

4,2

1,0

1

4,6

2,6

1,0

-1



В качестве функции активации использовалась линейная функция. График функции представлен на рисунке 1.



В процессе обучения нейросети на основе набора данных (таблица 1) и были получены следующие данные (рисунок 2):



Рисунок 2 – результат обучения

На рисунке 3 графически представлена программа классификации. Если выходное значение равно -1, значит точка лежит выше линии, при 1 лежит ниже.



Рисунок 3 – Классификация точке
3 Вывод
В процессе выполнения лабораторной работы был изучен и реализован на языке python с помощью библиотеки numpy алгоритм обучения персептрона.

В результате было получено графическое разбиение входных точек на два класса. На основе полученных данных, заключаем что персептрон правильно классифицирует входные данные.

Приложение А

Код программы

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

cmap_light = ListedColormap(['#FF0000','#00FF00','#0000FF'])

X=np.array([[2.0,3.0,1.0],

[6.3,3.2,1.0],

[8.4,4.9,1.0],

[9.7,6.3,1.0],

[1.5,4.8,1.0],

[3.2,4.4,1.0],

[5.4,2.2,1.0],

[6.3,5.5,1.0],

[8.5,6.1,1.0],

[9.2,2.9,1.0],

[4.5,8.7,1.0],

[3.7,6.2,1.0],

[6.5,3.7,1.0],

[4.9,8.4,1.0],

[2.3,6.2,1.0],

[4.4,2.1,1.0],

[6.2,0.7,1.0],

[8.1,3.2,1.0],

[3.9,4.2,1.0],

[4.7,6.6,1.0]])

Y=np.array([[1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1]]).T
syn0=2*np.random.random((3,4))-1

syn1=2*np.random.random((4,1))-1
for j in range(60000):

l1 = 1/(1+np.exp(-(np.dot(X,syn0))))

l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))

l2_d = (Y-l2)*(l2*(1-l2))

l1_d = l2_d.dot(syn1.T)*(l1*(1-l1))

syn1 += l1.T.dot(l2_d)

syn0 += X.T.dot(l1_d)
print("Выходные данные")

print(l2)
plt.scatter(X[:,0],X[:,1],c=Y)

plt.plot([0,10],[0,10],c='b')

plt.xlim((0,10))

plt.ylim((0,10))
plt.grid(True)

plt.show()