lördag 15 oktober 2016

Vad vet vi om vad som händer i ett AI?

Det finns ett problem som dyker upp på bloggen så här års: Vad ska man egentligen skriva om Nobelpriset, förutom "så intressant!"? Jag menar, det är i regel väldigt intressant, men det finns också i regel många andra som inte bara kan mer om upptäckten utan som också faktiskt skriver om den, eftersom det är så uppmärksammat. Därför tänker jag, trots att årets pris är lite extra intressant för mig eftersom det har med fasta tillståndets fysik att göra, blogga om något helt annat. Så eftersom det var Ada Lovelace-dagen i onsdags, vad sägs om en reflektion på temat artificiell intelligens?

Mina grundkunskaper om AI är visserligen över 10 år gamla och härrör från en kurs i filosofi (ja, faktiskt), men även där var man noga med att skilja på "good old-fashioned artificial intelligence" (GOFAI) och nyare metoder som använder modeller av nervsystemet, kallade artificiella neurala nätverk (ANN), och tränar dem till att utföra olika uppgifter. GOFAI bygger på att man programmerar in tämligen specifika instruktioner som låter programmet agera "intelligent": Om X, gör A, annars om Y, gör B, annars gör C. Datorn Deep Blue som slog Gary Kasparov i schack är ett exempel, på så sätt att den var beroende av fördefinierad heuristik - en databas av tumregler för vad som är ett bra schackdrag, definierade av människor när programmet skrevs.

Med ett ANN, å andra sidan, handlar det om att skapa ett system som kan lära sig saker. De neurala nätverk som jag läste om för 10 år sen hade ett antal noder som var kopplade till varandra. Styrkan i kopplingarna kunde justeras beroende på vad systemet skulle lära sig, något som skedde genom att man gav en viss indata tillsammans med "rätt svar" för indatan i fråga. Beroende på hur väl systemets svar och rätt svar stämde överens ändrades styrkan i kopplingarna mellan noderna (har för mig att det handlade om att känna igen siffror i det lilla ANN vi fick göra datorlaborationer på). Vad jag förstår är det mer avancerade och komplexa varianter av ANN som man syftar på när man idag pratar om "deep learning" i datorsammanhang - just att man tränar sitt system att utföra en viss uppgift, men låter det hitta lösningarna själv i stället för att försöka programmera in en lösning på varje tänkbart problem. (Det förklarar varför AlphaGo kan göra drag i go som ingen människa någonsin använt, medan Deep Blue var hänvisad till mänsklig kunskap om vad som är vettigt att göra i schack.)

Men om ett ANN kommer fram till hur den ska lösa ett problem - känna igen en bild, till exempel - genom en sådan träningsprocess, är det säkert att vi förstår hur lösningen ser ut och varför? Tydligen inte, enligt en nyhetsartikel som dök upp i tidskriften Nature för ett tag sen. I artikeln ger forskare inom området exempel på hur fel det kan bli om ett ANN lär in något som plötsligt inte stämmer i vissa situationer, så att det till exempel misstar en sicksacklinje för en sjösjärna på en bild. Artikeln beskriver hur man strävar efter att göra ANN både mer transparenta, så att man ska kunna förstå i efterhand hur nätverket arbetar, och svårare att lura. Dock finns det också de som hävdar att ANN blir komplexa för att världen är komplex, och att en del av det som ett ANN lär sig inte går att uttrycka på ett bra sätt i ord eller formler - att ett ANN kan ha tillägnat sig samma sorts tyst kunskap som människor som är oerhört skickliga på exempelvis ett hantverk men inte kan förklara hur de gör.

Det är intressant att man har börjat försöka göra ANN mer transparenta och förstå hur deras inlärda lösningar ser ut. Det vore också intressant om det kunde lära oss något om hur vi själva lär oss saker, eller om så kallad tyst kunskap. Framför allt tror jag dock att det är viktigt att man tänker på hur de här systemen fungerar när man talar om möjligheter och risker med AI. Förvånansvärt ofta utgår den diskussionen från att vi fortfarande förstår precis hur de maskiner vi bygger arbetar - och riktigt så enkelt är det tydligen inte längre.