Разработка самообучающейся системы — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Разработка самообучающейся системы

2017-12-10 302
Разработка самообучающейся системы 0.00 из 5.00 0 оценок
Заказать работу

 

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

 

 

Одна из форм приобретения знаний называется обратной связью. Обучение с помощью обратной связи показано на рисунке.

 

Человек, благодаря механизму обратной связи и уже имеющихся знаний, приобретает новые. Следовательно, человек учится на опыте.

Приблизительно также обучается компьютерная программа. В нее заложен алгоритм хранения фактов и выполнения логических выводов. Логические выводы связаны в программе с постоянно пополняющими ее новыми фактами. Рассмотрим пример самообучающейся системы, который следует рассматривать, исходя из предпосылки: система будет обучаться только в том случае, если она соприкоснулась с чем-то противоречащим ранее извесному.

 

ПРИМЕР РАЗРАБОТКИ САМООБУЧАЮЩЕЙ ЭКСПЕРТНОЙ СИСТЕМЫ

Разработаем систему, которая должна понимать различия между страусом и сорокой. Некоторые свойства, отличающие страуса от сороки, приведены на рисунке:

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

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

 

ВВЕДИТЕ ИМЯ ОБЪЕКТА 1?

ВВЕДИТЕ ИМЯ ОБЪЕКТА 2?

 

Прежде чем программа приступит к описанию одного из объектов, она запросит ввод его атрибутов:

 

ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ENTER В КОНЦЕ

ВВЕДИТЕ АТРИБУТ 1?

ВВЕДИТЕ АТРИБУТ 2?

ВВЕДИТЕ АТРИБУТ 3?

ВВЕДИТЕ АТРИБУТ 4?

и т.д.

 

Затем программа начинает сравнивать введенные атрибуты с атрибутами первого списка. Поскольку первый список пуст результатом сравнения будет оценка нуль, показывающая, что совпадений нет. По тем же причинам и сравнение с атрибутами второго списка. Получив нулевую оценку, программа предположит, что введенные атрибуты относятся к списку 1. Она запросит у пользователя подтверждение этого предположения. В зависимости от ответа пользователя данные будут занесены либо в первый список, либо во второй. В общий список ничего не будет занесено. В дальнейшем при совпадении атрибутов, они будут заносится в общий список.

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

1. Система вносит изменения только в случае, если встречаются противоречия. Это обеспечивается с помощью механизма обратной связи.

2. Система сравнивает введенные атрибуты с атрибутами, хранящимися в ней, пытаясь их идентифицировать и выбрать наиболее похожие. Для этого используются специальные оценки. Вся работа выполняется с помощью механизма логического вывода.

 

 

{САМООБУЧАЮЩАЯ СИСТЕМА}

{ПРОГРАММА ВЫДВИГАЕТ ПРЕДПОЛОЖЕНИЕ ОБ ОБЪЕКТЕ}

{ИСХОДЯ ИЗ ВВЕДЕННЫХ АТРИБУТОВ}

PROGRAM SELF;

LABEL 1,2,3,4;

{L1 - СПИСОК ОБЪЕКТА 1}

{L2 - СПИСОК ОБЪЕКТА 2}

{LС - ОБЩИЙ СПИСОК}

{T - ВРЕМЕННЫЙ БУФЕР ДЛЯ ЗНАЧЕНИЙ АТРИБУТА}

VAR L1,L2,LC,OO1,OO2:ARRAY[1..10] OF STRING;

T:ARRAY[1..11] OF STRING;

I,K,L,S1,S2:INTEGER;

O1,O2,OT:STRING;

KL:BOOLEAN;

 

{ПЕЧАТЬ ВСЕХ СПИСКОВ}

PROCEDURE PR;

BEGIN

WRITE(O1:20);

WRITE(O2:20);

WRITELN('ОБЩИЙ СПИСОК':20);

FOR I:=1 TO 10 DO

BEGIN

WRITELN(OO1[I]:20, OO2[I]:20, LC[I]:20);

END;

END;

 

BEGIN

FOR I:=1 TO 10 DO

BEGIN

L1[I]:='';

L2[I]:='';

LC[I]:='';

OO1[I]:='';

OO2[I]:='';

END;

FOR I:=1 TO 11 DO T[I]:='';

 

WRITE('ВВЕДИТЕ ИМЯ ОБЪЕКТА 1?'); READLN(O1);

WRITE('ВВЕДИТЕ ИМЯ ОБЪЕКТА 2?'); READLN(O2);

 

1:WRITE('БУДИТЕ ВВОДИТЬ АТРИБУТЫ?'); READLN(OT);

IF OT='НЕТ' THEN EXIT;

WRITELN('ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ENTER В КОНЦЕ');

I:=1; KL:=FALSE;

WHILE (I<=11) AND (KL=FALSE) DO

BEGIN

WRITE('ВВЕДИТЕ АТРИБУТ ',I,'?'); READLN(T[I]);

IF T[I]='' THEN KL:=TRUE;

I:=I+1;

END;

 

L:=I-2;

{СРАВНЕНИЕ АТРИБУТОВ СО СПИСКАМИОБЪЕКТОВ 1 И 2}

S1:=0; S2:=0;

FOR I:=1 TO L DO

FOR K:=1 TO 10 DO

BEGIN

IF OO1[K]=T[I] THEN S1:=S1+1;

IF OO2[K]=T[I] THEN S2:=S2+1;

END;

 

{ОБЪЕКТ2 ПРЕДПОЛАГАЕТСЯ ТОЛЬКО, ЕСЛИ ОЦЕНКА 2 БОЛЬШЕ ОЦЕНКИ 1}

IF S1<S2 THEN GOTO 3;

WRITELN('ЭТО ',O1);

WRITE('ВЕРНО ДА ИЛИ НЕТ '); READLN(OT);

IF OT='НЕТ' THEN GOTO 4;

 

{ПОМЕСТИТЬ КАЖДЫЙ АТРИБУТ ВО ВРЕМЕННЫЙ БУФЕР}

{А НЕ В СПИСОК ОБЪЕКТОВ 1 ИЛИ 2 ИЛИ ОБЩИЙ СПИСОК}

{ПЕРЕМЕСТИТЬ АТРИБУТ ИЗ СПИСКА 2 В ОБЩИЙ СПИСОК}

{ЕСЛИ ЭТО НЕОБХОДИМО}

2:FOR I:=1 TO L DO

FOR K:=1 TO 10 DO

BEGIN

IF T[I]=OO2[K] THEN {ПЕРЕМЕСТИТЬ АТРИБУТ ИЗ ВТОРОГО}

FOR L:=1 TO 10 DO {СПИСКА В ОБЩИЙ}

BEGIN

IF LC[L]='' THEN

BEGIN

LC[L]:=OO2[K]; OO2[K]:=''; T[I]:='';

END;

END;

END;

 

FOR I:=1 TO L DO

BEGIN

KL:=FALSE;

K:=1;

WHILE (K<=10) AND (KL=FALSE) DO

BEGIN

IF T[I]='' THEN KL:=TRUE;

IF T[I]=LC[K] THEN KL:=TRUE; {ЕСТЬ В ОБЩЕМ СПИСКЕ}

IF T[I]=OO1[K] THEN KL:=TRUE; {ЕСТЬ В СПИСКЕ ОБЪЕКТА 1}

K:=K+1;

END;

K:=1;

WHILE (K<=10) AND (KL=FALSE) DO

BEGIN

IF OO1[K]='' THEN

BEGIN

OO1[K]:=T[I]; {ПОМЕСТИТЬ ПЕРЕМЕННУЮ В СПИСОК 1}

KL:=TRUE;

END;

K:=K+1;

END;

END;

PR; {ПЕЧАТЬ ВСЕХ СПИСКОВ}

GOTO 1;

 

3:WRITELN('ЭТО ',O2);

WRITELN('ВЕРНО ДА ИЛИ НЕТ'); READLN(OT);

IF OT='НЕТ' THEN GOTO 2;

 

{ПОМЕСТИТЬ КАЖДЫЙ АТРИБУТ ВРЕМЕННОГО БУФЕРА,}

{КОТОРОГО НЕТ В ОБЩЕМ СПИСКЕ И В СПИСКЕ ОБЪЕКТА 2}

{В СПИСОК 2 ПЕРЕМЕСТИТЬ СОВПАДАЮЩИЕ АТРИБУТЫ ИЗ СПИСКА 1}

{В ОБЩИЙ СПИСОК}

4:FOR I:=1 TO L DO

FOR K:=1 TO 10 DO

BEGIN

IF T[I]=OO1[K] THEN

BEGIN

FOR L:=1 TO 10 DO {ПЕРЕМЕСТИТЬ АТРИБУТ ИЗ СПИСКА 1}

BEGIN {В ОБЩИЙ СПИСОК}

IF LC[L]='' THEN

BEGIN

LC[L]:=OO1[K]; OO1[K]:=''; T[I]:='';

END;

END;

END;

END;

 

FOR I:=1 TO L DO

BEGIN

KL:=FALSE;

K:=1;

WHILE (K<=10) AND (KL=FALSE) DO

BEGIN

IF T[I]='' THEN KL:=TRUE;

IF T[I]=LC[K] THEN KL:=TRUE; {ЕСТЬ В ОБЩЕМ СПИСКЕ}

IF T[I]=OO2[K] THEN KL:=TRUE; {ЕСТЬ В СПИСКЕ 2}

K:=K+1;

END;

K:=1;

WHILE (K<=10) AND (KL=FALSE) DO

BEGIN

IF OO2[K]='' THEN {ПЕРЕМЕСТИТЬ ПЕРЕМЕННУЮ В СПИСОК 2}

BEGIN

OO2[K]:=T[I];

KL:=TRUE;

END;

K:=K+1;

END;

END;

PR;

GOTO 1;

END.

 

1. Сохраните введенную программу в созданной рабочей папке.

2. Запустите программу на выполнение. Проверьте работу программы.

3. Введите данные:

 

ВВЕДИТЕ ИМЯ ОБЪЕКТА 1? СТРАУС

ВВЕДИТЕ ИМЯ ОБЪЕКТА 2? СОРОКА

 

'БУДИТЕ ВВОДИТЬ АТРИБУТЫ? ДА

ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ENTER В КОНЦЕ

ВВЕДИТЕ АТРИБУТ 1? ПТИЦА

ВВЕДИТЕ АТРИБУТ 2? НЕ ЛЕТАЕТ

ВВЕДИТЕ АТРИБУТ 3? ДЛИННАЯ ШЕЯ

ВВЕДИТЕ АТРИБУТ 4? ENTER

 

ЭТО СТРАУС

ВЕРНО ДА ИЛИ НЕТ? ДА

 

СТРАУС СОРОКА ОБЩИЙ СПИСОК

ПТИЦА

НЕ ЛЕТАЕТ

ДЛИННАЯ ШЕЯ

 

'БУДИТЕ ВВОДИТЬ АТРИБУТЫ? ДА

ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ENTER В КОНЦЕ

ВВЕДИТЕ АТРИБУТ 1? ПТИЦА

ВВЕДИТЕ АТРИБУТ 2? ЛЕТАЕТ

ВВЕДИТЕ АТРИБУТ 3? КОРОТКАЧ ШЕЯ

ВВЕДИТЕ АТРИБУТ 4? ENTER

 

ЭТО СТРАУС

ВЕРНО ДА ИЛИ НЕТ? НЕТ

 

СТРАУС СОРОКА ОБЩИЙ СПИСОК

НЕ ЛЕТАЕТ ЛЕТАЕТ ПТИЦА

ДЛИННАЯ ШЕЯ КОРОТКАЯ ШЕЯ

 

'БУДИТЕ ВВОДИТЬ АТРИБУТЫ? ДА

ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ENTER В КОНЦЕ

ВВЕДИТЕ АТРИБУТ 1? ПТИЦА

ВВЕДИТЕ АТРИБУТ 2? ЛЕТАЕТ

ВВЕДИТЕ АТРИБУТ 3? ENTER

 

ЭТО СОРОКА

ВЕРНО ДА ИЛИ НЕТ? ДА

 

СТРАУС СОРОКА ОБЩИЙ СПИСОК

НЕ ЛЕТАЕТ ЛЕТАЕТ ПТИЦА

ДЛИННАЯ ШЕЯ КОРОТКАЯ ШЕЯ

 

Примерные варианты заданий

 

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

 


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.035 с.