"Godhet utan vishet och utan
gränser är bara en annan
form av ondska."
(John Paterson)
"Det är synd att 99% av
journalisterna skall fördärva
förtroendet för en hel yrkeskår"
(Okänd)
"Ormar äro älskliga varelser,
om man råkar tillhöra samma
giftgrupp"
(Artur Lundkvist)
"När försiktigheten finns överallt,
finns modet ingenstans."
(den belgiske kardinalen Mercier)
"Den som gifter sig med
tidsandan blir snabbt änka."
(Goethe)
"Civiliserade är de kulturer
och individer som respekterar
andra."
(Hört på Axesskanalen)
"Det tragiska med vanligt
sunt förnuft är att det
inte är så vanligt."
(Albert Einstein)
"Halv kristendom tolereras
men föraktas.
Hel kristendom respekteras
men förföljs."
(Okänd)
(Note: at the top of the page you can choose translation of this article to other languages, but don't expect the translation to be perfect "Välj språk" means "Choose language")
Föreliggande artikel utgör en underartikel till min mer allmänna artikel om artificiell intelligens.
Neurala nätverk utgörs av mjukvara som körs på vanliga datorer med vanliga processorer eller på speciella datorer, eventuellt med speciella processorer.
Algoritmer som simulerar neurala nätverk (neuronnät) kan ofta klara problem som är svåra att lösa med konventionella datologiska metoder. Exempel på tillämpningar är: informationsutvinning (data mining), mönsterigenkänning, signalbehandling, reglerteknik, datorspel, prognoser, självorganisering, icke-linjär optimering, optimeringsproblem med många bivillkor (exempelvis schemaläggning) med mera. Och sist men inte minst AGI (Artificial General Intelligence) som använder många av dessa tillämpningar som delsystem.
Med algoritm menar man ett räkneschema, dvs en metod man steg för steg följer för att lösa en viss typ av matematiska problem. Eftersom en algoritm innebär en metod uppdelad i steg, kan datorer enkelt programmeras för att exekvera algoritmer. Ett exempel är divisionsalgoritmen, som vi alla fått lära oss i skolan (redan på mellanstadiet). Den finns i olika varianter, t ex liggande stolen. Med hjälp av denna algoritm kan man med papper och penna utföra divisioner mellan stora tal (typ 2873/149). Även om en sådan beräkning kan vara jobbig och ta tid behöver man inte tänka eller vara smart, eftersom allt går automatiskt, när man väl lärt sig denna algoritm. Jag gissar att man inte lär sig divisionsalgoritmen längre, eftersom alla idag har tillgång till räknedosor i sin telefon (där divisionsalgoritmen givetvis finns inprogrammerad).
Idén till neurala nätverk (fortsättningsvis oftast betecknade NN) är långt ifrån ny men det är först under senare år som vi fått tillräckligt kraftfulla datorer och avancerad mjukvara för att praktiskt kunna realisera NN. Dagens NN är i själva verket baserade på forskning inom statistik för 200 år sedan. Grunden för NN utgörs således av statistik, där man försöker hitta korrelationer mellan olika parametrar och på så sätt kan upptäcka mönster i en uppsättning data. Någon verklig intelligens (logik, intuition etc) är inte involverad utan det handlar om mekaniska, blinda kalkyler baserade på statistiska korrelationer (jämför med exemplet med kinesiska skrivtecken i huvudartikeln).
Ett artificiellt neuronnät utgörs av en sammankopplad grupp noder (artificiella neuroner), likt det stora nätverket av biologiska neuroner i en hjärna. Varje nod (cirkel) i bilden nedan representerar en artificiell neuron och varje pil representerar en koppling från utgången på en neuron till ingången av en annan neuron. Fortsättningsvis avser orden "nod" och "neuron" samma sak.
Ett neuronnät måste tränas innan det kan användas. De flesta NN arbetar därför i två faser, först en inlärningsfas, där nätverket tränas på den uppgift som ska utföras. Detta görs genom att nätverkets förutsägelser/beräkningar jämförs med ett facit (närmare förklaring ges i den följande texten). Sedan följer en tillämpningsfas, där nätverket använder det som det har lärt sig. Det går också att låta nätet fortsätta att lära sig även när det används (för att ytterligare öka precisionen), men vanligen lämnas det som det är när det uppnått den precision som eftersträvats.
Bild 1. Bilden visar ett enkelt neuralt nätverk. Cirklarna är noder (artificiella neuroner) och pilarna anger kopplingarna mellan noderna, från en utgång (output) på en neuron till en ingång (input) på en annan neuron. Neuronernas funktion beskrivs nedan. Varje vertikal "kolumn" av neuroner/noder kallas ett lager. I bilden ovan har vi tre lager (input, dold, output). Olika lager utför olika uppgifter. Signalerna går från input-lagret till output-lagret och passerar däremellan ett antal mellanlager. Dessa kallas dolda lager, eftersom de inte har någon kontaktyta med omvärlden. Ett NN med två eller flera dolda lager kallas deep neural network. Nätverket ovan har ett dolt lager.
Ett NN består således av ”neuroner” (noder) som är kopplade till varandra i ett nätverk. En utgång från en neuron är elektriskt kopplad till ingången på en annan neuron. Varje neuron kan ha flera in- och utgångar, som framgår av bilden. Varje ingång tilldelas en vikt som avgör hur stort inflytande (hur stor vikt) de data som kommer in via denna ingång skall tilldelas. Signalen ut från en viss neuron beror därför på signalerna på denna neurons olika ingångar samt dessa ingångars olika vikter (plus en ytterligare faktor, bias, som strax kommer att behandlas). Vikten på en ingång kan vara noll, vilket gör att signalen på denna ingång blockeras. Eller ett, då signalen släpps igenom oförändrad. Eller något värde däremellan. En vikt kan också vara större än ett. Och även negativ.
Varje neuron (som helt enkelt är en liten virtuell kalkylator) tar emot signaler från de neuroner i föregående lager, som är anslutna till ingångarna (inputs) på neuronen, och behandlar dessa signaler och skickar den behandlade signalen vidare till de neuroner i nästa lager, som är anslutna till den aktuella neuronens utgångar (outputs). In- och utsignaler utgörs av reella tal mellan 0 och 1 (typ 0,25, 0,333 etc). Dessa tal representeras i biologiska neuroner av elektriska, biokemiskt genererade spänningar, proportionella mot talen. Hur de representeras i artificiella neuroner (noder) förklaras i överkursavsnittet nedan. I allmänhet är de tal som utgör signalflödet positiva men kan också i vissa fall vara negativa (vilket kan förekomma vid vissa typer av bildbehandling).
Insignalerna till en neuron från föregående lager multipliceras med respektive ingångs vikt, varefter de viktade signalerna från de olika ingångarna adderas. En vikt kan vara större än 1. Denna viktade summa passerar sedan genom den s k aktiveringsfunktionen (activation function). Denna är ofta en icke-linjär, matematisk funktion (men kan också vara linjär) och det finns olika sådana funktioner, vilka är optimerade för olika typer av NN, dvs NN som utför olika uppgifter (språkigenkänning, reglerteknik etc).
Vid sidan av vikter finns något som kallas bias. Bias adderas till den viktade summan från neuronens ingångar innan denna summa går in i aktiveringsfunktionen (se bild 3 nedan). Precis som vikter så kan också bias vara ett negativt tal.
Innebörden av ordet bias är ungefär "att vara vinklad eller att ha förutfattade meningar" (ungefär som många tidningar och ideologer det som stämmer med ideologin propagerar man för och det som inte stämmer med ideologin tonar man ner eller förnekar, även om det är sant). Bias finns aldrig i det första lagret (ingångslagret/input) eller sista lagret (utgångslagret/output), vilket är självklart, eftersom in- och utdata måste släppas igenom utan att påverkas åt något håll. Förvanskar man indata eller utdata kommer ju resultet från nätverket att bli fel. Biasparametern hjälper nätverket att anpassa sig bättre till aktuella data. Modellerna får därmed potential att lära sig mer komplexa mönster.
Bild 2. En logistisk, icke-linjär aktiveringsfunktion (det finns en uppsjö av aktiveringsfunktioner, vars grafer ser helt olika ut). En linjär funktions graf utgörs av en rät linje. Vi ser att input till denna funktion kan vara både positiva och negativa tal (i fallet ovan mellan -6 och +6), medan output alltid blir ett positivt tal mellan 0 och 1. Biasparametern flyttar helt enkelt grafen ovan åt höger eller vänster, dvs förändrar aktiveringsfunktionen. Utsignalen från en neuron beräknas genom denna funktion (enligt beskrivningen i texten). Olika typer av sådana funktioner optimerar nätverket för olika typer av uppgifter. Den viktade summan från ingångarna plus neuronens bias utgör x-värdet ovan. Och motsvarande y-värde visar den signal som går ut från neuronen till nästa lager. Om t ex den viktade summan plus bias är lika med noll blir utsignalen 0,5.
Exempel: Antag att insignalen på en viss ingång på en nod är 0,7 (i biologiska system utgörs, som nämnts ovan, insignalen av en elektrisk spänning, som i detta fall är proportionell mot 0,7). Vi antar vidare att vikten på denna ingång är 0,3. Signalen från denna ingång blir då 0,7⋅0,3=0,21 (insignalen multiplicerad med vikten). Antag vidare att den viktade summan från alla nodens ingångar är 1,6. Om nu nodens bias är exempelvis 0,4 blir insignalen till aktiveringsfunktionen 1,6+0,4=2,0 (den viktade summan från ingångarna plus bias). Denna signal skickas nu vidare till aktiveringsfunktionen. Enligt grafen ovan ger insignalen 2,0 en utsignal av cirka 0,87 (uppskattningsvis). Dvs på nodens utgång har vi nu utsignalen 0,87, som går vidare till anslutna noder i nästa lager. Vi ser i grafen att hur stor eller liten summan in till aktiveringsfunktionen (x-värdet) än blir, så kommer aldrig utsignalen (y-värdet) att vara större än 1 eller mindre än 0 (0 och 1 är asymptoter till aktiveringsfunktionen). Detta eftersom signalerna mellan noderna ofta ligger i intervallet 0 till 1. Vilket inte är skrivet i sten, utan in- och utsignaler kan ligga inom vilka intervall som helst (förutsättningen är givetvis att noderna klarar av ta ta emot dessa värden). Aktiveringsfunktionen ser helt enkelt till att alla signaler mellan nätverkets noder ligger inom det tillåtna intervallet. Förändringar i aktiveringsfunktionen ger olika utgångsvärden för samma ingångsvärde. Plus att förändringen av utsignalen blir olika för olika aktiveringsfunktioner, vid samma förändring av insignalen. Detta gör att olika aktiveringsfunktioner är optimala för olika typer av uppgifter.
Bild 3. En grafisk illustration av det som sägs i föregående stycke. Den grekiska bokstaven Σ (stora sigma) betecknar summa, dvs att man lägger ihop de viktade signalerna från ingångarna och sedan adderar bias. Denna summa går in i aktiveringsfunktionen och kommer sedan ut på nodens utgång. Observera att vi har ett ospecificerat antal ingångar (n), vara de två första (x1 och x2) och den sista, dvs den n:te (xn), är utritade.
Eftersom vikterna kan vara negativa, så kan den viktade signalen från en viss ingång vara negativ (0,7⋅(-0,3)=-0,21) även om insignalen är positiv. Den viktade summan från ingångarna plus bias, dvs den signal som skickas in i aktiveringsfunktionen, kan också vara negativ av samma skäl.
Under träningen/inlärningen justeras vikter och bias av systemet självt baserat på hur stora felen i nätets förutsägelser är (vilka jämförs med facit). Detta görs genom optimerande algoritmer (t ex gradient descent, som är en välkänd metod för obegränsad matematisk optimering av differentierbara funktioner). Dessa algoritmer justerar systemets parametrar (vikter och bias) för att göra felen så små som möjligt. Eventuellt kan sedan systemet fortsätta att träna medan det används för att ytterligare öka precisionen.
Genom vikterna kan man justera hur mycket olika noder påverkar varandra. Genom bias, som styr aktiveringsfunktionen, kan man bestämma hur stor inverkan en viss nod skall ha i förhållande till övriga noder. I ett neuralt nätverk finns inget program (i varje fall inte i konventionell mening) utan det som händer bestäms av de olika vikterna och bias. Det kan finnas flera olika kombinationer av vikter och bias som ger samma funktion, dvs det neurala nätverkets funktion kan realiseras på många olika sätt. I princip finns ingen möjlighet att utifrån kunskap om det neurala nätverkets vikter och bias avgöra dess funktion. Systemet fungerar som en svart låda. Vilket inte är helt tillfredsställande. Men det är så det är. I förlängningen tror jag man kommer att kräva att en AGI skall kunna förklara hur det kommer fram till sina slutsatser. Detta är absolut nödvändigt när det gäller AGI som används för att fatta samhällsviktiga beslut och liknande.
Överkurs (för den tekniskt intresserade läsaren): Innan de moderna, digitala datorerna kom fanns det analoga datorer. I de senare representeras de olika talen av spänningar (talet 0,33 representeras av 0,33 V eller någon multipel av 0,33 V etc). Det viktiga är inte spänningarnas storlek utan att de är proportionella, dvs att ett dubbelt så stort tal representeras av en dubbelt så stor spänning etc. Ända fram till 1980-talet använde man analoga datorer, för speciella ändamål. Dessa hade fördelen att vara blixtsnabba medan deras noggrannhet var begränsad. Autopiloter, som ju utgör en slags dator eller AI, var ända fram till 1990-talet analoga. Här spelar noggrannheten inte så stor roll, eftersom det vore bortkastat att styra ett flygplan eller ett fartyg med 10 decimalers noggrannhet.
I en digital dator finns bara två siffror, 0 och 1. Talet 0 representeras av spänningen 0 V (i verkligheten 0-1,5 V) och 1 av spänningen 5 V (3,5-5 V). Det vanliga, decimala talsystemet har 10 siffror (0, 1, 2, ...9) och har 10 som bas. I de digitala systemen är basen 2 (kallas det binära talsystemet). 0 i tiosystemet är 0 i det binära systemet, 1 i tiosystemet är 1, 2 är 10, 3 är 11, 4 är 100, 5 är 101, 6 är 110, 7 är 111 och 8 är 1000 etc (det finns bara 2 siffror att välja på). Observera att 103=1000 och 23=8 och 8 är lika med 1000 i det binära systemet (den som vill veta mer om binära tal hänvisas till Wikipedia).
Jag har i framställningen ovan av artificiella neurala nätverk utgått från att signalflödet består av reella tal. Vilket är korrekt ut systemninivå men inte fysikaliskt. Avsikten med min text är ju att förklara hur NN fungerar i princip. Detaljerna är inte så viktiga. Eftersom moderna datorer arbetar digitalt och NN körs på processorer avsedda för digitalt signalflöde, så är detta flöde alltid digitalt. Sådana processorer kan inte handskas med fysiska, analoga spänningar.
När jag i exemplet ovan nämner 0,7 på ingången är det i själva verket inte 0,7 som kommer in utan ett antal nollor och ettor (0.10110011), vilka representerar talet 0,7 i binär form. Rent fysikaliskt representeras nollorna och ettorna av de elektriska spänningarna 0 V respektive 5 V. Insignalen 7 (0.10110011) multipliceras sedan med vikten 0,3 (0.010011) osv. På detta sätt kan en maskin som rent fysikaliskt endast kan handskas med talen 0 och 1 handskas med vilka tal som helst. Rent matematiskt spelar talsystemet ingen roll, eftersom resultatet av alla beräkningar blir detsamma oavsett talsystem.
Sammanfattning: Neurala nätverk är ett försök att efterlikna den mänskliga hjärnan. Signalflödet i våra hjärnor är inte digitalt utan analogt (elektrokemiska signaler). Neurala näverk simuleras idag av digitala datorer. och grunden för nätverken är därför digital (nollor och ettor). Rent fysiskt är det digitala spänningar (0 V och 5 V) som flyter i ledningarna och kan mätas med instrument (t ex en voltmeter). Genom mjukvara simuleras sedan neurala nätverk med ett analogt signalflöde enligt den förklaring som getts ovan. Men dessa analoga spänningar kan inte mätas, eftersom de inte har någon fysisk existens. De består inte av elektriska spänningar utan av nollor och ettor (enligt ovan). De simulerade nätverken kallas därför också virtuella nätverk.
Många tror att framtiden för NN inte är att simulera dessa på allt snabare digitala datorer, utan att framtiden i stället ligger i att NN rör sig bort från konventionella, digitala datorer mot någonting som är mycket mer likt hjärnan. Man hoppas mycket på att s k neuromorfiska chips är lösningen. Dessa innehåller fysiska, neurala nätverk och behöver därför ingen mjukvara för att simulera sådana. De simulerar således inte neurala nätverk utan de är (fysiska) neurala nätverk! Och blir därför oerhört mycket snabbare. En konventionell dator får ju lägga en stor del av sin kraft på själva simuleringen och har därför mindre kraft kvar för att köra det virtuella nätverket.
Bild 4. Bilden visar ett NN med 51 noder i 10 lager och med kanske tre till fyrahundra parametrar. Ett sådant "enkelt" nätverk kan skräddarsys för att utföra vissa begränsade uppgifter, men inte för att generera allmän AI. Läsaren kan ju föreställa sig komplexiteten hos ChatGPT-4 med en biljon parametrar.
Allmänt anses att antalet parametrar ger den mest rättvisande bilden av ett NN:s kraftfullhet. Med parametrar menar man alla vikter och alla bias enligt ovan (plus eventuellt några faktorer till som utrymmet inte tillåter oss att gå in på). Antalet parametrar bestämmer hur väl ett NN kan generalisera utifrån träningsdata, dvs i förlängningen precisionen hos nätverket i drift. Antal moder är ett mått på hur väl ett NN kan lära sig komplexa mönster, dvs hur komplexa uppgifter ett NN kan lösa. Antalet lager slutligen bestämmer vilka typer av uppgifter ett NN kan utföra. Ett NN med bara två lager (input och output) kan endast utföra synnerligen enkla uppgifter. Sedan kan ju ett nätverk konfigureras på olika sätt (hur noderna fördelas i olika lager och hur man förbinder noderna), och en smart konfigurering kan göra ett NN mer kraftfullt än ett NN med betydligt fler noder.
Nätverket i bild 1 ovan har 9 noder och maxiamlt 24 parametrar [20 vikter (en för varje ingång/pilarna) och maximalt 4 bias (de fyra noderna i det dolda lagret ingångs- och utgångslagret har ingen bias)] samt 3 lager. Jag skriver "maximalt", eftersom noder inte alltid har parametern bias. Nätverket i bild 4 har kanske 400 parametrar (gissningsvis) och 51 noder och 10 lager. Det största nätverk jag känner till är ChatGPT-4 med en biljon parametrar. Vad detta innebär i antal noder är svårt att säga. Jag har inte lyckats hitta denna uppgift, vilket kan bero på att AI-företagen ogärna uppger alla tekniska data. Som jämförelse kan nämnas att den mänskliga hjärnan innehåller 86 miljarder neuroner och ca 100 biljoner kopplingar mellan dessa. Det är emellertid svårt att jämföra den mänskliga hjärnan med NN. Artificiella neuroner är ett försök att mycket grovt efterlikna hjärnans neuroner och fungerar på helt andra sätt än biologiska neuroner.
När ett NN tränas så ändrar således nätet självt de olika parametrarna (vikter, bias etc) så att indata förknippas med utdata på rätt sätt. Man minimerar således under inlärningsprocessen avvikelser mellan nätverkets förutsägelser och verkligheten.
Vid träningsprocessen får nätverket ett "facit" som anger hur en uppsättning data skall korreleras med en annan uppsättning data. Systemet prövar sig fram genom att testa olika värden på vikter och bias. Detta sker inte blint utan styrs av statistiska algoritmer så att systemet stegvis blir allt bättre på att göra korrekta korrelationer. När man uppnått en viss nivå av korrekta korrelationer är nätverket klart att användas för att behandla data utanför facit.
Vid maskininlärning sker alltså inga fysiska omkopplingar (typ sladdar som flyttas), eller programkod som skrivs, utan det är de olika parametrarna som ändras, av nätverket självt. Vikterna och bias etc i de olika lagren är neurala nätverks motsvarighet till programvara och kan representeras av en matris.
(Klicka här för att läsa Wikipedias artikel om neurala nätverk (engelska Wikipedia den som vill ha en mer kortfattad text rekommenderas att gå till svenska Wikipedia i stället)
I ett konventionellt datorprogram kan man se hur programmet fungerar genom att läsa källkoden (den kod som programmeraren skrivit uttryckt i något programmeringsspråk; Pascal, C++, Fortran etc). Detta kan vara ganska svårt när det gäller komplexa program men är i princip fullt möjligt.
När det gäller NN finns ingen källkod, eftersom det är maskinen själv som genom självinlärning valt de olika neuronernas vikter och bias. Och även om man skulle göra en lista på alla neuronernas parametrar är det omöjligt (en gissning från min sida) eller i varje fall mycket svårt att med hjälp av logik avgöra vad programmets uppgift är och hur det fungerar. Beroende på att NN inte arbetar utifrån stegvisa logiska instruktioner utan utför statistiska korrelationer. Det enda vi vet är att programmet utför den uppgift det blivit tilldelat, dvs vi känner till vad vi stoppar in och vad som kommer ut. Punkt slut. De mellanliggande stegen är inte åtkomliga utifrån. Berättelsen om de kinesiska skrivtecknen i huvudartikeln utgör en utomordentlig illustration av hur neurala nätverk fungerar.
Då neurala nätverk körs på en vanlig processor handlar det, som vi konstaterat ovan, om simulering. Nätverket finns inte i fysisk bemärkelse utan existerar i cyberspace som en simulering. Ungefär som en flygsimulator. Hur realistisk en sådan simulator än må vara, och hur fantastisk grafik den än har (idag är det svårt att skilja en skärmdump från en flygsimulator och motsvarande foto från verkligheten), finns inget flygplan som man kan ta på inuti datorn. Det enda som finns är myriader av ettor och nollor (i form av elektriska pulser på 5 volt respektive 0 volt), vars flöde skapar det vi ser på skärmen och hör i högtalarna. Och precis som att ett flygplan i simulatorn beter sig väldigt nära det riktiga planet så beter sig simuleringen av ett artificiellt, neuralt nätverk precis som motsvarande fysiska, artificiella, neurala nätverk.
Man kan köra AI och AGI utan neurala nätverk men fördelarna med sådana nätverk är så stora att fler och fler AI går över till NN. Man behöver inte ha någon speciell dator för att köra neurala nätverk (eftersom det handlar om mjukvarusimulering) utan de går att köra på en vanlig dator, läsplatta eller smartphone (assistenten på iPhone, kallad Siri, genereras av ett NN), användande en vanlig processor (CPU). Stora NN (vilket krävs för avancerade AGI) kräver dock mycket kraftfulla processorer. I princip finns två processorer i en vanlig dator:
1. CPU (generell processor den grundläggande processorn i en dator) utför logiska operationer (and, or, not). Denna är "huvudpersonen" på det s k moderkortet. Styrs av programvara som genom givna algoritmer och regler gör beräkningar och logiska inferenser. Processerna kan snabbas upp, förutom genom högre klockfrekvens, genom processorer med flera kärnor eller genom flera CPU parallellt.
2. GPU (grafikprocessor) sköter om grafiken på en dator (kan finnas integrerad i samma chip som CPU eller kan finnas som en egen, separat processor på ett eget kort). Arbetar i ett stort antal parallella trådar, vilket är perfekt för NN.
Observera alltså att NN inte är en processor utan en mjukvara (som genererar mängder av virtuella processorer, dvs noderna). Man simulerar således neurala nätverk genom ett program.
3. Sedan finns det speciella processorer för NN, betecknade NPU. Dessa arbetar parallellt med CPU och kan vara integrerade på samma chip. De ger inte snabbare NN än en kraftfull CPU men avlastar CPU:n och förbrukar också mindre energi. Just nu tävlar processortillverkare som Nvidia, AMD och andra om att få fram ultrasnabba kretsar som lämpar sig för NN och i förlängningen AGI. Obs, NPU är inte samma sak som ovannämnda neuromorfiska processorer.
Vid konventionell programmering talar programmet, som normalt är skrivet av en människa (programmerare), om för datorn exakt vad den skall göra. Steg för steg. T ex utföra en algoritm eller rita en funktionsgraf eller beräkna hållfastheten hos en flygplansvinge. Exempel på logiken i två konventionella program:
1 Kalkylprogram: Multiplicera talet i minnescell A med talet i minnescell B och lägg sedan resultatet i minnescell M. Tag därefter talet i M och dra kvadratroten ur detta och skriv sedan ut resultatet på bildskärmen (alternativt en skrivare).
2. Autopilot på ett fartyg: Om kompasskursen ökar, vrid rodret åt vänster proportionellt mot ökningen. Om kompasskursen minskar, vrid rodret åt höger proportionellt mot minskningen.
Här vet man steg för steg exakt vad systemet gör. Och kan förstå varför och kan upptäcka fel i programmet (om det finns några).
Vid neurala nätverk talar man om för nätverket vilket resultat man vill uppnå utifrån en uppsättning data. Dvs man anger kända par av indata och motsvarande utdata och sedan får systemet koppla om sig/anpassa sig så att den givna relationen mellan in- och utdata uppfylls (detta görs, som förklarats ovan, genom att vikter och bias etc i neuronerna ändras baserat på statistiska beräkningar).
Under träningsprocessen kör nätverket igenom alla data och jämför med facit. Vid första körningen kommer felen att vara stora (jag antar man utgår från någon standardinställning av parametrarna). I nästa steg ändrar systemet en del av parametrarna och ser om felet har ökat eller minskat och ändrar sedan parametrarna åt det håll som gör att felen minskar. Detta upprepas gång på gång och när man börjar närma sig den eftersträvade precisionen görs bara små små justeringar. Ändringarna görs inte slumpmässigt utan beräknas statistiskt så att processen hela tiden leder åt rätt håll (mot ökad precision). Det handlar således om en rekursiv iterationsprocess och ju fler iterationer man kör desto bättre blir precisionen. Men tar samtidigt längre tid. Klicka här för att se en illustration eller liknelse, som förhoppningsvis kan öka läsarens förståelse av hur NN fungerar.
NN kan sedan själv fortsättningsvis koppla ihop nya okända par av in- och utdata. Data kan bestå av tal (beräkningar, reglerteknik), ord (översättningar), (logiska) påståenden (beslutsprocesser o dyl) etc. Genom att få ytterligare information om in- och utdata kan ett neuralt nätverk förfina kopplingarna så att systemet ännu bättre avspeglar de sökta sambanden (självinlärning).
NN är således en svart låda (black box), dvs man känner normalt inte till de inre kopplingarna (parametrarna) och förstår därför inte hur nätverket fungerar på detaljnivå. Det enda man vet är att man utifrån indata får rätt/önskade utdata. Och det är ju det som är det intressanta. Man har helt enkelt skapat en statistisk koppling mellan in- och utdata, men bryr sig inte om detaljerna utan är nöjd med att det fungerar.
Som läsaren säkert förstår vid det här laget så använder inte NN logisk slutledning för att komma fram till sina resultat. NN är mer att jämföra med intuition, vilken innebär att man har en känsla för vad som är lösningen utan att kunna förklara eller motivera, ens för sig själv, hur man kommit fram till denna. Många duktiga yrkesmän har väl utvecklad intuition inom sitt område och har oftast (men inte alltid) rätt. De svar som NN ger kan på sätt och vis ses som förslag till lösningar, vilka med stor sannolikhet är korrekta eller nästan korrekta, men inte alltid är det. Problemet är att NN själv inte kan förklara eller motivera varför dess lösningar är korrekta, eftersom lösningarna inte är baserade på logik utan på sannolikheter och korrelationer och är helt dolda för en utomstående observatör. Man kan säga att NN (och därmed de AI och AGI som har NN som plattform) ger holistiska lösningar (som ser till helheten). NN ger med andra ord ett slags allmänt omdöme (vars underlag inte går att kontrollera) medan logik (konventionella datorprogram) delar upp problemet i delproblem och sedan stegvis bygger upp en helhet utifrån detta. I det senare fallet kan man förklara hur processen fungerar (genom att granska varje steg) medan man i det första fallet (holistiskt tänkande) inte kan förklara eller förstå någonting av processen utan helt enkelt har att böja sig under det svar man får och i blind tro lita på att det är sant. Oraklet har talat!
Det senare är en av nackdelarna med NN, eftersom det är omöjligt att förstå hur ett neuralt nätverk kommit fram till sina slutsatser, dvs ingen människa kan förstå och bedöma och kontrollera om slutsatserna är korrekta. Det kan t ex finnas korrelationer mellan datamängder som hittas av NN men som inte är kausala (orsak och verkan). Och en NN, som jag ser det, är oförmögen att skilja mellan orsak och verkan å ena sidan och korrelation (samvariation beroende på slump eller någon ytterligare faktor) å andra sidan.
Den globala medeltemperaturen och atmosfärens koldioxidhalt är korrelerade. Det kan vi mäta. Om man skall vara fullständigt objektiv finns det här tre möjliga förklaringar till den observerade korrelationen:
- Koldioxidhalten (CO2) ökar på grund av människans utsläpp (eventuellt i kombination med ökande naturliga utsläpp från vulkaner etc), vilket ger en ökande temperatur (den allmänt accepterade förklaringen).
- Temperaturen ökar av någon anledning (t ex på grund av ökande solinstrålning), varvid världshavet (som innehåller enorma kvantiteter löst CO2) värms upp. Ju varmare vattnet är desto mindre CO2 kan lagras där, dvs CO2-halten i atmosfären ökar på grund att det allt varmare havet avger mer och mer CO2.
- Både temperaturen och CO2-halten ökar på grund av någon tredje parameter som förändras.
Jag hara svårt att se hur en NN-baserad intelligens, som enbart kan se statistiska korrelationer, skulle kunna avgöra vilket av dessa tre alternativ som är det korrekta. Bara detta visar, enligt min mening, på nödvändigheten av att komplettera de neurala nätverken med logiska kretsar. Hos en människa finns både logik och holism (intuition) integrerade, vilket ger helt andra möjligheter att förstå och dra rätt slutsatser. För att en AGI skall närma sig mänsklig intelligens måste den således, enligt min mening, bygga på något mer än neurala nätverk (även om dessa kan utgöra en viktig del).
Neurala nätverk fungerar dåligt när det gäller matematik. ChatGPT, som har NN som plattform, är känd för att ge felaktiga svar på lite mer komplicerade matematiska frågor. Jag behövde hjälp med att ta fram en primitiv funktion för några veckor sedan, i samband med att jag skrev en text om klimatet. Jag skrev in funktionen och tryckte på OK, och efter några sekunder fick jag svaret, som var helt, totalt felaktigt, vilket jag direkt kunde se. Jag tog då fram min iPhone och startade ett gratisprogram som heter SymCalc+ och valde integration och skrev in funktionen. Och vips, på mindre än en sekund, fick jag det korrekta svaret. Och SymCalc+ är ingen AI utan en ren kalkylator som bygger på logisk, konventionell programmering, dvs exekverande av färdiga algoritmer (räknescheman). Och min iPhone 6S är ingen superdator utan en synnerligen medioker dator (jämfört med det datorsystem som driver ChatGPT).
Jag har därför svårt att tro att neurala nätverk helt kommer att ersätta konventionella logiska program när det gäller AGI. Ett system som enbart bygger på felminimering genom iterationsprocesser (beskriven ovan) kan omöjligen ersätta mänsklig, skapande intelligens uppbackad med moral. Att t ex basera ett samhälles framtida klimatpolitik enbart på en AGI med neurala nätverk som plattform är därför inte acceptabelt. Speciellt med tanke på att vi inte kan kontrollera hur denna AGI kommit fram till sina slutsatser. Ett samhälles framtid kan inte baseras på blind tro på maskiner.
Därför måste framtidens AGI innebära att AGI:n alltid kan förklara logiskt hur den dragit sina slutsatser. Så att människor kan kontrollera att programmet gjort rätt. Forskning på sådana program pågår och har nått viss framgång när det gäller geometriska problem.
Tillbaka till huvudartikeln "Artificiell intelligens (AI/AGI) vad är det?"
Till underartikeln "Montecarlometoder"
Tillbaka till huvudartikeln för avdelningen "Vetenskap och tro"