Hvordan laver man en kunstig intelligens?

Kunstig intelligens er et bredt begreb. I dette indlæg vil jeg præsentere forskellige teknikker der anvendes, når man forsøger at udvikle og lave programmer eller algoritmer, der simulerer intelligens.

Svag eller stærk

Først er det dog vigtigt, at man forstår forskellen mellem en svag og en stærk kunstig intelligens. Dette har jeg beskrevet i indlægget: Stærk eller svag kunstig intelligens, men kort fortalt, så er en stræk kunstig intelligens i stand til selv at tage initiativ og være bevidst, mens en svag kunstig intelligens ikke er bevidst, men dog alligevel kan være dygtigere til en opgave end et menneske.

Vi kan lige så godt få det på det rene. Der findes idag ikke nogen teknikker der kan skabe en bevidst kunstig intelligens. Det vi alene kan skabe er programmer eller algoritmer, der kan simulere intelligens f.eks. ved at man i programmer og algoritmer simulere de måder, vi mennesker tænker på. Altså svag kunstig intelligens.

Teknikker til kunstig intelligens

Der findes flere forskelige teknikker til at lave kunstig intelligens, eller rettere simulere intelligens. De fleste teknikker forsøger at kopiere den måde, vi mener, at mennesker tænker, og hjernen fungerer. F.eks.  den teknik der tales og skrives en masse om i øjeblikket deep learning (maskinlæring), videnbaserede systemet (ekspertsystemer), som var meget oppe i tiden i 1990’erne eller case based reasoning (casebaseret læring/beslutninger). Nedenfor vil jeg ganske kort og i ikke tekniske ord forklare principperne i disse tre forskellige teknikker.

Deep learning, maskinlæring og neurale net

Maskinlæring baserer sig på teknikken neurale net, der igen er udviklet som en simulering af det net af synapser, der findes i vores hjerner, som sender og modtager signaler.  En synaps modtager et input og udsender et output. En node i et neuralt net opføre sig på samme måde: den får et input og levere et output. I et neuralt net er der mange noder ligesom der er mange synapser i vores hjerner. Og man kan ved at give et neuralt net input med kendte output træne det. Langsomt vil det lære at genkende det, vi træner det i at genkende. F.eks. katte på billeder eller mennesker på fortove. Med tilstrækkeligt mange eksempler vil et neuralt net være istand til at genkende mønstre f.eks. en kat selv om der på billedet kun er omridset af en kat.

Det nyeste inden for neurale net og maskinlæring er deep learning, og selvlærende neurale net. Det betyder ikke, at man bare laver et neuralt net og så lære det noget af sig selv. Vi skal stadig træne det, ved at give det forskellige input. Men f.eks. har DeepMind udviklet AlphaGo, der er et neuralt net, som selv  kan lære sig at spille go ved at prøve sig frem. Til at starte med har systemet ingen viden om Go. Det finder ud af, hvordan det vinder ved at spille mod sig selv og lære af, om det vinder eller taber.

Maskinlæring er super interessant og spændende, og der kommer mange flere anvendelse af det i fremtiden. Ulempen ved denne type kunstig intelligens er, at vi ikke ved, hvad der ligger til grund for systemets beslutning. Og vi kan ikke spørge det, for det ligger ikke i opbygningen af et neuralt net, at det kan fortælle, hvordan det er kommet frem til en beslutning. Hvis f.eks. en fremtidig kunstig intelligens, der anvendes i sundhedsvæsnet, angiver at en patient har kræft, så vil vi ikke af det neurale net kunne se, hvorfor den kunstige intelligens ‘mener’ det. I starten er der derfor mange, der er utrygge ved at  bruge disse metoder til alvorlige beslutninger.

Ekspertsystemer

Ekspertsystemer var meget oppe i tiden i 1990’erne, men der tales ikke så meget om dem mere. Det betyder dog ikke, at de ikke anvendes. De er bare blevet almindelige … En stor del af de Wizards/chatbots der findes er i virkeligheden en slags ekspertsystem.

Ekspertsystemer basere sig på en regelmotor og en vidensbank. Man modellerer den viden, man vil have systemet til at bruge i form af regler, der hænger sammen med en model af verden eller den situation, som systemet skal hjælpe en med. I mit studie udviklede vi et ekspertsystem, der kunne vejlede omkring nedrivning af bygninger med sprængstof. Ved at lære systemet regler og viden om bygninger, nedrivning og brug af sprængstof til nedrivning, kunne det med reglerne i sin regelmotor og viden om den bygning der skulle rives ned, foreslå den rigtige måde at gøre dette på.

Når der anvendes et ekspert system er det tydeligt og kan vises, hvordan systemet er nået til sin beslutning. Det kan være en fordel. Ulempen ved ekspertsystemer er at de ikke kan lære noget nyt, med mindre vi lære dem det. Altså skal vi indsamle viden/regler, finde sammenhængen til modellen af verden og lægge dem ind i programmet. Et ekspertsystem kan altså kun det man har lært det, og det er min erfaring at det tager tid og er ret krævende at samle, forstå og modellere viden om et område.

Cased based reasoning

Case based reasoning har ikke noget navn på dansk, men groft oversat kan man kalde det: Problemløsning baseret på kendte cases, og det er noget mennesker gør hele tiden hverdag. Det er for eksempel den måde en mekaniker kan bruge, når han skal reparere en bil. Han kender bilen, og han har måske set en tilsvarende fejl på en tilsvarende bil tidligere. Altså bruger han sin erfaring (de cases han har set) til at løse et problem eller finde en fejl.  En del af mit PhD-studie gik ud på at undersøge de designmetoder ingeniører bruger i design/projektering af bygninger, og her anvendes netop denne type metoder. Når der skal designes et nyt parkeringshus sker der meget ofte det, at ingeniøren tager det sidste projekt han arbejde på frem af skuffen og genbruger store dele af det. Det er case based reasoning.

Denne teknik kan også simuleres i en kunstig intelligens, så en sådan algoritme bliver i stand til at vælge den bedste løsning fra mange alternativer til et givent problem. For at kunne vælge det ‘bedste’ alternativ er man desuden nødt til at fortælle systemet, hvad er vil være en optimal løsning. Man definere en matematisk funktion, der beskriver den optimale løsning, og lader så algoritmen ændre på designet på forsekellige parametre, for at optimere løsningen. Case baseret resonering er et forskningsområde idag specielt indenfor netop design og projektering. Autodesk har arbejdet med det ifht. optimering af et cykel design. Her er løsningen kombineret med en genetisk algoritme, der introducere mutationer i designet, for at opnå nye ideer, der måske er mere optimale. Genetiske metoder i design er et andet emne for sig, som jeg ikke vil gå ind i her.

Kilder, artikler og sites der kan anbefales:

Video med Thomas Bolander – kunstig intelligens forklaret på 5 minutter

Neurale net den store danske

Hvad er et neuralt netværk i Ingeniøren

Kunstig intelligens af Thomas Bolander