|
|
||
|---|---|---|
| .. | ||
| Animals.ipynb | ||
| FamilyOntology.ipynb | ||
| MSConceptGraph.ipynb | ||
| README.md | ||
| assignment.md | ||
README.md
Videnrepræsentation og Ekspertsystemer
Sketchnote af Tomomi Imura
Jagten på kunstig intelligens handler om at finde viden og forstå verden på samme måde som mennesker gør. Men hvordan kan man gøre dette?
Quiz før forelæsning
I AI's tidlige dage var den top-down tilgang til at skabe intelligente systemer (diskuteret i den forrige lektion) populær. Ideen var at udtrække viden fra mennesker i en maskinlæsbar form og derefter bruge den til automatisk at løse problemer. Denne tilgang var baseret på to store idéer:
- Videnrepræsentation
- Ræsonnement
Videnrepræsentation
Et af de vigtige begreber i Symbolsk AI er viden. Det er vigtigt at skelne viden fra information eller data. For eksempel kan man sige, at bøger indeholder viden, fordi man kan studere bøger og blive ekspert. Men det, bøger faktisk indeholder, kaldes data, og ved at læse bøger og integrere denne data i vores verdensmodel konverterer vi data til viden.
✅ Viden er noget, der findes i vores hoved og repræsenterer vores forståelse af verden. Det opnås gennem en aktiv læringsproces, som integrerer de informationer, vi modtager, i vores aktive verdensmodel.
Ofte definerer vi ikke viden strengt, men vi relaterer det til andre begreber ved hjælp af DIKW-pyramiden. Den indeholder følgende begreber:
- Data er noget, der er repræsenteret på fysisk medie, såsom skrevet tekst eller talte ord. Data eksisterer uafhængigt af mennesker og kan overføres mellem personer.
- Information er, hvordan vi fortolker data i vores hoved. For eksempel, når vi hører ordet computer, har vi en forståelse af, hvad det er.
- Viden er information, der integreres i vores verdensmodel. For eksempel, når vi lærer, hvad en computer er, begynder vi at få idéer om, hvordan den fungerer, hvad den koster, og hvad den kan bruges til. Dette netværk af sammenhængende begreber udgør vores viden.
- Visdom er endnu et niveau af vores forståelse af verden og repræsenterer meta-viden, dvs. en idé om, hvordan og hvornår viden skal bruges.
Billede fra Wikipedia, af Longlivetheux - Eget arbejde, CC BY-SA 4.0
Derfor er problemet med videnrepræsentation at finde en effektiv måde at repræsentere viden inde i en computer i form af data, så den kan bruges automatisk. Dette kan ses som et spektrum:
Billede af Dmitry Soshnikov
- Til venstre er der meget simple typer af videnrepræsentationer, som kan bruges effektivt af computere. Den simpleste er algoritmisk, hvor viden er repræsenteret af et computerprogram. Dette er dog ikke den bedste måde at repræsentere viden på, fordi det ikke er fleksibelt. Viden i vores hoved er ofte ikke-algoritmisk.
- Til højre er der repræsentationer som naturlig tekst. Det er den mest kraftfulde, men kan ikke bruges til automatisk ræsonnement.
✅ Tænk et øjeblik over, hvordan du repræsenterer viden i dit hoved og konverterer det til noter. Er der et bestemt format, der fungerer godt for dig til at hjælpe med at huske?
Klassificering af computer-videnrepræsentationer
Vi kan klassificere forskellige metoder til videnrepræsentation i følgende kategorier:
- Netværksrepræsentationer er baseret på det faktum, at vi har et netværk af sammenhængende begreber i vores hoved. Vi kan forsøge at reproducere de samme netværk som en graf inde i en computer - et såkaldt semantisk netværk.
- Objekt-Attribut-Værdi tripletter eller attribut-værdi par. Da en graf kan repræsenteres inde i en computer som en liste af noder og kanter, kan vi repræsentere et semantisk netværk som en liste af tripletter, der indeholder objekter, attributter og værdier. For eksempel kan vi bygge følgende tripletter om programmeringssprog:
| Objekt | Attribut | Værdi |
|---|---|---|
| Python | er | Utypet-sprog |
| Python | opfundet-af | Guido van Rossum |
| Python | blok-syntaks | indrykning |
| Utypet-sprog | har ikke | type-definitioner |
✅ Tænk over, hvordan tripletter kan bruges til at repræsentere andre typer af viden.
-
Hierarkiske repræsentationer understreger det faktum, at vi ofte skaber en hierarki af objekter i vores hoved. For eksempel ved vi, at en kanariefugl er en fugl, og alle fugle har vinger. Vi har også en idé om, hvilken farve en kanariefugl normalt har, og hvad dens flyvehastighed er.
- Ramme-repræsentation er baseret på at repræsentere hvert objekt eller klasse af objekter som en ramme, der indeholder slots. Slots har mulige standardværdier, værdirestriktioner eller gemte procedurer, der kan kaldes for at få værdien af en slot. Alle rammer danner en hierarki, der ligner en objekt-hierarki i objektorienterede programmeringssprog.
- Scenarier er en særlig slags rammer, der repræsenterer komplekse situationer, der kan udfolde sig over tid.
Python
| Slot | Værdi | Standardværdi | Interval |
|---|---|---|---|
| Navn | Python | ||
| Er-A | Utypet-sprog | ||
| Variabel Case | CamelCase | ||
| Programlængde | 5-5000 linjer | ||
| Blok-syntaks | Indrykning |
-
Proceduremæssige repræsentationer er baseret på at repræsentere viden som en liste af handlinger, der kan udføres, når en bestemt betingelse opstår.
- Produktionsregler er hvis-så udsagn, der giver os mulighed for at drage konklusioner. For eksempel kan en læge have en regel, der siger, at HVIS en patient har høj feber ELLER højt niveau af C-reaktivt protein i blodprøven SÅ har han en betændelse. Når vi støder på en af betingelserne, kan vi drage en konklusion om betændelse og derefter bruge den i videre ræsonnement.
- Algoritmer kan betragtes som en anden form for proceduremæssig repræsentation, selvom de næsten aldrig bruges direkte i vidensbaserede systemer.
-
Logik blev oprindeligt foreslået af Aristoteles som en måde at repræsentere universel menneskelig viden.
- Predikatlogik som en matematisk teori er for rig til at være beregnelig, derfor bruges normalt en delmængde af den, såsom Horn-klausuler, der bruges i Prolog.
- Beskrivende logik er en familie af logiske systemer, der bruges til at repræsentere og ræsonnere om hierarkier af objekter og distribuerede vidensrepræsentationer som semantisk web.
Ekspertsystemer
En af de tidlige succeser med symbolsk AI var de såkaldte ekspertsystemer - computersystemer, der blev designet til at fungere som en ekspert inden for et begrænset problemområde. De var baseret på en vidensbase udtrukket fra en eller flere menneskelige eksperter og indeholdt en slutningsmotor, der udførte ræsonnement ovenpå den.
![]() |
![]() |
|---|---|
| Forenklet struktur af et menneskeligt neuralsystem | Arkitektur af et vidensbaseret system |
Ekspertsystemer er bygget som det menneskelige ræsonnementsystem, der indeholder korttidshukommelse og langtidshukommelse. Tilsvarende skelner vi i vidensbaserede systemer mellem følgende komponenter:
- Problemhukommelse: indeholder viden om det problem, der aktuelt løses, dvs. patientens temperatur eller blodtryk, om han har betændelse eller ej osv. Denne viden kaldes også statisk viden, fordi den indeholder et øjebliksbillede af, hvad vi aktuelt ved om problemet - den såkaldte problemtilstand.
- Vidensbase: repræsenterer langtidshukommelse om et problemområde. Den udtrækkes manuelt fra menneskelige eksperter og ændrer sig ikke fra konsultation til konsultation. Fordi den giver os mulighed for at navigere fra én problemtilstand til en anden, kaldes den også dynamisk viden.
- Slutningsmotor: orkestrerer hele processen med at søge i problemtilstandsrummet og stille spørgsmål til brugeren, når det er nødvendigt. Den er også ansvarlig for at finde de rigtige regler, der skal anvendes på hver tilstand.
Som et eksempel kan vi overveje følgende ekspertsystem til at bestemme et dyr baseret på dets fysiske egenskaber:
Billede af Dmitry Soshnikov
Dette diagram kaldes et AND-OR træ, og det er en grafisk repræsentation af et sæt produktionsregler. At tegne et træ er nyttigt i starten af at udtrække viden fra eksperten. For at repræsentere viden inde i computeren er det mere praktisk at bruge 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 bemærke, at hver betingelse på venstre side af reglen og handlingen i bund og grund er objekt-attribut-værdi (OAV) tripletter. Arbejds-hukommelse indeholder sættet af OAV tripletter, der svarer til det problem, der aktuelt løses. En regelmotor leder efter regler, hvor en betingelse er opfyldt, og anvender dem, hvilket tilføjer en ny triplet til arbejds-hukommelsen.
✅ Lav dit eget AND-OR træ om et emne, du kan lide!
Fremadrettet vs. Bagudrettet Slutning
Den proces, der er beskrevet ovenfor, kaldes fremadrettet slutning. Den starter med nogle indledende data om problemet, der er tilgængelige i arbejds-hukommelsen, og udfører derefter følgende ræsonnementsloop:
- Hvis mål-attributten er til stede i arbejds-hukommelsen - stop og giv resultatet
- Søg efter alle regler, hvis betingelse aktuelt er opfyldt - opnå konfliktsæt af regler.
- Udfør konfliktløsning - vælg én regel, der vil blive udført i dette trin. Der kan være forskellige strategier for konfliktløsning:
- Vælg den første anvendelige regel i vidensbasen
- Vælg en tilfældig regel
- Vælg en mere specifik regel, dvs. den, der opfylder flest betingelser på venstre side (LHS)
- Anvend den valgte regel og indsæt ny viden i problemtilstanden
- Gentag fra trin 1.
Men i nogle tilfælde ønsker vi måske at starte med tom viden om problemet og stille spørgsmål, der vil hjælpe os med at nå frem til en konklusion. For eksempel, når vi laver medicinsk diagnose, udfører vi normalt ikke alle medicinske analyser på forhånd, før vi begynder at diagnosticere patienten. Vi ønsker snarere at udføre analyser, når en beslutning skal træffes.
Denne proces kan modelleres ved hjælp af bagudrettet slutning. Den er drevet af målet - den attributværdi, vi søger at finde:
- Vælg alle regler, der kan give os værdien af et mål (dvs. med målet på højre side (RHS)) - et konfliktsæt
- Hvis der ikke er nogen regler for denne attribut, eller der er en regel, der siger, at vi skal spørge brugeren om værdien - spørg om den, ellers:
- Brug konfliktløsningsstrategi til at vælge én regel, som vi vil bruge som hypotese - vi vil forsøge at bevise den
- Gentag processen rekursivt for alle attributter på venstre side af reglen, og prøv at bevise dem som mål
- Hvis processen på noget tidspunkt fejler - brug en anden regel i trin 3.
✅ I hvilke situationer er fremadrettet slutning mere passende? Hvad med bagudrettet slutning?
Implementering af Ekspertsystemer
Ekspertsystemer kan implementeres ved hjælp af forskellige værktøjer:
- Programmere dem direkte i et højniveau programmeringssprog. Dette er ikke den bedste idé, fordi den største fordel ved et vidensbaseret system er, at viden er adskilt fra slutning, og en ekspert inden for problemområdet potentielt bør kunne skrive regler uden at forstå detaljerne i slutningsprocessen.
- Bruge ekspertsystem-skaller, dvs. et system, der er specifikt designet til at blive fyldt med viden ved hjælp af et vidensrepræsentationssprog.
✍️ Øvelse: Dyre-slutning
Se Animals.ipynb for et eksempel på implementering af fremadrettet og bagudrettet slutning i et ekspertsystem.
Bemærk: Dette eksempel er ret simpelt og giver kun en idé om, hvordan et ekspertsystem ser ud. Når du begynder at oprette et sådant system, vil du først bemærke noget intelligent adfærd fra det, når du når et vist antal regler, omkring 200+. På et tidspunkt bliver reglerne for komplekse til at holde styr på dem alle, og på dette tidspunkt kan du begynde at undre dig over, hvorfor systemet træffer visse beslutninger. Dog er en vigtig egenskab ved vidensbaserede systemer, at du altid kan forklare præcis, hvordan enhver beslutning blev truffet.
Ontologier og det Semantiske Web
I slutningen af det 20. århundrede var der en initiativ til at bruge videnrepræsentation til at annotere internetressourcer, så det blev muligt at finde ressourcer, der svarer til meget specifikke forespørgsler. Denne bevægelse blev kaldt Semantisk Web, og den byggede på flere koncepter:
- En særlig videnrepræsentation baseret på description logics (DL). Det ligner rammebaseret videnrepræsentation, fordi det opbygger en hierarki af objekter med egenskaber, men det har formelle logiske semantikker og inferens. Der findes en hel familie af DL'er, som balancerer mellem udtrykskraft og algoritmisk kompleksitet af inferens.
- Distribueret videnrepræsentation, hvor alle begreber er repræsenteret af en global URI-identifikator, hvilket gør det muligt at skabe videnhierarkier, der spænder over internettet.
- En familie af XML-baserede sprog til videnbeskrivelse: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language).
Et kernekoncept i det Semantiske Web er begrebet Ontologi. Det refererer til en eksplicit specifikation af et problemområde ved hjælp af en formel videnrepræsentation. Den simpleste ontologi kan blot være en hierarki af objekter i et problemområde, men mere komplekse ontologier vil inkludere regler, der kan bruges til inferens.
I det semantiske web er alle repræsentationer baseret på tripletter. Hvert objekt og hver relation er unikt identificeret af en URI. For eksempel, hvis vi vil angive, at dette AI Curriculum er blevet udviklet af Dmitry Soshnikov den 1. januar 2022 - her er de tripletter, vi kan bruge:
http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007”
http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com
✅ Her er
http://www.example.com/terms/creation-dateoghttp://purl.org/dc/elements/1.1/creatornogle velkendte og universelt accepterede URI'er til at udtrykke begreberne skaber og oprettelsesdato.
I et mere komplekst tilfælde, hvis vi vil definere en liste over skabere, kan vi bruge nogle datastrukturer defineret i RDF.
Diagrammerne ovenfor af Dmitry Soshnikov
Fremskridtet med at opbygge det Semantiske Web blev på en måde bremset af succes med søgemaskiner og teknikker inden for naturlig sprogbehandling, som gør det muligt at udtrække struktureret data fra tekst. Dog er der stadig betydelige bestræbelser i nogle områder på at vedligeholde ontologier og vidensbaser. Nogle projekter, der er værd at bemærke:
- WikiData er en samling af maskinlæsbare vidensbaser forbundet med Wikipedia. Det meste af dataen er udvundet fra Wikipedia InfoBoxes, stykker af struktureret indhold inde i Wikipedia-sider. Du kan forespørge WikiData i SPARQL, et specielt forespørgselssprog for det Semantiske Web. Her er en eksempelforespørgsel, der viser de mest populære øjenfarver blandt mennesker:
#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 er en anden indsats, der ligner WikiData.
✅ Hvis du vil eksperimentere med at opbygge dine egne ontologier eller åbne eksisterende, er der en fantastisk visuel ontologiredigeringsværktøj kaldet Protégé. Download det, eller brug det online.
Web Protégé editor åbnet med Romanov-familieontologien. Screenshot af Dmitry Soshnikov
✍️ Øvelse: En Familieontologi
Se FamilyOntology.ipynb for et eksempel på brug af Semantisk Web-teknikker til at ræsonnere om familierelationer. Vi vil tage et familietræ repræsenteret i det almindelige GEDCOM-format og en ontologi af familierelationer og opbygge en graf over alle familierelationer for et givet sæt af individer.
Microsoft Concept Graph
I de fleste tilfælde bliver ontologier omhyggeligt skabt manuelt. Det er dog også muligt at udvinde ontologier fra ustruktureret data, for eksempel fra tekster i naturligt sprog.
En sådan indsats blev gjort af Microsoft Research og resulterede i Microsoft Concept Graph.
Det er en stor samling af enheder grupperet sammen ved hjælp af is-a arv-relationen. Det gør det muligt at besvare spørgsmål som "Hvad er Microsoft?" - svaret kunne være noget som "en virksomhed med sandsynlighed 0.87, og et brand med sandsynlighed 0.75".
Grafen er tilgængelig enten som REST API eller som en stor downloadbar tekstfil, der lister alle enhedspar.
✍️ Øvelse: En Konceptgraf
Prøv MSConceptGraph.ipynb notebook for at se, hvordan vi kan bruge Microsoft Concept Graph til at gruppere nyhedsartikler i flere kategorier.
Konklusion
I dag bliver AI ofte betragtet som synonymt med Machine Learning eller Neurale Netværk. Dog udviser et menneske også eksplicit ræsonnement, hvilket er noget, der i øjeblikket ikke håndteres af neurale netværk. I virkelige projekter bruges eksplicit ræsonnement stadig til at udføre opgaver, der kræver forklaringer eller evnen til at ændre systemets adfærd på en kontrolleret måde.
🚀 Udfordring
I Family Ontology-notebooken, der er tilknyttet denne lektion, er der mulighed for at eksperimentere med andre familierelationer. Prøv at opdage nye forbindelser mellem personer i familietræet.
Quiz efter lektionen
Gennemgang & Selvstudie
Undersøg på internettet for at opdage områder, hvor mennesker har forsøgt at kvantificere og kodificere viden. Tag et kig på Blooms Taksonomi, og gå tilbage i historien for at lære, hvordan mennesker har forsøgt at forstå deres verden. Udforsk Linnaeus' arbejde med at skabe en taksonomi af organismer, og observer, hvordan Dmitri Mendeleev skabte en måde at beskrive og gruppere kemiske elementer. Hvilke andre interessante eksempler kan du finde?
Opgave: Byg en Ontologi
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.




