Hästen kallad Clever Hans, som ifall hans tränare stod nära kunde utföra matematik

Intro till artificiella neurala nätverk

Del 1: Den teoretiska introduktionen till AI-tekniken artificiella neurala nätverk (ANN).

Förbehåll:
Nej, jag är ingen AI-expert. Och vem är det egentligen? Dock har jag lagt ett gäng år med intensiv omvärldsbevakning och innan dagens AI-hajp kom igång har informationsarkitektur, i bemärkelsen datastrukturer, länkade öppna data, NLP som beställarkompetens inom sökteknik och liknande, varit sådant jag jobbat med åtminstone de senaste 10 åren.

Min senaste insats inom AI är rapporten åt det strategiska innovationsprogrammet Swelife – AI för bättre hälsa - som släpptes i januari. Dessförinnan en förstudie 2018 åt Västra Götalandsregionen – AI och machine learning för beslutstöd inom hälso- och sjukvård.

Det är tydligt att det finns en efterfrågan på lite enklare förklaringar av det som ryms inom området artificiell intelligens. Så trots att jag inte vill få det att verka som att jag är någon AI-expert ger jag mig här på att i text försöka förenkla det jag tycker mig ha förstått om delområdet artificiella neurala nätverk (ANN), vilket bland de som vill ge ämnet en fräschör kallas för deep neural networks (DNN) när det råkar handla om djupinlärning som metod.

Intro till neurala nätverk

Skillnaden mellan ett naturligt neuralt nätverk och ett motsvarande som är artificiellt är att det senare är skapat. Det artificiella är designat för ett specifikt syfte. Det är inspirerat av ett naturligt neuralt nätverk men inte en exakt kopia. Artificiella neurala nätverk (ANN) är en av teknikerna inom det ganska breda fältet artificiell intelligens (AI). Mer specifikt delen som handlar om maskininlärning.

Så hur svårt är det att skapa ett eget neuralt nätverk? Det och lite mer ska vi gå igenom med denna serie i miniatyr av bloggposter. I denna första del slipper du se någon programmeringskod, det kommer i nästa del, istället blir det bakgrund och teori. Förhoppningsvis en god grund som gör att du i nästa del står ut med lite programmeringskod. Tro mig, det blir enklast möjliga kod. I bilaga 1 av AI för bättre hälsa lär vi en maskin ett beslutsträd för klassificering av frukt med 10 ynka rader kod. Så nej, du ska inte behöva oroa dig för jobbig kod i nästa del.

Varför bygga artificiella neurala nätverk, alls?

Människan har sedan urminnes tider försökt innovera. Att komma på nya och kreativa lösningar för att uppnå våra mål. Fram till industrialiseringen handlade det mycket om att optimera jaktutrustning, driva djur mot lämpliga stup, boende, matlagning, jordbruk och djurhållning, bland mycket annat. Under industrialiseringen, med start på 1700-talet, började storskalig produktion, och därmed större behov av energi, komma igång på allvar.

Maskiner ersatte människors muskler

En stor poäng genom historien har varit att minska människans insats vid produktion. Att nytta skapas enklare, lite mer av sig själv, autonomt på sätt och vis. Först genom att dra nytta av (andra) djur, som att vi var asätare på savannen och därför slapp fälla våra byten själva, senare att ha hjälp av hundar vid jakt, boskap som hjälpte till att plöja åkern, och så vidare. När mekaniseringen kom blev det traktorer, ånglok och spinnmaskiner som fick grovjobbet gjort.

Människan behövde inte längre slita fullt så hårt, rent fysiskt. Ett mellansteg i utvecklingen som även eftersläntrande branscher så sakteliga börjar lämna är datoriseringen, alltså inte digitaliseringen utan snarare att man ställt fram en massa elektriska apparater likt datorer, faxar och telefoner. En av branscherna som pekas ut som “konservativ” är läkekonsten, den bransch jag själv försöker stötta på arbetstid. Eller som en av mina idoler, Eric Topol, beskriver det:

“[…] although most sectors of the world are well into the Fourth Industrial Revolution, which is centered on the use of AI, medicine is still stuck in the early phase of the third, which saw the first widespread use of computers and electronics”
– Eric Topol i hans bok Deep Medicine (2019)

Maskiner ersätter människans hjärna

Människans senaste våg av innovation handlar till stor del att ersätta en människas hjärna i den utsträckning det är möjligt. Att maskiner ska börja klara av saker som att översätta text mellan olika språk, att hitta mönster i en datakälla, ge beslutstöd till specialister och annat som har med hjärnans olika förmågor att göra.

Att maskiner inte bara är autonoma i bemärkelsen att de kan sköta sig själva när de producerar saker eller utför sina sysslor, de ska också vara autodidakt, alltså självlärande i någon utsträckning:

“Autodidaktik, självundervisning, innebär att förvärva sakkunskaper utan att erhålla dem genom formell undervisning . Ordet stammar från grekiskans autos (‘själv’) och didaskein (‘lära’, ‘undervisa’), och betyder därmed ‘självlärdhet’. En självlärd person är en autodidakt.”
Autodidaktik (Wikipedia)

Mycket hajp bakom allt med AI

Allt kring “intelligens” är ett svårt ämne. Dels för att det inte finns något bra sätt att mäta det men också för att AI är så hajpat att det dyker upp många lycksökare.

Att försöka luras med att man har en intelligent maskin är inget nytt. Ett känt tidigt exempel är den mekaniska turken. Den består av en dold människa som hjälper till att lösa uppgifter som maskiner inte klarar av. Idag är konceptet med “mekaniska turkar” en hel industri, att över nätet hyra människors kognitiva förmågor, praktiskt taget alltid i låglöneländer. En “mekanisk turk” i Filippinerna kan mycket väl manuellt ha granskat ditt senaste byte av profilbild i sociala medier.

Ursprungligen avsåg begreppet med mekanisk turk en “automatiserad” schackspelande maskin. Och frågar du Garry Kasparov om IBM:s maskin Deep Blue är intelligent, bara för att den vann över Garry i schack, säger han bestämt nej. Enligt Garry Kasparov hade den bara överlägsen beräkningskraft jämfört med en människa.

Intelligenta organismer? Hur smarta är djur?

Slemsvampar är ett exempel på organism som inte har någon hjärna men trots det uppvisar ett intelligent beteende. Som en förmåga att lära sig. Men att exempelvis växter besitter intelligens har varit omdebatterat ända sedan Charles Darwin lanserade idén på 1800-talet.

'Bild 1: Hästen Clever Hans och von Osten.' Bild 1: Hästen Clever Hans och von Osten.

Även djurs intelligens, eller om vi hellre vill kalla det för slutledningsförmåga, är något vi människor missuppfattat och överskattat genom historien. Ett exempel är hästen Clever Hans som påstods klara av intellektuella saker som matematik. Problemet var bara att hästen misslyckades så fort hans tränare inte var i närheten.

“After a formal investigation in 1907, psychologist Oskar Pfungst demonstrated that the horse was not actually performing these mental tasks, but was watching the reactions of his trainer. He discovered this artifact in the research methodology, wherein the horse was responding directly to involuntary cues in the body language of the human trainer, who had the faculties to solve each problem. The trainer was entirely unaware that he was providing such cues.”
Clever Hans (Wikipedia)

Hästen var helt enkelt en människokännare. Det skulle också kunna ses som intelligens, men det är en annan diskussion.

Ett neuralt nätverk - ett nätverk av neuroner (hjärnceller)

Ett neuralt nätverk finns i varje hjärna. Även väldigt små hjärnor, som duvors, klarar av ganska komplexa saker. Som att flyga, anpassa sig till vinden, upptäcka fiender, hitta mat med mera. Så med tanke på den ständiga ökningen i beräkningskraft var det nog oundvikligt att vi skulle kunna bygga en artificiell hjärna. Om än långt ifrån så avancerad som vår mänskliga hjärna.

hur många neuroner/hjärnceller har olika djur? Jo:

  • Maneter har 5600 stycken
  • Fruktflugor har en kvarts miljon
  • Kackerlacka cirka en miljon
  • Duvor har 72 miljoner neuroner
  • Människor har 86 miljarder neuroner

Det är också väsentligt hur många synapser som finns. Synapserna är själva vägnätet mellan neuronerna och utgör nätverket. En synaps tillåter en neuron att skicka en elektrisk eller kemisk signal till en annan neuron. Tillsammans kan de lösa olika uppgifter, allt från enkla saker till väldigt avancerade ting.

En enskild neuron är bra på något och blir mer vältränad över tid. Den upptränade neuronens roll kan exempelvis vara att känna igen din mormor, därav namnet på den hypotetiska “mormor-cellen”:

”In the 1960s neurobiologist Jerome Lettvin named the latter idea the “grandmother cell” theory, meaning that the brain has a neuron devoted just for recognizing each family member. Lose that neuron, and you no longer recognize grandma.”
One Face, One Neuron (Scientific American, 2005)

Träna upp ett neuralt nätverk

Nätverket kan lära sig saker. Det finns lite olika sätt hur lärandet kan gå till:

  • Förstärkningslärande (Reinforcement learning) – att nätverket får utforska olika lösningar och vägleds av en belöning och ett straff (eller på tekniska en reward- eller cost-funktion). Det kan jämföras med att lära sig att cykla - härligt när man susar fram men bittert när man cyklar omkull. Lärandet är att optimera mängden tid på cykeln och undvika smärtan att krascha.
  • Övervakad inlärning (Supervised learning) – nätverket tränas upp genom att matas med exempel på saker. Som bilder på katter och hundar, där respektive bild också annoterats , alltså har en etikett med vilket djur bilden föreställer. Nätverket har alltså tillgång till facit. När det tränats klart ska det börja diskriminera nya intryck och bestämma vad som är en katt och vad som är en hund.
  • Oövervakad inlärning (Unsupervised learning) – nätverket får klara sig själv utan ett facit och letar mönster utan någon tydlig vägledning. Ett positivt sätt att se på oövervakad inlärning är att det inte begränsas av människors kunskap, ett mer negativt sätt är att den återkommer med banala insikter som att det verkar främst vara män som drabbas av prostatacancer.
  • Generative Adversarial Network (GAN) - är egentligen en lösning med två olika neurala nätverk som “duellerar” varandra. Det ena får ett facit likt ett nätverk som drar nytta av övervakad inlärning, det andra nätverket gissar vilt till en början och får återkoppling från nätverket med facit om hur bra gissningar den gjorde. Duellen går ut på att det ena nätverket har ett försprång och det andra blir allt bättre på att gissa.
    De utmanar varandra och lär sig tillsammans. Efter ett tag börjar det gissande neurala nätverket bli ganska duktig på att skapa / generera data som liknar något realistiskt, samtidigt som det andra nätverket blir allt duktigare på att skilja gissningar från sitt facit.

'Bild 2: Exempel på egenbyggt Generative Adversarial Network (GAN) som 2018 fick till uppgift att generera bilder som liknade djur. Bilden visar sex iterationer av lärande som redan började ge diffusa resultat.' Bild 2: Exempel på egenbyggt Generative Adversarial Network (GAN) som 2018 fick till uppgift att generera bilder som liknade djur. Bilden visar sex iterationer av lärande som redan började ge diffusa resultat.

'Bild 3: XKCD skojar om att varje grej en människa gör tekniskt sett är att träna upp ett neuralt nätverk, dock inte ett artificiellt sådant.'
Bild 3: XKCD skojar om att varje grej en människa gör tekniskt sett är att träna upp ett neuralt nätverk, dock inte ett artificiellt sådant.

Varför träna upp ett neuralt nätverk (eller annan form av maskininlärning)?

Det är ett klassiskt problem inom datorvetenskapen att man tillämpar alldeles för avancerad teknik på ett problem man försöker lösa. När det gäller neurala nätverk (och maskininlärning) står det i kontrast till hur man annars skulle göra. Ett alternativ är så kallade expertsystem, de är regelbaserade och reglerna är skrivna manuellt av människor fast på maskiners språk. Fördelen med expertsystem är att man har tydligare kontroll över lärandet men med dagens datamängder är det inte görbart att manuellt skriva regler för, ens en enda eller flera, stora datakällors alla nyanser.

I ett exempel jag tog fram våren 2019 tog det tio rader Python-kod att beskriva data, hämta in funktioner för ett beslutsträd, träna upp maskinen och förutsäga om en ny frukt var ett äpple eller apelsin. “Datakällan” var fyra frukter med två olika egenskaper, vikt och typ av yta.

Föregående paradigm inom utveckling, expertsystem alltså, hade varit mer manuellt. Redan här, att manuellt beskriva de två olika sorters frukter, fyra frukter allt som allt, programmatiskt med if-satser skulle ha varit onödigt mödosamt. Tänk då om du vill ha in ett större antal olika sorters frukter och då behöver tusentals exempel av varje frukt. Det blir väldigt mycket kod att skriva för experten, enbart för att lära en maskin något praktiskt taget varje treåring behärskar… Genom maskininlärning hjälper du maskinen, likt föräldrar med sina småbarn, att passa in sina intryck i en struktur. Först efter det kan du ställa frågor som: “Är det här en apelsin?”

Varken AI eller maskiner är egentligen intelligenta...

En dator/AI är egentligen bara en glorifierad miniräknare. Det är bara på grund av att de är ruskigt snabba som gör att de kan bidra med allt vi vill att de ska göra för oss. Vissa saker är datorer väldigt bra på. Eller, de är egentligen bara bra på matematik och tillämpad statistik. Men om man kan omvandla ett problem till matematik kan en dator väldigt enkelt hjälpa till.

Den nivå av uppvisad magi, eller nivå av att bli imponerad som man kan uppleva med teknik, hänger mer ihop med att man inte riktigt förstår vad maskinen gör bakom kulisserna.

“All tillräckligt avancerad teknologi är omöjlig att särskilja från magi.”
Clarkes lagar (Wikipedia)

Det är själva sysslan för AI. Att omvandla svåra problem till något matematiskt, något en maskin kan bearbeta med hjälp av beräkningskraft.

Om du relaterar till en människas förmåga: Att känna igen en annan människa är något människor gör utan nämnvärd ansträngning. Det är desto värre för en maskin. En människa lär sig en annan människas utseende väldigt snabbt, medan en maskin behöver väldigt många exempelbilder innan den börjar kunna känna igen någon.

Man kan tala om att människor har ett stort försprång inom många kognitiva sysslor, som att känna igen någon. Vår hjärna har spår av utveckling från åtminstone hundratusentals år tillbaka, om inte många miljoner år, där förmågan att behärska vissa saker styrts av evolutionen. Vi har ganska nyligen börjat försöka lära maskiner att göra samma saker, men vi vet inte heller riktigt hur den mänskliga hjärnan klarar av det, vilket gör det svårt att fullt ut imitera den biologiska motsvarigheten.

Processen att komma fram till ett resultat

All form av utveckling, åtminstone med hjälp av maskiner och systemutveckling, är att bryta ner det man vill uppnå i delmängder man klarar av att lösa.
På den mest högtflygande och abstrakta nivån har vi följande process:
1. Ingående data -> 2. Bearbeta -> 3. Önskat resultat

På en banal nivå kan det vara en beräkning som:
3 x 2 -> 2 + 2 + 2 -> 6

Men ingående data (också kallad input) kan också vara material som föreställer eller beskriver ett husdjur, där bearbetningen är att komma fram till ett resultat (output) i form av husdjurets art. I detta fallet är det lite svårare att förklara exakt vad som behövs i bearbetningssteget. Det är fortfarande en algoritm där, men den är mer avancerad än en omräkning mellan kilometer till mil, likt: 135 km -> dela på 10 -> 13,5 mil

Det som är glasklart är dock det önskade resultatet. Du vill "diskriminera” mellan olika arter av husdjur. Till en början kanske enbart mellan hund och katt.

Ingenjörskonsten att hitta särskiljande egenskaper (så kallad feature engineering)

“Feature engineering is the process of using domain knowledge to extract features from raw data via data mining techniques. These features can be used to improve the performance of machine learning algorithms.”
Feature engineering (Wikipedia)

Beroende på den data vi har behöver algoritmen upptäcka vissa saker. Om den bara begriper katter och hundar kan den i videoklipp i situationen när det dricks vatten försöka avgöra hur mycket vatten som spills bredvid vattenskålen. Det är nämligen ett kännetecken/egenskap (eller en feature inom data science) som är mer kopplade till hundar än katter, då katter dricker mer försiktigt. Ett annat kännetecken är att (nästan) alla katter har öron som står upp. Slokar husdjurets öron är det troligen en hund.

Eller om du vänder dig till ett högst mänskligt bondförnuft och ber om “en samlad bedömning” av någon och serverar dem beskrivande data som:

  1. mankhöjd under 50 cm
  2. viftar på svansen när den är irriterad
  3. spetsiga öron
  4. dricker vatten försiktigt
  5. hoppar inte frivilligt ner i vatten
  6. kan klättra i träd
  7. sylvassa klor

“Mycket tyder på att…”

Om du frågar en människa om vad hen tror de sju tidigare nämnda egenskaperna beskriver kommer du ofta få svaret ‘katt’.

En motsvarande metod inom maskininlärning, alltså att få en maskin eller artificiell intelligens att begripa samma sak, tycks dessvärre ha ett flertal namn. Några av dem är boosting, ensemble learning och meta-algoritmer. Den jag själv gillar mest är dock weak classifier. Den påminner mig om mänskligt tänk som “mycket tyder på att…”. Även om inte alla egenskaper beskriver varje enskild katt eller hund så är det i grova drag korrekt för nästan varenda katt eller hund vi kan förväntas stöta på.

Vill du vara drastisk kan du kalla den här förmågan att lära en maskin att dra enkla, och ibland förhastade, slutsatser för att den är fördomsfull. Det artificiella neurala nätverket lär sig bokstavligen att diskriminera mellan saker och att vara kategorisk. En förmåga som under människans utveckling varit en överlevnadsframgång samtidigt som det förstås har ett antal uppenbara baksidor. Som främlingsfientlighet, och att vi överreagerar med stress i situationer vi inte kan fly ifrån.

I vårt nuvarande tidevarv behöver både människor och den AI vi designar agera ansvarsfullt.

Förutsäga ett resultat baserat på ingående data

När du väl tränat upp ett neuralt nätverk på dessa egenskaper kan du använda den till att förutsäga om ett djur är en katt eller hund. Om du skickar in en fråga med lite indata - spetsiga öron och låg mankhöjd – kommer det öka troligheten för att det är en katt, medan slokande öron och ~inte~ sylvassa klor troligen är en hund.


En än mer perfekt datakälla, eller AI-modell, hade haft med antalet tänder för varje husdjur. Hundar har tydligen 42 medan katter har 30 st. Då hade antalet tänder på egen hand varit utslagsgivande om det fanns 31 eller fler.


Här kommer ordet modell in. Det används också i många andra sammanhang. Som bland de som jobbar med designtänkande i form av mental modell vilket beskriver situationen utmärkt. Vad är den mentala modellen för en människa när man säger att man dagen innan blev riven av sitt husdjurs sylvassa klor? Samma tänk, om, ofta gemensamma, mentala modeller återkommer mellan människor. Åtminstone inom en kultur.

Linjär funktion som skiljer hundar från katter

Låt säga att du har en datakälla med dessa husdjur och det endast är ett till noll för hur vassa klorna är (ett är väldigt vassa), samt deras mankhöjd. Om du ritar upp det kommer det se ut ungefär som nedan bild. Det kommer finnas två grupper, en med vassare klor. Mellan dem kan du dra en linje. De till vänster om linjen är hundar, de till höger är katter.

'Bild 4: Tvådimensionell representation av data och skiljelinje mellan hundar till vänster om linjen och katter till höger.' Bild 4: Tvådimensionell representation av data och skiljelinje mellan hundar till vänster om linjen och katter till höger.

Exakt placering/vinkel på linjen beror på vilken data den tränats på. Vinkeln kan anges i grader, men också som ett decimaltal mellan noll och ett. Där 0,5 är mittemellan vertikal och horisontell axel, alltså 45 graders vinkel.
Linjen i ovanstående bild är 60 grader, eller 0,67 i decimalvarianten.


Egentligen ska data normaliseras, så att x- och y-axlarna har samma skala (0-1 exempelvis). En annan förenkling som detta exempel spelar på är att det endast är två dimensioner. Tre dimensioner begriper de flesta av oss då något har ett djup likt en kub. Fyra dimensioner börjar bli jobbigt för många då saker kan börja förflytta sig. Som att något rör sig inom kuben beroende på tidpunkt för mätningen. AI kan klara av tusentals dimensioner vilket gör det nära på omöjligt att greppa för människor vad AI:n håller på med och exakt hur den kom fram till sitt resultat. Det är en anledning till att man pratar om ‘black box’, att där finns en mörk låda vi har svårt att förstå.


Om du uppdaterar ditt nätverk med varje nytt bekräftat djur kommer den på sätt och vis att vara självlärande eftersom linjens vinkel då behöver justeras allt eftersom över tid. Dock behöver du bestämma dig för exakt hur ditt artificiella nätverk lär sig. Ska den lära sig enbart av de exempel som manuellt bekräftats av en människa (genom annotering som metod), eller ska den tillåtas förskjuta “medelpunkten” för sin samlade bedömning baserat på sina egna slutsatser i kombination med indata?

Det här med kontinuerligt lärande är inte simpelt. Så kallad online machine learning. Jag fick under ehälsokonferensen Vitalis 2018 följande intryck av en “AI-sjuksköterska”:

“[att] ha en självförstärkande och negativ spiral där de använder reinforcement learning på [material] de själva genererat. Det bör bli en allt dummare AI över tid, så kallad overfitting, trots att de föreläste om att deras AI blev smartare för varje dag. Kanske glömde de berätta om hur den blev smartare trots intrycket av det som lät självförstärkande?”
AI och machine learning för beslutstöd inom hälso- och sjukvård (juni 2018)

Här är det en linjär diskriminering, att man hittat en linjär förklaring till hur man klassificerar katter och hundar. Dock viktigt att man inte målar in sig i ett hörn med sina algoritmer.

En annan variant av linjärt samband är (hypotetiskt) att äldre katter har slöare klor än kattungar. Då skulle man kunna göra en regressionsanalys och komma fram till hur gammal katten troligen är enbart baserat på hur vassa klor den har.

Med lite hjälp kan ett neuralt nätverk hitta samband som detta i en datakälla och sedan svara på frågor som hur troligt det är att ett djur är en hund om dess klor är “0,4” vassa och den har 10 cm i mankhöjd. Kanske är det en väldigt liten chihuahua? Eller är det en katt?


Läs mer om artificiella neurala nätverk och maskininlärning

Mer om artificiell intelligens (AI)

Mer om ansvarsfull artificiell intelligens

Övrigt


Publicerad: 2020-03-04
Kategori: Artificiell intelligens

‹ bloggen

Hör av dig