32
Изкуствен интелект Изкуствен интелект Упражнение № 7 спец. Информатика, ФМИ 2005/2006

Изкуствен интелект Упражнение № 7

  • Upload
    camdyn

  • View
    110

  • Download
    1

Embed Size (px)

DESCRIPTION

Изкуствен интелект Упражнение № 7. спец. Информатика, ФМИ 200 5 /200 6. Разсъждения при несигурни знания. Вероятностен подход Бейсови мрежи. P(e|H)P(H). P(A  B). P(H|e)=. P(A|B)=. P(e). P(B). Вероятности (основни формули). Условна вероятност: Формула на Бейс: - PowerPoint PPT Presentation

Citation preview

Page 1: Изкуствен интелект Упражнение № 7

Изкуствен Изкуствен интелектинтелект

Упражнение № 7спец. Информатика, ФМИ

2005/2006

Page 2: Изкуствен интелект Упражнение № 7

Разсъждения при Разсъждения при несигурни знаниянесигурни знания

Вероятностен подходБейсови мрежи

Page 3: Изкуствен интелект Упражнение № 7

Вероятности (основни Вероятности (основни формули)формули)

Условна вероятност:

Формула на Бейс:

Ако събитията A и B са независими:

P(AB)=P(A)P(B)

Ако събитията A и B са несъвместими:

P(AB)=P(A)+P(B)

P(AB)=0 и P(A|B)=0 и P(B|A)=0

P(e|H)P(H)

P(e)P(H|e)=

P(AB)

P(B)P(A|B)=

Page 4: Изкуствен интелект Упражнение № 7

Вероятности (основни Вероятности (основни формули)формули)

P(A)=1 - P(A) P(AB)=P(A)P(B|A)= P(B)P(A|B) P(AB)= P(A)+P(B) - P(A B) P(A)=P(AB)+P(A B) =P(B)P(A|B)+P(B)P(A| B) P(X1 ... Xn)=P(X1) P(X2 |X1) P(X3 |X1 X2)... P(Xn |X1 ... Xn-1)

Ако събитията X1 ... Xn са независими: P(X1 ... Xn)=P(X1) P(X2) P(X3)... P(Xn)

Page 5: Изкуствен интелект Упражнение № 7

Съвместно Съвместно вероятностно вероятностно

разпределениеразпределениеМножество от променливи X1,…,Xn

За всяка комбинация от стойности на променливите се пресмята P(X1,…,Xn)

Sneeze Sneeze

Cold 0.08 0.01Cold 0.01 0.9

P(ColdSneeze)

P(Sneeze)P(Cold|Sneeze)=

0.08

0.08+0.01= = 0.889

Page 6: Изкуствен интелект Упражнение № 7

Вероятностни Вероятностни разсъжденияразсъждения

n възможни независими диагнози: d1,…,dn

e - множество от симптоми Известни са p(di) P(e|di) I=1,...,n

)(

)|()()|(

eP

dePdPedP ii

i

n

i

iin

ii eP

dePdPedP

11

1)(

)|()()|(

n

iii dePdPeP

1

)|()()(

Page 7: Изкуствен интелект Упражнение № 7

““Naïve” BayesNaïve” Bayes

Предположение за независимост на симптомите: е={е1,...,ек}

k

jiji dePdeP

1

)|()|(

Page 8: Изкуствен интелект Упражнение № 7

ПримерПример

Prob Well Cold Allergy

P(d) 0.9 0.05 0.05

P(Sneeze|d) 0.1 0.9 0.9

P(Cough|d) 0.1 0.8 0.7

P(Fever|d) 0.01 0.7 0.4

Page 9: Изкуствен интелект Упражнение № 7

ПримерПример

Симптоми: sneeze & cough & no fever p(well | e)=(0.9)(0.1)(0.1)(0.99)/P(e)=0.0089/P(e) p(cold | e)=(0.05)(0.9)(0.8)(0.3)/P(e)=0.01/P(e) p(allergy | e)=(0.05)(0.9)(0.7)(0.6)/P(e)=0.019/P(e)

Диагноза: allergy p(e)=0.0089+0.01+0.019=0.0379 p(well | e)=0.23 p(cold | e)=0.26 p(allergy | e)=0.50

Page 10: Изкуствен интелект Упражнение № 7

Представяне на Представяне на даннитеданните

example(79,11,[age = 2,sex = 1,histolic_type = 2, degree_of_diffe = 1,bone = 2,bone_marrow = 2,lung = 2,pleura = 2,peritoneum = 1,liver = 1,brain = 2, shin = 2,neck = 2,supraclavicular = 2,axillar = 2, mediastinum = 2,abdominal = 2]).

example(115,18,[age = 3,sex = 2,degree_of_diffe = 3, bone = 2,bone_marrow = 2,lung = 2,pleura = 2, peritoneum = 2,liver = 2,brain = 2,shin = 2,neck=2, supraclavicular = 2,axillar = 2,mediastinum = 2, abdominal = 1]).

example(103,8,[age = 3,sex = 2,histolic_type = 2, degree_of_diffe = 1,bone = 2,bone_marrow = 2,

lung = 1,pleura = 2,peritoneum = 2,liver = 2,

brain = 2,shin = 2,neck = 2,supraclavicular= 2, axillar = 2,mediastinum = 2,abdominal = 2]).

Page 11: Изкуствен интелект Упражнение № 7

% data: example( Id, Class, [A1=V1,…,An=Vn]).

& P(Class)

prob(Class,PC) :-prob(Class,PC) :-

findall(Id,example(Id,_,_),All),findall(Id,example(Id,_,_),All),

length(All,N),length(All,N),

findall(Id,example(Id,Class,_),All_Class),findall(Id,example(Id,Class,_),All_Class),

length(All_Class,M),length(All_Class,M),

PC is M/N.PC is M/N.

Page 12: Изкуствен интелект Упражнение № 7

% data: example( Id, Class, [A1=V1,…,An=Vn]).

% P( Symptoms | Class)

cond_prob([],_,1).cond_prob([],_,1).

cond_prob([AV|Rest],Class,P) :-cond_prob([AV|Rest],Class,P) :-

findall(I,example(I,Class,_),All),findall(I,example(I,Class,_),All),

length(All,N),length(All,N),

findall(Id,findall(Id,

(example(Id,Class,AVL),(example(Id,Class,AVL),

member(AV,AVL)),member(AV,AVL)),

Class_AV),Class_AV),

length(Class_AV,M),length(Class_AV,M),

cond_prob(Rest,Class,P1),cond_prob(Rest,Class,P1),

P is P1*M/N.P is P1*M/N.

Page 13: Изкуствен интелект Упражнение № 7

Генериране на всички Генериране на всички решениярешения

В основни линии

setof(X, p(X), L)

свързва L с множеството от всички екземпляри на X, за които в Пролог p(X) успява

Page 14: Изкуствен интелект Упражнение № 7

Предикатът setof/3 пропада, когато множеството, което се генерира е празно. Това негово свойство е съществено за неговото корекно поведение в сложни ситуации и е много полезно. Това означава че този предикат ще помогне да се решат едновременно и двата ни основни проблема

Page 15: Изкуствен интелект Упражнение № 7

ПримерПримерlikes(bill, cider).

likes(dick, beer).

likes(harry, beer).

likes(jan, cider).

likes(tom, beer).

likes(tom, cider).

| ?- setof(X, likes(X,Y), S).

S = [dick,harry,tom],

Y = beer ? ;

S = [bill,jan,tom],

Y = cider ?

| ?- setof((Y,S), setof(X, likes(X,Y), S), SS).

SS = [(beer,[dick,harry,tom]),(cider,[bill,jan,tom])]

Page 16: Изкуствен интелект Упражнение № 7

Пример Пример

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

Y^Q

означава че “съществува Y такова че Q е true”, където Y е някаква променлива в Пролог.

| ?- setof(X, Y^(likes(X,Y)), S).

S = [bill,dick,harry,jan,tom]

Page 17: Изкуствен интелект Упражнение № 7

% data: example( Id, Class, [A1=V1,…,An=Vn]).

% max P(Diag | Symptoms)

bayes(Sympt,Diag,PD) :-bayes(Sympt,Diag,PD) :-

setof(C,Id^AV^example(Id,C,AV),Class),setof(C,Id^AV^example(Id,C,AV),Class),

findall(C/P,(member(C,Class),findall(C/P,(member(C,Class),

cond_prob(Sympt,C,PSC),cond_prob(Sympt,C,PSC),

prob(C,PC),prob(C,PC),

P is PSC*PC),All),P is PSC*PC),All),

summa(All,PD2), % P(Sypmt)summa(All,PD2), % P(Sypmt)

max(All,Diag/PDmax(All,Diag/PD11)),,

PD is PD1/PD2.PD is PD1/PD2.

Page 18: Изкуствен интелект Упражнение № 7

% P(Symptoms)

summa([],0).summa([],0).

summa([_/P |Rest],PD):-summa([_/P |Rest],PD):-

summa(Rest,PRest),summa(Rest,PRest),

PD is P + PRest.PD is P + PRest.

max([X/M|T],Z/K) :- max([X/M|T],Z/K) :-

max(T,Z/K), K>M, !.max(T,Z/K), K>M, !.

max([X/M|_],X/M).max([X/M|_],X/M).

Page 19: Изкуствен интелект Упражнение № 7

| ?- bayes([histolic_type=1,bone=2,| ?- bayes([histolic_type=1,bone=2,

bone_marrow=2,lung=2], Class,P).bone_marrow=2,lung=2], Class,P).

P = 0.5435430611339668,P = 0.5435430611339668,

Class = 2 ? Class = 2 ?

yesyes

| ?- bayes([histolic_type = 1 , bone = 2 , | ?- bayes([histolic_type = 1 , bone = 2 , bone_marrow = 2 , lung = 2 , bone_marrow = 2 , lung = 2 ,

pleura = 1 , peritoneum = 2 , pleura = 1 , peritoneum = 2 ,

liver = 2 ], Class,P).liver = 2 ], Class,P).

P = 0.6492238977325229,P = 0.6492238977325229,

Class = 1 ? Class = 1 ?

yesyes

Page 20: Изкуствен интелект Упражнение № 7

Бейсови мрежиБейсови мрежи

Насочен ацикличен граф: възлите са събития(променливи) предшественици (родители) на един възел N

са такива събития(променливи), от които N директно зависи

с възлите, които имат предшественици са асоциирани таблици с условни вероятности

с възлите, които нямат предшественици са асоциирани таблици с априорни вероятности

Page 21: Изкуствен интелект Упражнение № 7

Бейсови мрежиБейсови мрежи За един и същи проблем могат да бъдат

построени различни Бейсови мрежи, но някои от тях са по-добри за решаване на конкретния проблем от други.

Добрите Бейсови мрежи отчитат зависимостите между променливите

Page 22: Изкуствен интелект Упражнение № 7

Бейсови мрежиБейсови мрежи

leaving

smoke

report

alarm

fire tamperingP(f)

0.01

P(t)

0.02

P(s)

0.9

f

yes

no 0.01

P(l)

0.88

a

yes

no 0.001P(r)

0.75

l

yes

no 0.01

P(a)

0.5

0.0001

0.99

t

yes

no

no

yes 0.85

f

yes

no

yes

no

Page 23: Изкуствен интелект Упражнение № 7

ТТипове връзкиипове връзки

xxyyzz: xx и zz са независими относно yy xxyy z z или x x yyzz : xx и zz са независими

относно yy x x y y z z : xx и zz са независими относно yy без

наличието на информация за стойността на y. y. При дадена стойност за yy или негови наследници - те стават зависими. Например: fire fire alarm alarm tampering. tampering. Ако има аларма и пожар, вероятността за някаква друга намеса, която да е включила алармата е по-малка

Page 24: Изкуствен интелект Упражнение № 7

ВВидове изводидове извод

диагностика - от следствието към причината: p(fire|alarm)p(fire|alarm)

предсказване - от причината към следствието: p(alarm|fire)p(alarm|fire)

междупричинен извод - между причините на дадено следствие: p(tampering|fire)p(tampering|fire)

смесен извод - комбинация от горните три: p(alarm|report p(alarm|report fire)fire)

Page 25: Изкуствен интелект Упражнение № 7

Вероятности (формули)Вероятности (формули)

P(X1 X2 |Cond)= P(X1 |Cond) P(X2 | X1 Cond)

P(X |Y1 ... X ...)= 1

P(X |Y1 ... X ...)= 0

P( X|Cond)= 1 - P(X |Cond)

Ако Cond0=Y Cond, където Y е наследник на X в Бейсовата мрежа то P(X |

Cond0)= P(X |Cond) P(Y | X Cond) / P(Y | Cond)

Ако Cond не съдържа наследници на X

Ако X няма предшественици/родители, то P(X |Cond)= P(X ) и P(X ) е

дадена априорна вероятност

Ако X има предшественици/родители Parents, то

P(X |Cond)=Spossible_states(Parents) P(X |S) P(S|Cond)

Page 26: Изкуствен интелект Упражнение № 7

% Belief network ‘sensor’% Belief network ‘sensor’

% p(Node,Prob)- node without parent% p(Node,Prob)- node without parent

parent(fire,smoke).parent(fire,smoke).

parent(fire,alarm).parent(fire,alarm).

parent(tampering,alarm).parent(tampering,alarm).

parent(alarm,leaving).parent(alarm,leaving).

parent(leaving,report).parent(leaving,report).

Page 27: Изкуствен интелект Упражнение № 7

% p(Node,PrentStates, Prob)% p(Node,PrentStates, Prob)

% Prob = p(Node|ParentStates)% Prob = p(Node|ParentStates)

p(fire,0.01).p(fire,0.01).

p(tampering,0.02).p(tampering,0.02).

p(smoke,[fire],0.9).p(smoke,[fire],0.9).

p(smoke,[not fire],0.01).p(smoke,[not fire],0.01).

p(alarm,[fire, tampering],0.5).p(alarm,[fire, tampering],0.5).

p(alarm,[not fire,not tampering],0.0001).p(alarm,[not fire,not tampering],0.0001).

p(alarm,[fire, not tampering],0.99).p(alarm,[fire, not tampering],0.99).

p(alarm,[not fire, tampering],0.85).p(alarm,[not fire, tampering],0.85).

p(leaving,[alarm],0.88). p(leaving,[alarm],0.88).

p(leaving,[not alarm],0.001).p(leaving,[not alarm],0.001).

p(report,[leaving],0.75).p(report,[leaving],0.75).

p(report,[not leaving],0.01).p(report,[not leaving],0.01).

Page 28: Изкуствен интелект Упражнение № 7

% prob(Event,Condition,P)% prob(Event,Condition,P); ; P(X1 X2 |Cond)= P(X1 |Cond) P(X2 | X1 Cond)prob([X|Xs], Cond, P):-!,prob([X|Xs], Cond, P):-!,prob(X,Cond,Px),prob(X,Cond,Px),prob(Xs,[X|Cond],PRest),prob(Xs,[X|Cond],PRest),P is Px * PRest.P is Px * PRest.

prob([],_,1):-!.prob([],_,1):-!.; ; P(X |Y1 ... X ...)= 1prob(X,Cond,1):-prob(X,Cond,1):-member(X,Cond),!.member(X,Cond),!.

; ; P(X |Y1 ... X ...)= 0 prob(X,Cond,0):-prob(X,Cond,0):-member(not X,Cond),!.member(not X,Cond),!.

; P( X|Cond)= 1 - P(X |Cond) prob(not X,Cond,P):-!,prob(not X,Cond,P):-!,prob(X,Cond,P0),prob(X,Cond,P0),P is 1-P0.P is 1-P0.

Page 29: Изкуствен интелект Упражнение № 7

; ; Ако Cond0=Y Cond, където Y е наследник на X в Бейсовата

; ; мрежа то P(X |Cond0)= P(X |Cond) P(Y | X Cond) / P(Y | Cond) prob(X, Cond0, P):-prob(X, Cond0, P):-

delete(Y,Cond0,Cond),delete(Y,Cond0,Cond),predecessor(X,Y),!,predecessor(X,Y),!,prob(X,Cond,Px),prob(X,Cond,Px),prob(Y,[X|Cond],PyGivenX),prob(Y,[X|Cond],PyGivenX),prob(Y,Cond,Py),prob(Y,Cond,Py),P is Px * PyGivenX / Py.P is Px * PyGivenX / Py.

; ; Ако Cond не съдържа наследници на X

Ако X няма предшественици/родители, то P(X |Cond)= P(X ) и P(X ) е дадена

априорна вероятност

Ако X има предшественици/родители Parents, то

P(X |Cond)=Spossible_states(Parents) P(X |S) P(S|Cond)

prob(X,Cond,P):-prob(X,Cond,P):-p(X,P),!.p(X,P),!.

prob(X,Cond,P):-prob(X,Cond,P):-findall(CONDi/Pi,p(X,CONDi,Pi),CPList),findall(CONDi/Pi,p(X,CONDi,Pi),CPList),sum_probs(CPList,Cond,P).sum_probs(CPList,Cond,P).

Page 30: Изкуствен интелект Упражнение № 7

sum_probs([],_,0).sum_probs([],_,0).

sum_probs([COND1/P1|CondsProbs],COND,P):-sum_probs([COND1/P1|CondsProbs],COND,P):-

prob(COND1,COND,PC1),prob(COND1,COND,PC1),

sum_probs(CondsProbs,COND,PRest),sum_probs(CondsProbs,COND,PRest),

P is P1 * PC1 + PRest.P is P1 * PC1 + PRest.

predecessor(X,not Y):-!,predecessor(X,not Y):-!,

predecessor(X,Y).predecessor(X,Y).

predecessor(X,Y):-predecessor(X,Y):-

parent(X,Y),!.parent(X,Y),!.

predecessor(X,Z):-predecessor(X,Z):-

parent(X,Y),parent(X,Y),

predecessor(Y,Z).predecessor(Y,Z).

Page 31: Изкуствен интелект Упражнение № 7

| ?- prob(fire,[alarm],P). % диагностика

P = 1.0e-002 ?

yes

| ?- prob(alarm,[fire],P). % предсказване

P = 0.9802 ?

yes

| ?- prob(tampering,[fire],P). % междупричинен извод

P = 2.0e-002 ?

yes

| ?- prob(alarm,[report, not fire],P). % смесен извод

P = 1.7098000000000002e-002 ?

yes

Page 32: Изкуствен интелект Упражнение № 7

Марковски веригиМарковски вериги

Специален вид Бейсови мрежи

S0 S4S3S2S1

p(Sp(St+1t+1| S| S0 0 SS11......SSt t )= p(S)= p(St+1t+1| S| St t ))

St е състоянието в момента t

Интуитивно St съдържа цялата информация за историята (миналото), която може да влияе (има отношение) на бъдещето

"Миналото е независимо от бъдещето"