10 minute read
Litt nøye utvalgt historie
from Maskiner som tenker
by Kagge Forlag
Verdens mest vellykkede svindel
Erkehertuginne Maria Teresia av Østerrike må ha vært litt av en dame. For å imponere henne bygget oppfinneren Wolfgang von Kempelen det som senere ble kjent som verdens mest vellykkede svindel: Den mekaniske tyrkeren. Dette vidunderet av en maskin stod for de første overskriftene om maskiner som spiller sjakk bedre enn mennesker, allerede på 70-tallet. På 1770-tallet, altså. Maskinen bestod av en mekanisk mann ikledd kappe og turban, sittende på en boks med et virvar av tannhjul og tilsynelatende komplisert maskineri. «Tyrkeren» kunne spille sjakk mot mennesker, og spillet startet ved at den – eller han? – beveget hodet fra side til side, som om han så på sjakkbrettet og planla første trekk. Så skjøt armen hans plutselig frem, og de mekaniske fingrene plukket opp en brikke før de satte den ned på et lovlig felt. Akkurat dette var ikke nok til å imponere 1700-tallets innbyggere, som hadde sett mekaniske dyr med langt mer overbevisende detaljer enn denne grove etterligningen av et menneske. Det banebrytende var selve spillet: Tyrkeren var god i sjakk. Skikkelig god. Selveste Napoleon Bonaparte ble slått av Tyrkeren, og gikk i graven med troen på at en maskin hadde slått ham i sjakk. Tyrkeren spilte kreativt og tilpasset seg motstanderens stil, spill etter spill. Og skulle noen prøve seg på juks, slik Napoleon gjorde da han utfordret Tyrkeren i 1809, flyttet Tyrkeren brikken tilbake til der den kom fra. Hvis motstanderen prøvde seg på juks gjentatte ganger, mistet Tyrkeren til slutt tålmodigheten og sveipet armen over spillet så brikkene fløy.
Advertisement
Det hele var så klart bare bedrageri, men i form av en imponerende ingeniørbragd: Den intrikate boksen med alle tannhjulene kunne åpnes for inspeksjon, og før hvert spill fikk publikum se inn i den fra alle sider. Dermed var tilskuerne alltid overbevist om at det ikke befant seg noe menneske i boksen.1 Spekulasjonene var likevel mange og inkluderte at en russisk soldat som hadde talent for sjakk og som hadde mistet begge bena i kamp, var den egentlige hjernen i Tyrkeren. Da den endelig ble avslørt i The Chess Monthly på slutten av 1850-tallet, ble det sagt at «ingen hemmelighet har noen gang blitt bevart så godt som den om Tyrkeren». Trikset var at mennesket, som absolutt fantes inni boksen, satt på en stol som kunne bevege seg og dermed unngå å havne i siktelinjen under inspeksjon.
At en sjakkspillende maskin fikk så mye oppmerksomhet, har nok flere grunner, men blant dem var ideen om at en maskin kunne være smartere enn mennesker; ta bedre beslutninger enn mennesker. Og selv om verden fremdeles skulle vente lenge på en maskin som kunne spille sjakk på menneskelig nivå, var maskiner allerede på 1800-tallet godt i gang med å endre både folks liv og hele samfunnsøkonomien.
Dampmaskinen har blitt et ikon for 1700-tallets oppfinnelser av maskiner som gjorde kraft tilgjengelig på en måte og i et omfang ingen dyr, mennesker eller daværende teknologi kunne måle seg med. Overgangen fra menneskelig håndverk til maskinell produksjon startet i England og spredte seg raskt gjennom Europa og til USA, og ble et vendepunkt i moderne industri. I stedet for at mennesker produserte varer, ble det bygget maskiner som produserte varene mer effektivt, og den jordbruksbaserte økonomien skiftet brått over til en industriell og maskinbasert økonomi. I den vestlige verden, der de aller fleste var bønder og levde av jorden, medførte dette en komplett omveltning i levemåte. Og Den mekaniske tyrkeren havnet midt i denne tiden. Da er det ikke rart at tanken på en maskin som ikke bare kunne jobbe, men også tenke mer effektivt enn mennesker, skapte både fascinasjon og bekymring. For selv om Tyrkeren ikke var direkte intelligent, passet den inn i forestillingen om en meget mulig fremtid, der maskiner kunne tenke selv og kanskje ende opp med å ta over for menneskene.
Dessverre, eller kanskje heldigvis, viste det seg likevel at Tyrkeren hadde mer til felles med dampmaskinen enn med mennesker. Gitt at den ikke tok sjakkbeslutningene selv, var den bare et mekanisk verktøy som kunne flytte på brikker. Både Tyrkeren og dampmaskiner trenger mennesker for å operere dem og er ikke i stand til å ta beslutninger selv.
Selv om det skulle ta lang tid før maskiner som tar beslutninger på egen hånd ble en del av virkeligheten, liker jeg å tro at 1800-tallets mennesker likevel lot seg fascinere av tanken. Kanskje leste de om «Maskinen» («The Engine») i Gullivers reiser av Jonathan Swift, og hadde sterke meninger om hvorvidt en tenkende maskin kunne bygges.2 Og kanskje fulgte de aller ivrigste av dem med på teknologinyheter og fikk med seg da verden så sin første algoritme, allerede tidlig på 1800-tallet.
Algoritmer
Ja, algoritmer fantes lenge før kunstig intelligens. Selv om ordet i dag ofte brukes i media for å beskrive dataprogrammer som analyserer dataene våre eller får oss til å gjøre ting, er algoritmer mye mer enn bare dét. Tørt forklart er en algoritme en samling instruksjoner som kan utføres i en bestemt rekkefølge for å oppnå et mål, og det klassiske eksempelet er en matoppskrift. Hvis oppskriften ikke inneholder alle instruksjonene som trengs, blir ikke matretten noe av. Hvis instruksjonene kommer i feil rekkefølge, blir oppskriften også umulig å følge. Vi mennesker er ganske flinke til å lage algoritmer til hverandre, og hver gang du skal beskrive hvordan noe gjøres, lager du en algoritme. Hvis jeg trenger å låne mel av deg, kan det hende at du svarer: «Ja, det kan du, men jeg er ikke hjemme så du må låse deg inn selv. Bruk nøkkelen som ligger under matta, gå inn på kjøkkenet og se i den nederste skuffen ved siden av kjøleskapet.» Da ville du gjort meg i stand til å låne mel av deg, og jeg ville takket deg for å lage algoritmen som gjorde det hele mulig.
Algoritmer er det som får datamaskiner til å fungere, og ingen datamaskin kan fungere uten instruksjonene fra algoritmer. Å lage gode algoritmer for datamaskiner er langt ifra enkelt, fordi datamaskiner må ha inn hvert eneste steg med teskje, og fordi det ikke er åpenbart hva som er den beste måten å løse et problem på. Hos teknologiselskaper som er kule å jobbe for, handler intervjuspørsmålene ofte om å beskrive eller lage gode algoritmer på sparket.
Å lage algoritmer er kanskje noe av det morsomste som finnes, ikke fordi det er så gøy å forklare ting for datamaskiner, men fordi det er gøy å tenke seg frem til den beste måten å løse problemer på. Det samme syntes grevinne Ada Lovelace, som fort gikk lei av typiske grevinneaktiviteter og heller viet livet sitt til datavitenskap. I 1843 skrev hun verdens første algoritme for datamaskiner og regnes derfor som verdens første programmerer. Sammen med oppfinneren Charles Babbage jobbet hun også i mange år med å designe verdens første mekaniske datamaskin. Denne ble ikke bygget, fordi forskningsmidlene tørket ut, og fordi Babbage kranglet med sjefsingeniøren sin.3 Men selv om det ikke ble noe av selve datamaskinen i denne omgangen, var algoritmen likevel oppfunnet, og ideen om at en maskin kan utføre en hvilken som helst prosess, var født.
Datamaskiner
Tanken på datamaskiner fantes lenge før de første datamaskinene ble bygget, og de første som faktisk ble bygget ligner ikke det minste på datamaskinene vi bruker i dag. Den største forskjellen er nok at de første datamaskinene var analoge: De ble bygget for å utføre én spesifikk oppgave. Skulle de løse en annen oppgave, måtte de bygges om. Hvis en slik datamaskin skulle løse et matematisk problem, ble den derfor til en fysisk manifestasjon av det matematiske problemet – rett og slett en analogi. Dette høres kanskje abstrakt og vanskelig ut, men jeg tør vedde på at du har rukket å bruke en analog datamaskin senest i dag. Barn lærer ofte å legge sammen og trekke fra ved hjelp av fargerike kulerammer der de kan flytte perler rundt på tynne stenger. Vi mennesker har brukt disse såkalte abacus-ene til å regne siden antikken, og mange vil kanskje mene at det er å dra det for langt å kalle dem maskiner, men de illustrerer likevel hvordan analoge datamaskiner fungerer: De tar inn analoge data, altså fysiske størrelser rett fra virkeligheten. Disse trenger ikke konverteres til tallverdier eller tilnærminger, men går rett inn i maskinen. Den analoge maskinen gjør beregninger direkte ved å måle de kontinuerlige endringene som skjer i fysiske størrelser, og presenterer resultatet fra beregningen som en avlesning av en måling. En miniversjon av dette er et kvikksølvtermometer, hvor vi ikke leser av et tall fra et display, men heller gjør målingen selv, ved å se hvor høyt kvikksølvet har klatret. Enda mer avanserte analoge datamaskiner fra hverdagen er mekaniske armbåndsur og speedometre på biler. Er det én ting du skal huske her (fordi det blir viktig senere), er det at programvaren, software på engelsk, og selve maskinen, hardware på engelsk, er det samme for analoge datamaskiner.
Fordelen med analoge datamaskiner er at de tar inn dataene sine direkte, og det derfor ikke er nødvendig å gjøre om målinger til tall, med komplikasjonene og feilkildene det kan medføre. Men den store svakheten til analoge datamaskiner er at de kun kan løse akkurat det problemet de ble bygget for.
Gödel, Turing og von Neumann
Nå skal vi møte tre matematikere som var uunnværlige for utviklingen av moderne datavitenskap, og hvis bidrag fremdeles gir både forskere og studenter hodebry den dag i dag: Kurt Gödel, Alan Turing og John von Neumann. I 1931 presenterte Gödel et bevis som rystet verden så mye at det fremdeles merkes i dag. Han viste at ingen matematiske systemer kan være både komplette og konsistente, som en matematiker ville sagt det.4 Dette betyr at man ikke kan lage et logisk system der alt som er sant kan bevises, og som samtidig er helt uten selvmotsigelser. Tenk på utsagnet «denne setningen er en løgn». Faktisk er det pussig at det går an å lage slike utsagn, hvis vi tenker over det. Og akkurat dét gjorde Gödel òg: Han tenkte på systemer som lager utsagn om seg selv, og endte opp med å vise at dette betyr trøbbel i matematikkens verden.
Alan Turing ble dypt fascinert av Gödels bevis og lurte på hva det ville ha å si for datamaskiner. I 1937 klarte Turing å bevise to ting, som begge regnes blant de mest innflytelsesrike resultatene innen datavitenskap. Det ene han beviste, var at det er umulig å lage et dataprogram som kan finne ut om en algoritme kan fullføres, altså om en beregning kommer til å bli ferdig. Dette problemet kalles the halting problem, og selv om det kanskje virker som et litt snodig problem å bry seg med, finner vi det igjen overalt. Hvis man for eksempel har et antivirusprogram og har lyst til å vite om det noensinne kommer til å utføre en ondsinnet handling mot datamaskinen, har man møtt på the halting problem og må gi opp (hilsen Turing, anno 1937).
Beviset for at det ikke er mulig å bevise at en algoritme kommer til å bli ferdig, er forresten vidunderlig snedig, og helt i Gödels ånd. La oss anta at det finnes et program som kan finne ut om en algoritme vil bli ferdig før eller siden. Vi kan kalle dette programmet «VIL_STANSE». Deretter kan vi skrive følgende lille dataprogram:
INGAS_ALGORITME:
Hvis INGAS_ALGORITME kommer til å bli ferdig: Utfør denne instruksjonen for alltid
Hva kan programmet VIL_STANSE nå si om INGAS_
ALGORITME? Hvis INGAS_ALGORITME kommer til å bli ferdig, kommer INGAS ALGORITME til å vente for alltid – altså aldri bli ferdig. Vi skjønner at vi har kommet frem til en selvmotsigelse (og muligens litt hodepine) – og har dermed også bevist at programmet VIL_STANSE ikke kan eksistere.
Det andre Turing beviste, var at det kan finnes maskiner som er i stand til å utføre en hvilken som helst matematisk beregning, så lenge den er formulert som et sett instruksjoner
–altså som en algoritme. Denne tenkte maskinen har fått navnet Turingmaskinen. Med ideen om Turingmaskinen var tanken om skillet mellom en maskin som utfører beregninger, populært kalt hardware, på den ene siden, og selve beregningene på den andre siden, kalt software, født. Denne tanken er vanlig for oss moderne mennesker som er vant til å installere nye programmer på den gamle datamaskinen (og stadig nye apper på den samme telefonen), men skillet mellom hardware og software var alt annet enn åpenbart. De eneste beregningsmaskinene som fantes før Turing, var den analoge datamaskinen og den menneskelige hjernen. For begge disse maskinene er hardware og software det samme. Selv om det ikke er åpenbart ved første (eller andre) øyekast, er Turings to beviser en stor del av fundamentet moderne datamaskiner står på.
Selv om Turingmaskinen er enda så genial, er den fremdeles bare et abstrakt konsept. Turing beviste at en slik maskin kan finnes i teorien, men som kjent er det ofte langt fra idé til produkt. For å bygge en maskin som kan utføre en hvilken som helst beregning, trengs konkretisering. Her kommer den tredje helten inn, nemlig John von Neumann. Han designet oppsettet vi fremdeles bygger moderne datamaskiner etter, så neste gang du snurrer i gang PC-en din, kan du sende John en varm tanke og takke ham for von Neumann-arkitekturen. I denne oppbyggingen, eller arkitekturen, har datamaskiner én sentral komponent som utfører beregninger, og en annen komponent som står for lagring. Når beregninger skal utføres, må de nødvendige ingrediensene derfor hentes fra minneenheten, og hvis resultatet fra en beregning skal lagres, må det flyttes fra beregningsenheten og inn i minneenheten. Datamaskinen din fungerer på samme måte: Det aller meste ligger trygt lagret i minneenheten, og kun det som trengs for en beregning, flyttes til beregningsenheten. Eller, for å være mer presis bør jeg legge til at det ligger en del grums mellom beregningsenheten og minneenheten i dagens datamaskiner, for å gjøre lagring og beregning både raskere og enklere. Men hvis vi myser litt, ser moderne datamaskiner fremdeles ut som von Neumann tegnet dem i sin tid.
Den siste ingrediensen i von Neumann-arkitekturen er to enheter som sørger for at mennesker kan kommunisere med maskinen. En enhet tar inn kommandoer fra mennesket og gir dem til beregningsenheten, mens en annen enhet henter ut informasjon fra beregningsenheten, så et menneske (eller en annen maskin, for den del) kan få nytte av den. Figuren under er en enkel versjon av von Neumann-arkitekturen, og i så måte en slags tegning av laptopen din.