|
|
||
|---|---|---|
| .. | ||
| Animals.ipynb | ||
| FamilyOntology.ipynb | ||
| MSConceptGraph.ipynb | ||
| README.md | ||
| assignment.md | ||
README.md
Kunskapsrepresentation och expertsystem
Sketchnote av Tomomi Imura
Jakten pÄ artificiell intelligens bygger pÄ en sökning efter kunskap, för att skapa mening i vÀrlden pÄ liknande sÀtt som mÀnniskor gör. Men hur kan man gÄ till vÀga för detta?
För- förelÀsningsquiz
I AI:s tidiga dagar var den top-down-baserade metoden för att skapa intelligenta system (diskuterad i föregÄende lektion) populÀr. Idén var att extrahera kunskap frÄn mÀnniskor till nÄgon maskinlÀsbar form, och sedan anvÀnda den för att automatiskt lösa problem. Denna metod baserades pÄ tvÄ stora idéer:
- Kunskapsrepresentation
- Resonemang
Kunskapsrepresentation
Ett av de viktiga begreppen inom Symbolisk AI Àr kunskap. Det Àr viktigt att skilja kunskap frÄn information eller data. Till exempel kan man sÀga att böcker innehÄller kunskap, eftersom man kan studera böcker och bli expert. Men vad böcker egentligen innehÄller kallas data, och genom att lÀsa böcker och integrera dessa data i vÄr vÀrldsmodell omvandlar vi data till kunskap.
â Kunskap Ă€r nĂ„got som finns i vĂ„rt huvud och representerar vĂ„r förstĂ„else av vĂ€rlden. Den erhĂ„lls genom en aktiv inlĂ€rningsprocess, som integrerar informationsbitar vi fĂ„r till vĂ„r aktiva modell av vĂ€rlden.
Ofta definierar vi inte kunskap strikt, utan vi relaterar det till andra nÀrliggande begrepp med hjÀlp av DIKW Pyramid. Den innehÄller följande begrepp:
- Data Àr nÄgot representerat i fysisk media, sÄsom skriven text eller talade ord. Data existerar oberoende av mÀnniskor och kan överföras mellan personer.
- Information Àr hur vi tolkar data i vÄrt huvud. Till exempel, nÀr vi hör ordet dator, har vi nÄgon förstÄelse av vad det Àr.
- Kunskap Àr information som integrerats i vÄr vÀrldsmodell. Till exempel, nÀr vi lÀr oss vad en dator Àr, fÄr vi idéer om hur den fungerar, hur mycket den kostar och vad den kan anvÀndas till. Detta nÀtverk av sammanlÀnkade begrepp bildar vÄr kunskap.
- Visdom Àr en ytterligare nivÄ av vÄr förstÄelse av vÀrlden, och representerar meta-kunskap, t.ex. nÄgon insikt om hur och nÀr kunskapen bör anvÀndas.
Bild frÄn Wikipedia, Av Longlivetheux - Egna arbeten, CC BY-SA 4.0
SÄledes Àr problemet med kunskapsrepresentation att finna ett effektivt sÀtt att representera kunskap i en dator i form av data, för att göra den automatiskt anvÀndbar. Detta kan ses som ett spektrum:
Bild av Dmitry Soshnikov
- Till vÀnster finns mycket enkla typer av kunskapsrepresentationer som datorer kan anvÀnda effektivt. Den enklaste Àr algoritmisk, dÀr kunskap representeras av ett datorprogram. Detta Àr dock inte det bÀsta sÀttet att representera kunskap, eftersom det inte Àr flexibelt. Kunskap i vÄrt huvud Àr ofta icke-algoritmisk.
- Till höger finns representationer som naturlig text. Det Àr den mest kraftfulla, men kan inte anvÀndas för automatiskt resonemang.
â TĂ€nk en minut pĂ„ hur du representerar kunskap i ditt huvud och omvandlar den till anteckningar. Finns det nĂ„got sĂ€rskilt format som fungerar bra för att hjĂ€lpa dig att minnas?
Klassificering av datorbaserade kunskapsrepresentationer
Vi kan klassificera olika datorbaserade metoder för kunskapsrepresentation i följande kategorier:
- NĂ€tverksrepresentationer baseras pĂ„ att vi har ett nĂ€tverk av sammanlĂ€nkade begrepp i huvudet. Vi kan försöka reproducera samma nĂ€tverk som en graf i en dator â ett sĂ„ kallat semantiskt nĂ€tverk.
- Objekt-Attribut-VÀrde-tripletter eller attribut-vÀrde-par. Eftersom en graf kan representeras i en dator som en lista av noder och kanter kan vi representera ett semantiskt nÀtverk med en lista av tripletter som innehÄller objekt, attribut och vÀrden. Exempelvis bygger vi följande tripletter om programmeringssprÄk:
| Objekt | Attribut | VĂ€rde |
|---|---|---|
| Python | Àr | Untyped-Language |
| Python | uppfunnet-av | Guido van Rossum |
| Python | block-syntax | indentering |
| Untyped-Language | har inte | typedeklarationer |
â Fundera pĂ„ hur tripletter kan anvĂ€ndas för att representera andra typer av kunskap.
-
Hierarkiska representationer betonar att vi ofta skapar en hierarki av objekt i vÄrt huvud. Till exempel vet vi att kanariefÄgel Àr en fÄgel, och alla fÄglar har vingar. Vi har ocksÄ en uppfattning om vilken fÀrg en kanariefÄgel brukar ha och dess flyghastighet.
- Ramrepresentation (frame) baseras pÄ att varje objekt eller objektklass representeras som en ram som innehÄller fack (slots). Facken har möjliga standardvÀrden, vÀrderestriktioner eller lagrade procedurer som kan anropas för att hÀmta ett vÀrde. Alla ramar bildar en hierarki liknande en objektklasshierarki i objektorienterade programmeringssprÄk.
- Scenarier Àr en speciell typ av ramar som representerar komplexa situationer som kan utvecklas över tid.
Python
| Fack | VÀrde | StandardvÀrde | Intervall |
|---|---|---|---|
| Namn | Python | ||
| Ăr | Untyped-Language | ||
| Variabelstil | CamelCase | ||
| ProgramlÀngd | 5-5000 rader | ||
| Blocksyntax | Indent |
-
Procedurala representationer baseras pÄ att representera kunskap som en lista av ÄtgÀrder som kan utföras nÀr ett visst villkor intrÀffar.
- Produktionsregler Àr om-dÄ-uttalanden som gör att vi kan dra slutsatser. Till exempel kan en lÀkare ha en regel som sÀger att OM en patient har hög feber ELLER hög nivÄ av C-reaktivt protein i blodtest Sà har patienten inflammation. NÀr vi stöter pÄ ett av villkoren kan vi dra en slutsats om inflammation och anvÀnda den i fortsatta resonemang.
- Algoritmer kan ses som en annan form av procedural representation, men de anvÀnds nÀstan aldrig direkt i kunskapsbaserade system.
-
Logik föreslogs ursprungligen av Aristoteles som ett sÀtt att representera universell mÀnsklig kunskap.
- Predikatlogik som matematisk teori Àr för rik för att kunna berÀknas, dÀrför anvÀnds normalt en delmÀngd, som Horn-klasuler i Prolog.
- Deskriptiv logik Àr en familj av logiska system som anvÀnds för att representera och resonera om objektshierarkier och distribuerade kunskapsrepresentationer sÄsom semantiskt web.
Expertsystem
En av de tidiga framgĂ„ngarna för symbolisk AI var de sĂ„ kallade expertsystemen â datasystem utformade för att agera som experter inom ett begrĂ€nsat problemomrĂ„de. De byggde pĂ„ en kunskapsbas extraherad frĂ„n en eller flera mĂ€nskliga experter, och innehöll en slutledningsmotor som utförde resonemang ovanpĂ„ den.
![]() |
![]() |
|---|---|
| Förenklad struktur av ett mÀnskligt nervsystem | Arkitektur för ett kunskapsbaserat system |
Expertsystem byggs som det mÀnskliga resonemangssystemet, som innehÄller korttidsminne och lÄngtidsminne. PÄ liknande sÀtt skiljer vi inom kunskapsbaserade system följande komponenter:
- Problemminne: innehĂ„ller kunskap om det problem som för nĂ€rvarande löses, t.ex. patientens temperatur eller blodtryck, om han har inflammation eller inte etc. Denna kunskap kallas Ă€ven statisk kunskap, eftersom det Ă€r en ögonblicksbild av vad vi för nĂ€rvarande vet om problemet â det sĂ„ kallade problemets tillstĂ„nd.
- Kunskapsbas: representerar lÄngtidskunskap om ett problemomrÄde. Den extraheras manuellt frÄn mÀnskliga experter och Àndras inte mellan konsultationer. Eftersom den lÄter oss navigera frÄn ett problemstillstÄnd till ett annat kallas den Àven dynamisk kunskap.
- Slutledningsmotor: orkestrerar hela processen att söka i problemets tillstÄndsrum, stÀller frÄgor till anvÀndaren vid behov. Den ansvarar ocksÄ för att hitta rÀtt regler att applicera pÄ varje tillstÄnd.
Som exempel, lÄt oss betrakta följande expertsystem för att bestÀmma ett djur baserat pÄ dess fysiska egenskaper:
Bild av Dmitry Soshnikov
Detta diagram kallas för ett AND-OR-trÀd och Àr en grafisk representation av en uppsÀttning produktionsregler. Att rita ett trÀd Àr anvÀndbart i början nÀr kunskap ska extraheras frÄn experten. För att representera kunskap i datorn Àr det oftare lÀmpligare att anvÀnda regler:
IF the animal eats meat
OR (animal has sharp teeth
AND animal has claws
AND animal has forward-looking eyes
)
THEN the animal is a carnivore
Du kan notera att varje villkor pÄ vÀnstra sidan av regeln och ÄtgÀrden i princip Àr objekt-attribut-vÀrde (OAV) tripletter. Arbetsminnet innehÄller uppsÀttningen av OAV-tripletter som motsvarar det problem som för nÀrvarande löses. En regelmotor söker efter regler vars villkor uppfylls och tillÀmpar dem, och lÀgger till en ny triplet i arbetsminnet.
â Skriv ditt eget AND-OR-trĂ€d om ett Ă€mne som intresserar dig!
FramÄt- vs bakÄtslutledning
Processen som beskrivs ovan kallas framÄtslutledning. Den startar med viss initial data om problemet som finns i arbetsminnet och utför sedan följande resonemangsloop:
- Om mĂ„l-attributet finns i arbetsminnet â stoppa och ge resultatet
- Leta efter alla regler vars villkor för nĂ€rvarande Ă€r uppfyllda â fĂ„ en konfliktsats av regler.
- Utför konfliktlösning â vĂ€lj en regel som ska köras i detta steg. Det kan finnas olika strategier:
- VÀlj den första tillÀmpliga regeln i kunskapsbasen
- VÀlj en slumpmÀssig regel
- VÀlj en mer specifik regel, d.v.s. den som uppfyller flest villkor i vÀnstra sidan (LHS)
- TillÀmpa vald regel och lÀgg till en ny kunskapsbit i problemets tillstÄnd
- Upprepa frÄn steg 1.
I vissa fall kanske man vill börja med tom kunskap om problemet och stÀlla frÄgor som hjÀlper oss att nÄ en slutsats. Till exempel vid medicinsk diagnos utförs vanligtvis inte alla medicinska analyser pÄ förhand innan diagnos. Vi vill snarare göra analyser nÀr ett beslut behöver fattas.
Denna process kan modelleras med bakĂ„tslutledning. Den styrs av mĂ„let â det attributvĂ€rde vi söker:
- VĂ€lj alla regler som kan ge mĂ„l-vĂ€rdet (d.v.s. med mĂ„let pĂ„ högersidan (RHS)) â konfliktmĂ€ngd
- Om det inte finns nĂ„gra regler för detta attribut, eller det finns en regel som sĂ€ger att vĂ€rdet ska frĂ„gas frĂ„n anvĂ€ndaren â frĂ„ga efter det, annars:
- AnvĂ€nd konfliktlösningsstrategi för att vĂ€lja en regel som anvĂ€nds som hypotes â vi försöker bevisa den
- Upprepa processen rekursivt för alla attribut i vÀnstra sidan av regeln som mÄl
- Om processen misslyckas â anvĂ€nd en annan regel i steg 3
â I vilka situationer Ă€r framĂ„tslutledning mest lĂ€mplig? Hur Ă€r det med bakĂ„tslutledning?
Implementering av expertsystem
Expertsystem kan implementeras med olika verktyg:
- Programmera dem direkt i nÄgot högnivÄprogrammeringssprÄk. Detta Àr inte bÀsta idén eftersom den största fördelen med ett kunskapsbaserat system Àr att kunskap separeras frÄn slutsatsdragningsprocessen, och potentiellt ska en Àmnesexpert kunna skriva regler utan att nödvÀndigtvis förstÄ inferensens detaljer.
- AnvÀnda ett expertsystemskal, alltsÄ ett system speciellt utformat för att fyllas med kunskap via nÄgot kunskapsrepresentationssprÄk.
âïž Ăvning: Djurslutledning
Se Animals.ipynb för ett exempel pÄ implementering av framÄt- och bakÄtslutande expertsystem.
Notera: Detta exempel Àr ganska enkelt och ger bara en idé om hur ett expertsystem ser ut. NÀr du börjar skapa ett sÄdant system kommer du först att mÀrka nÄgot intelligent beteende frÄn det nÀr du nÄr ett visst antal regler, runt 200+. Vid en viss punkt blir regler för komplexa för att komma ihÄg alla, och dÄ kan du börja undra varför systemet gör vissa beslut. Men viktiga egenskaper hos kunskapsbaserade system Àr att du alltid kan förklara exakt hur ett beslut fattades.
Ontologier och det semantiska webben
I slutet av 1900-talet fanns en initiativ för att anvÀnda kunskapsrepresentation för att annotera internetresurser, sÄ att det skulle vara möjligt att hitta resurser som motsvarar mycket specifika frÄgor. Denna rörelse kallades semantiskt web och byggde pÄ flera koncept:
- En sÀrskild kunskapsrepresentation baserad pÄ deskriptiv logik (DL). Den liknar ramkunskapsrepresentation eftersom den bygger en hierarki av objekt med egenskaper, men har formell logisk semantik och inferens. Det finns en hel familj av DL:er som balanserar mellan uttrycksfullhet och algoritmisk komplexitet i inferens.
- Distribuerad kunskapsrepresentation, dÀr alla begrepp representeras av en global URI-identifikator vilket gör det möjligt att skapa kunskapshierarkier som strÀcker sig över internet.
- En familj av XML-baserade sprÄk för kunskapsbeskrivning: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language).
Ett kÀrnbegrepp inom det semantiska webben Àr begreppet Ontologi. Det avser en explicit specifikation av ett problemomrÄde med hjÀlp av nÄgon formell kunskapsrepresentation. Den enklaste ontologin kan bara vara en hierarki av objekt i ett problemomrÄde, men mer komplexa ontologier inkluderar regler som kan anvÀndas för slutsatser.
I det semantiska webben baseras alla representationer pĂ„ tripletter. Varje objekt och varje relation identifieras unikt med URI. Till exempel, om vi vill ange faktumet att detta AI-lĂ€roplan har utvecklats av Dmitry Soshnikov den 1 januari 2022 â hĂ€r Ă€r tripletterna vi kan anvĂ€nda:
http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date âJan 1, 2022â
http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com
â HĂ€r Ă€r
http://www.example.com/terms/creation-dateochhttp://purl.org/dc/elements/1.1/creatornÄgra vÀlkÀnda och universellt accepterade URI:er för att uttrycka begreppen skapare och skapelsedatum.
I ett mer komplext fall, om vi vill definiera en lista av skapare, kan vi anvÀnda vissa datastrukturer definierade i RDF.
Diagram ovan av Dmitry Soshnikov
Utvecklingen av det semantiska webben fördröjdes delvis av framgÄngen för sökmotorer och tekniker för naturlig sprÄkbearbetning, som tillÄter att extrahera strukturerad data frÄn text. Men inom vissa omrÄden pÄgÄr fortfarande betydande insatser för att underhÄlla ontologier och kunskapsbaser. NÄgra projekt som Àr vÀrda att nÀmna:
- WikiData Àr en samling maskinlÀsbara kunskapsbaser kopplade till Wikipedia. Mest data hÀmtas frÄn Wikipedias InfoBoxes, delar av strukturerat innehÄll inne i Wikipediasidor. Du kan frÄga wikidata med SPARQL, ett speciellt frÄgesprÄk för det semantiska webben. HÀr Àr ett exempel som visar de vanligaste ögonfÀrgerna bland mÀnniskor:
#defaultView:BubbleChart
SELECT ?eyeColorLabel (COUNT(?human) AS ?count)
WHERE
{
?human wdt:P31 wd:Q5. # human instance-of homo sapiens
?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?eyeColorLabel
- DBpedia Àr ett annat initiativ liknande WikiData.
â Om du vill experimentera med att bygga dina egna ontologier, eller öppna befintliga sĂ„dana, finns en utmĂ€rkt visuell ontologiredigerare kallad ProtĂ©gĂ©. Ladda ner den eller anvĂ€nd den online.
Web Protégé-editor öppen med Romanov Family-ontologin. SkÀrmdump av Dmitry Soshnikov
âïž Ăvning: En familjeontologi
Se FamilyOntology.ipynb för ett exempel pÄ hur man anvÀnder tekniker frÄn det semantiska webben för att resonera om familjerelationer. Vi tar ett slÀkttrÀd representerat i vanligt GEDCOM-format och en ontologi av familjerelationer och bygger en graf över alla familjerelationer för en given mÀngd individer.
Microsoft Concept Graph
I de flesta fall skapas ontologier noggrant för hand. Det Àr dock ocksÄ möjligt att utvinna ontologier frÄn ostrukturerad data, till exempel frÄn naturliga sprÄkliga texter.
Ett sÄdant försök gjordes av Microsoft Research, vilket resulterade i Microsoft Concept Graph.
Det Ă€r en stor samling entiteter grupperade med is-a Ă€rftlighetsrelation. Den möjliggör att svara pĂ„ frĂ„gor som "Vad Ă€r Microsoft?" â svaret kan vara nĂ„got i stil med "ett företag med sannolikhet 0,87 och ett varumĂ€rke med sannolikhet 0,75".
Grafen finns tillgÀnglig som REST API eller som en stor nedladdningsbar textfil som listar alla entitetsparet.
âïž Ăvning: En konceptgraf
Prova MSConceptGraph.ipynb för att se hur vi kan anvÀnda Microsoft Concept Graph för att gruppera nyhetsartiklar i olika kategorier.
Slutsats
Numera betraktas AI ofta som ett synonym för MaskininlÀrning eller Neurala nÀtverk. Men en mÀnniska uppvisar ocksÄ explicit resonemang, vilket Àr nÄgot som neurala nÀtverk för nÀrvarande inte hanterar. I verkliga vÀrldens projekt anvÀnds explicit resonemang fortfarande för att utföra uppgifter som krÀver förklaringar, eller för att kunna modifiera systemets beteende pÄ ett kontrollerat sÀtt.
đ Utmaning
I Family Ontology-notebooken kopplad till denna lektion finns möjlighet att experimentera med andra familjerelationer. Försök att upptÀcka nya samband mellan personer i slÀkttrÀdet.
Quiz efter förelÀsning
GenomgÄng & SjÀlvstudier
Gör en undersökning pÄ internet för att upptÀcka omrÄden dÀr mÀnniskor försökt kvantifiera och kodifiera kunskap. Ta en titt pÄ Blooms taxonomi och gÄ tillbaka i historien för att lÀra dig hur mÀnniskor försökte förstÄ sin vÀrld. Utforska Linnés arbete med att skapa en taxonomi av organismer och studera hur Dmitrij Mendelejev skapade ett sÀtt att beskriva och gruppera kemiska element. Vilka andra intressanta exempel kan du hitta?
Uppgift: Bygg en ontologi
Ansvarsfriskrivning: Detta dokument har översatts med hjÀlp av AI-översÀttningstjÀnsten Co-op Translator. Trots att vi strÀvar efter noggrannhet, var vÀnlig observera att automatiska översÀttningar kan innehÄlla fel eller brister. Det ursprungliga dokumentet pÄ dess modersmÄl bör betraktas som den auktoritativa kÀllan. För kritisk information rekommenderas professionell mÀnsklig översÀttning. Vi ansvarar inte för nÄgra missförstÄnd eller feltolkningar som uppstÄr till följd av anvÀndningen av denna översÀttning.




