Lite kommentarer till rättningen

Rent allmänt är jag glad att se att folk svarade så bra, uppenbarligen var ämnet inte hopplöst trots den virrige doktoranden som föreläste :-) Jag har rättat utgående från ungefär följande tänkta "idealsvar":
I vanlig programmering specificerar man ett problem och hur det ska lösas, och sedan skriver man explicit kod för att utföra detta. Koden använder komplexa datastrukturer och algoritmer för att lösa detta. I ett neuronnät, som består av många enkla noder tätt kopplade i ett nätverk, sker användningen genom att man tränar nätverket att producera rätt resultat (nätverkets kopplingstruktur och inlärningsmetoden varierar beroende på problemet). Man anger alltså inte explicit hur problemet ska lösas, utan hur man kan lära sig lösa det. Fördelarna med neuronnät är att man inte behöver veta hur lösningen ska se ut för att kunna lära sig den, den kan vara rätt vagt specificerad, genom att information är fördelad mellan många neuroner spelar det ingen roll om vissa faller bort, nätet tål ofta störningar hyfsat och kan generaliser a till nya fall. Nackdelarna är att man inte kan vara säker på att lösningen är den bästa eller alltid korrekt (validering är svårt), det krävs en hel del datorkraft för att träna och köra stora nätverk, ibland kan det vara svårt att hitta bra sätt att träna vissa problem och ofta behövs det mycket övningsdata för att kunna ge en tillräckligt bra inlärningsbas.

ANN vs GA

Ganska många blandar ihop neuronnät med genetiska algoritmer (ibland kallade evolutionära algoritmer). Båda är "svart låda"-inlärning, man ger systemet ett problem/data att lösa/lära sig och bryr sig inte om hur systemet egentligen gör det. Skillnaden (och den är rätt stor) är att man tränar ett neuronnät med en inlärningsregel (t.ex. övervakad inlärning, oövervakad inlärning eller förstärkningsinlärning), medan i genetiska algoritmer har man en hel population av objekt (som kan vara neuronnät, program eller andra datastrukturer) som tävlar om att bli bra genom att de får "ungar" med varandra, och de bästa individerna går vidare. Neuronnät arbetar så att säga på individnivån (vad man lär sig under livet), genetiska algoritmer på populationsnivån (hur utvecklas en art). Naturligtvis kan de kombineras, vilket är ett spännande forskningsfält idag.

Hårdvara

Ett annat vanligt misstag är att man tror att neuronnät måste köra på speciell hårdvara, att varje neuron motsvaras av en processor. Det gör man sällan, specialhårdvara är dyrt, så man simulerar istället alla neuronerna i mjukvara på en vanlig dator. Det fungerar bra även på små datorer, även om det är jobbigt. En dag kanske riktiga neuron-datorer dyker upp, men de är ovanliga idag.

Dilemman

En vanlig "nackdel" med neuronnät som uppgavs var att de skulle kunna bli intelligenta och därmed leda till svåra etiska frågor, oväntade problem eller rent av ta över världen. Jag har inte gett några poäng för detta, eftersom (1) etiska/politiska/ekonomis ka dilemman inte kan sägas vara en nackdel i själva tekniken (Internet och mediateknik i allmänhet har ju också en otrolig massa dilemman och konsekvenser , både bra och dåliga, men det är ju ingen direkt nackdel för tekniken), och (2) detta är för närvarande helt hypotetiska frågor, som kan bli relevanta i framtiden men inte kan ses som ett problem hos tekniken idag, vilket var vad jag frågade om.

Jag kanske hypade neuronnät och AI lite väl mycket på min föreläsning och gav er för stora förhoppningar. Jag diskuterar naturligtvis gärna konsekvenserna av neuronnät, AI och liknande saker, men det är snarare frågor för en rejäl uppsats eller en rolig diskussion än en tentafråga.

Anders Sandberg, asa@nada.kth.se