söndag 2 november 2008

Ja, varför blir han inte tillfrågad i pigdebatten?
Jag syftar på Peter Nordin, som har fyllt 40 år 2004. Robotforskaren vid Chalmers i Göteborg, vars humanoida robotar, Perscilla och Elvis, snart kan rycka in i de svenska hushållen och vidga perspektivet i den infekterade diskussionen om klassamhällets återkomst genom pigavdrag. Dessutom avskaffar han det ensidigt könsfixerade och politiskt korrekta uttrycket "piga".
Peter lanserar nämligen både kvinnliga och manliga humanoider. Perscilla kan räknas som surrogat-piga medan Elvis är det perfekta butler-substitutet. Båda - Perscilla och Elvis - blir godtagbara ersättare för våra sinnen. Det dröjer emellertid några år innan hushållen kan "anställa" humanoider, robotar som liknar människan i storlek och rörelsesätt samt går på två ben.
Japan leder utvecklingen
- Japanerna är mycket optimistiska. Honda och Fujitsu befinner sig i frontlinjen av humanoidforskningen. De är övertygade om att redan om fem år kommer det att finnas humanoider på marknaden. Och de förutspår att branschen blir lika stor som bilindustrin,
Det betonade Peter Nordin i samband med Kreaprenörs IC-seminarium (Intellectual Challenge) i oktober 2004 på IT-universitet i Göteborg. Uttalandet inspirerade mig till en längre intervju med honom för att berika den begränsande svenska pigdebatten.
Det är nödvändigt att ge en helhetsbetonad bild, anser jag. Särskilt med tanke på att företagen i Japan talar om att använda robotar i äldrevården. Märk väl - den japanska kulturen är mer robotvänlig den västerländska. Japan har dels den mest robotiserade industrin i världen, dels ett vardagsliv, som börjar befolkas av robotar. Där finns robotiserade sushirestauranger och leksaker som Sonys robothund Aibo. Och redan 2001 öppnades världens första specialbutik för robotar i Tokyo: Tsukumo Robocon Magazine House. Lägg därtill att 2002 arrangerades den första "olympiaden" för robotar i Fukuoka, där även Perscilla deltog.
Evenemanget väckte dock ingen uppmärksamhet i Sverige. Varken den svenska industrin eller det svenska kulturlivet vurmar egentligen för humanoider. Tvärtom! Kultureliten, som dominerar massmedierna, är dessutom mycket skeptisk till detta nya fenomen.
Skrämmer begreppen som robot och humanoid? - Det tror jag inte, svarar Peter Nordin. Marknadsförarna vid Husqvarna och Electrolux, som har specialiserat sig på självgående gräsklippare respektive dammsugare, berättade för mig att även de var skeptiska till att kalla sina innovationer för servicerobotar. Marknadsundersökningen visade emellertid att en stor majoritet, speciellt landets teknikintresserade, var mycket positivt inställda till ordet robot i allmänhet och robotar i synnerhet.
Sverige satsar på servicerobotar
Likväl har Husqvarna döpt sina självgående gräsklippare till Auto Mower och Solar Mower. Och Electrolux självstyrande dammsugare lyssnar till märkesnamnet Trilobite, som har blivit en riktig prestigeprodukt för företaget. (Förresten, familjen Nordin är lyckliga ägare till de nämnda servicerobotarna.)
Överhuvudtaget tycks det svenska näringslivet och konsumenterna föredra specialiserade servicerobotar framför mångsidiga och självständiga humanoider. Och de får stark support av kultursfären.
Peter Nordin tror dock inte att detta förhållande återspeglar den klassiska konflikten mellan naturvetare och humanister. Till exempel upplever han sig själv både som teknolog och humanist. Hans familj lever intensivt dels i forsknings- och affärsvärlden, dels i musik- och konstsfären.
"Detaljister" utmanar visionärer
Hobbytecknaren Peter Nordin:- Enligt min uppfattning finns det bara två sorts människor; detaljfixerade personer och översiktsindivider. De förstnämnda fastnar i detaljer och kan aldrig skaffa sig helhetsperspektiv. De sistnämnde är däremot oftast visionär. "Detaljisterna" är förstås i majoritet. Och de finns både bland naturvetare och kulturfrästa. Som översiktsperson är Peter Nordin optimist. Han tror att den framväxande trenden med servicerobotar kommer att göra humanoida robotar önskvärda. I längden vill vi inte ha en uppsjö av specialiserade robotar - en som bara diskar, en som endast dammsuger och en som enbart klipper gräsmattan. De flesta av oss föredrar nog en människolik robot, som är mångsidig och som självständigt kan utföra mängder av uppdrag. En som kan dra egna slutsatser.
Artificiell intelligens inte skrämmande
Många är naturligtvis skrämda av tänkande humanoider, som enligt filmvärldens skräckscenario tar makten från människan. Peter Nordin avvisar bestämt denna skrämselpropaganda. Trots att han räknas som visionär står han stadigt med både fötterna på jorden. I motsats till många andra vet han vad han talar om efter många års forskning i genetisk programmering och Artificiell intelligens, AI. Den senare uppvisar intelligent beteende, löser problem och har förmåga till inlärning. Men det betyder inte att en AI-utrustad humanoid kan utmana Einsteins geni. Inte ens en normal begåvad mattelärares tankeförmåga.
Peter Nordin kalkylerar logiskt. Han är medveten om att Perscilla, som är en tung Robocopliknande metallrobot på 70 kg, blir dyr att kommersialisera. Därför har hans forskargrupp tagit fram den lille, Elvis, en kramgod robot av plast, knapp större än en femårig pojke. Elvis kan bli både "piga" och "butler" plus barnens "bästis" i hemmet. Det börjar likna succé, banne mig!!!
Marknadsföringen är långtifrån främmande för fyrbarnspappan Peter Nordin. Visserligen är han teknikutbildad på Chalmers, men har också examen i ekonomi från Handelshögskolan. Han ville tidigt veta hur forskningsresultaten kan bli affärer. Även på exportmarknader. Förmodligen därför doktorerade han i Tyskland. Följaktligen har han inte heller blivit fast enbart i forskningens instängda värld. Han fångas hela tiden av business.
Startat och sjösatt flera företag
Peter Nordin har startat och sjösatt ett flertal företag parallellt med sitt forskningsarbete - det senaste är Aitellu Omvärldsbevakning AB. Det är Sveriges ledande företag, som skapar överskådlighet av informationsflödet på Internet och i interna databaser.
För närvarande är Peder Nordin anställd som vetenskaplig rådgivare hos AstraZeneca i Mölndal medan han fortsätter sin forskning i humanoider och i artificiell intelligens på Chalmers. Därmed sagt att han tror benhårt på Elvis som en framtidsprodukt. Han skulle aldrig ägna sig åt en forskning, som saknar framtid. Hans förankring i affärslivet tillåter inte en sådan lyxhobby. Och jag misstänker att även AstraZeneca i hemlighet visar intresse för lille Elvis, humanioden, som mycket väl kan bli en profylaktisk "medicin" i äldrevården.
Men då måste Elvis bli ännu bättre, mänskligare på att imitera våra sinnen. Framförallt vårt styrsinne. Kanske borde Peter Nordins forskargrupp inleda samarbeta med de forskare, som ägnar sig åt Analogisk Visuell Mikroprocessor, CNN-UM. De som håller på att åstadkomma "sinnenas revolution". Elvis måste bli sinnespräglad. Han måste förstå sig på perception.

måndag 27 oktober 2008

Genetic Programming (GP) and the holy grail of AI

The quest for *Automatic Programming* is the holy grail of artificial intelligence. The dream of having computer programs write other useful computer programs has haunted researchers since the nineteen fifties. GP is about applying evolutionary algorithms to search the space of computer programs. To paraphrase Arthur Samuel of 1959 and argue that with this method it is possible to "tell the computer what to do without telling it explicitly how to do it".
The main hypothesis is that GP is not only the first instance of true automatic programming but also creative to such an extant that it competes with humans in solving very hard problems and therefore the solutions produced by GP can sometimes be called inventions". However most important and intriguing issue our present time is the provocative questions raised concerning definitions and claims of human competitive performance, - particularly whether we have already passed an important milestone in the history of AI - automatic programming.

söndag 26 oktober 2008

20 Rules for a wise company in the information age

1. Save all data possible. Without data: no information, no knowledge and no wisdom resulting in no value. Remember that our processing capability increases exponentially with time and in the near future great value may be derived from seemingly worthless data.
2. When saving data provide data with as much context as possible, what is it? How? and when was it captured ?what is its relationship to other data? and to other phenomena?. That way data is transformed into information. Proper tagging of data is also vital for communication of information and knowledge.
3. Abide to standards which increases the probability that information will remain information over time also to other entities in contrast to just being degraded to data.
4. Make data and information freely available within the company to an as large extent as possible. Remember that there is usually much less motivation to protect data and information compared to knowledge and wisdom. Remove all policy barriers as well as technical barriers. Make all data searchable and connect as many information-carrying systems as possible. Free flowing information represents an enormous value and usually leads to spontaneous creation of knowledge and wisdom. “Destroying information is a sin” and making information inaccessible equals destroying information.
5. Create an infrastructure for knowledge creation and sharing allowing people to exchange their hypothesises of compressed understood information. Hypothesises are embryos of knowledge, and potentialyl of wisdom and value and must be encouraged. We must set up a legal framework to allow for an unlimited discussion of hypothesises at the same time securing against any risk. Also make sure that knowledge from outside sources is readily available as information not just data e.g. textmining.
6. Acknowledge that a computer system is sometimes more creative than a human. A knowledge-extracting algorithm may try one billion ideas per hour, resulting in a creativity far exceeding a human analyst. We must constantly use and connect to data mining and to text mining systems for automatic modelling.
7. Allow for the creation knowledge and hypothesis in the most expressive forms possible. For instance as algorithmic models. Better expressiveness gives better predictive power and results in more wisdom and value. We should allow for multivariate analysis, algorithmic analysis, Bayesian representations etc on as many levels as possible. The most expressive representation is the Turing complete computer program. Use automatic modelling techniques that can model in these highly expressive languages.
8. The highest form of knowledge refinement is reasoning we must support formal and automatic reasoning. Reasoning could be what separates man from animals. We can reason about the future based on symbolic information. This allows for a much fast acquisition of knowledge and production of plans. A wise company has an infrastructure for reasoning, also in an automatic form and allows for its knowledge to be stored in a way suitable for automatic reasoning..
9. Expand the use of simulation. The low hanging fruit of science which lends it self to analytic analysis may be disappearing. Instead, we need to simulate everything to evaluate future scenarios and communicate relationships. Simulators are becoming the base for most of science and we need to lead this trend on all of our areas.
10. Use automatic planning. Planning is too complex to be carried out manually and need a large component of trial and error. Optimal planning requires constant replanning (agility) and the use of adaptive representation (e.g. adaptive study plans) and decision points (algorithmic plans).
11. Use models and representations which allows for representation of uncertainty. Science is about prediction and prediction is about uncertainty and many future scenarios. Few models are of value without some representation of uncertainty.
12. Support different persons’ needs for knowledge creation. Some prefer visual tools while other prefer symbolic tools. Sometimes “Push” is needed not “Pull” since people don’t always know what information they need.
13. Acknowledge that people come in different flavours. Some are more prone to generating ideas, hypothesises and new knowledge while others are more prone to evaluating and criticising them. Both are needed in the right balance and sometimes bridge-competences are needed for communication between the two.
14. Define value of all knowledge. That is a prequisite for wisdom
15. Acknowledge the value of both deep and shallow models. Much success is achieved by doing what works without explicitly knowing why it works, but sometimes a deep model gives superior performance.
16. Make sure that ALL plans, algorithms, actions and events are tied to a measurable quantifiable value, without tying knowledge and information to value there is no wisdom and no learning organisation.
17. Make sure that history of everything that happens, large and small is recorded. This is the basis for acquiring long-term wisdom in the organisation. All decisions and plans must be documented.
18. Monitor the compliance to prescribed procedures. Clever methods not being used are worthless.
19. Make everyone aware of the tools and methods available.
20. Measure value in a single currency. Different plans must be able to be evaluated on the same terms regardless of completely different approaches and ideas stemming from different disciplines.

The road to company wisdom, data-information-knowledge-wisdom

A top-down information centric roadmap as a very condensed executive summary


Terminology: A wise company needs to master two things: let us call them: (1) Science and (2) Engineering. (1): Science is simply the art of predicting the future. Any method with predictive capabilities is science and any method without is not. Whether we predict if a bridge will collapse in the future or if our customers will be happier using our products or if it will rain tomorrow - it is science. Luckily prediction and therefore science has recently become “a solved problem”: Surprisingly, it turns out that science is equivalent to data compression[1]or formal use of occams razor, and there are today well-defined formal methods for creating knowledge and performing true science even with completely automated methods. With this view: Science is also the process of creating knowledge, see below. 2): Engineering (or Design or Optimisation)[2] is the art of creating something of optimal value given constrained resources. Anything requiring a plan towards a defined goal is engineering. Usually this activity is much less studied and left to ad-hoc procedures despite the fact there is a growing body of theoretical knowledge to allow for a more systematic approaches to optimal planning and decision-making. A plan containing decisions is an algorithm which is the highest form for representation of knowledge and wisdom. Optimal decisions require an optimal algorithm/plan for the desired goal. Within a company such algorithms and procedures are usually called processes. Systematic and theoretically founded methods for engineering exist but are too little known.I will tie the rest of this introduction to my version of the Data-Information-Knowledge-Wisdom framework. In this context: Data is any fact (numbers, text, symbols) that is or can be written on paper stemming from events in the world. Another way to say the same thing is that: data is digital symbols produced by analogue observations in the universe. Information is data with a context. Data with attached information on how and when it was collected and its relationship to other data is information. Knowledge is understood information. Understanding information means finding patterns and redundancies in the information that allows for the information to be compressed and represented in a shorter form than the original representation. This shorter form of the information is called knowledge and can be used to predict the future. Producing knowledge is equivalent to science and is done by compressing information. A toy example: The time series “2, 3, 5, 7, 11,13,17,19,23,27,29” is equivalent to “first 11 prime numbers” or “first 11 primes” the latter quote is a shorter representation than the original data series. In other words “2, 3, 5, 7, 11,13,17,19,23,27,29” can be understood as “first 11 primes” and we have created knowledge that can be used for prediction, for instance by calculating the continuation as the “12th prime”. Wisdom is just knowledge tied to value. There is a lot of knowledge without value: I have just calculated the number of leaves on the oak tree outside my window: there are 7236 leaves on the tree. This is knowledge, because it is a condensed symbolic representation of a lot of data from my senses and information in my head. The value of this knowledge is, however, questionable. This knowledge is therefore unlikely to go into my pool of wisdom. The wisdom of the plan to spend time calculating them is also questionable since the only value that came of it is the use as a negative example in a text about wisdom. This could just as easily be achieved with a faked number giving the same value but with less consumption of the constrained resource of time. This would have been a better-engineered plan…In order to know the value of my plan and my knowledge I need to have well-defined and measurable goals and objectives. “A cynic is a man who knows the price of everything but the value of nothing”, according to Oscar Wilde, and we must be careful to set our goals to incorporate all forms of value not just a few easily calculated short-sighted sums of money. The value to be optimised by our overall company algorithm could be the well-being and satisfaction of customers using our products together with the well-being and satisfaction of our employees provided that we can make these values quantifiable and measurable. Process of creating Wisdom is also Wisdom. Wisdom is a self-introspective process required to create a learning organisation. In formal terms: the algorithm of wisdom is recursive and requires application of Wisdom to analysis of our history as past events and decisions. Formally optimal wisdom is achieved thru applications of science to history, provided that history contains data and information on enough events and decision tied to value at each point. Wisdom in this sense is studied within e.g. reinforcement learning, game theory, and the emerging field of general artificial intelligence. An optimal wisdom method predicts the best imminent action based on compression of history including value and produces an optimal algorithmic plan for the future. Tomorrow follows a number of rules to obtain a wise successful company in the information age:



[1] See e.g. http://www.idsia.ch/~juergen/speedprior/
[2] There is really no good cross-disciplinary word with the same connotations and associations, and every label opens up to misunderstandings, but let’s stick to engineering in this document. The theoretical foundation of the concept is, regardless of term, firm.

Methods for AI (in Swedish)

För att kunna skapa AI måste jag först förstå vad intelligens är, i matematisk mening. Jag menar att den absolut viktigaste principen när man ska definiera intelligens är Ockhams rakkniv. Låt oss ta ett exempel för att illustrera principen.
Antag att du deltog i en intelligenstest och en av uppgifterna var att förutsäga nästa tal i talserien 2,4,6,8,....
När du får facit i din hand får du se att det rätta svaret inte alls är 10, utan 36, eftersom talserien uttrycker funktionen n4 – 10n3 + 35n2 – 48n + 24. Du skulle säkert tycka att testet var en aning orättvist och märkligt, eftersom lösningen 2n (alltså att lägga till 2 till föregående tal) hade verkat "naturligare".
Varför skulle då 2n vara naturligare än n4 – 10n3 + 35n2 – 48n + 24? En uppenbar skillnad är att lösningen 2n är enklare och kortare än n4 – 10n3 + 35n2 – 48n + 24. Den metodologiska principen att välja ett enkelt svar framför ett komplext, kallas alltså för Ockhams rakkniv. Den formulerades för första gången av den engelske filosofen och teologen William Ockham som föddes i slutet 1200-talet.
Det verkar som om Ockhams rakkniv är hårdkodat in i våra hjärnor som något jag föredrar. Många vetenskapsmän har uttryckt en speciell förkärlek till principen. Newton sa så här i förordet till sitt berömda verk Principia: "Natura eniem simplex est, et rerum causis superfluis non luxuriat". Fritt översatt betyder det: "Naturen gillar enkelhet, och tycker inte om onödigt komplexa orsakssamband". När Kopernikus argumenterade för att jorden rörde sig runt solen och inte tvärt om, så var det uteslutande för att det gjorde hans ekvationer enklare. Det fanns andra ekvationer som beskrev det omvända och som också fungerade för att förutsäga himlafenomen, men de var mer komplexa. Idag beskriver matematiker och naturvetare ofta en teori som "vacker". Man menar då helt enkelt att den kan beskrivas på ett kort och konsist och därmed elegant sätt.
Ockhams rakkniv är idag accepterad som en av de viktigaste principerna när det gäller att skapa generella teorier om vår omvärld. På sätt och vis kan man se hela teoribildningen som ett uttryck för principen. jag försöker helt enkelt hitta kortare representationsformer för ett stort antal vetenskapliga observationer, alltså teorier som sammanfattar observationerna på ett enklare sätt än de underliggande data jag observerat.
Man kan ta resonemanget ett steg längre och hävda att intelligens helt enkelt är förmågan att komprimera data. Det finns flera forskare som tror att det är precis så, intelligens är i sin mest kompakta definition inget annat än förmågan till datakompression. Gerry Wolff heter en brittisk forskare som längre propagerat för detta synsätt. "Hela detta liv, allt detta tänkande och allt jag fått i mitt huvud är en zip-fil", som en av hans vänner kommenterade det.
Själv är jag beredd att hålla med. Jag är övertygad om att Wolff är nära sanningen om intelligensens gåta. Sedan är det förstås inte lätt att ta reda på hur jag uppnår intelligens bara för att jag tror jag vet vad den är. En mycket formell och matematisk definition av Ockhams rakkniv går under namnet Solomonoffs induktionsprincip. Detta ståtliga namn betyder att man kan använda kompression till universell förutsägelse, det vill säga förmågan till förutsägelse av framtiden är intimt knuten till förmågan att komprimera historien.
De flesta metoder för AI och inlärning har visat sig ha "komprimerande" egenskaper inbyggda i sig, oftast utan att dess skapare vetat om det. Kanske skulle en mer konkret fokusering på komprimeringsprincipen leda AI-utvecklingen snabbare framåt.
Innan jag går över till mer konkreta beskrivningar av hur man skapar AI ska jag bekanta oss med två viktiga begrepp, komplexa system och adaptiva system.
Komplexa system handlar om system där summan är mer än delarna. Delarna kan vara de enklast tänkbara och jag förstår dem fullständigt, men när jag sätter ihop delarna uppstår fenomen som är så komplexa att jag har svårt att förstå hur de kan komma ur så väldefinierade delar. Exempel finns överallt omkring oss, alltifrån livet – som är sammansatt av enkla atomer – till kristallbildning, virvlar i vatten, städernas framväxande och masspsykos i en folkmassa.
Komplexa system handlar också om självorganisation, hur komplicerade mönster uppstår av sig självt av enkla delar, till exempel hur livet uppstod spontant på jorden. Komplexa system kan simuleras i en dator så att mycket enkla regler ger upphov till självorganisation och livsliknande beteende.
Ett adaptivt system är ett system som kan anpassa sig. Om man vill ha en intelligent robot som kan röra sig i en så komplex miljö som en hemmiljö eller en kontorsmiljö, så kan man inte programmera den för alla möjliga situationer på förhand. Systemet måste i stället vara intelligent och adaptivt, det måste alltså kunna lära sig och anpassa sig till oförutsedda situationer. Riktig intelligens är nästan alltid adaptiv, även om man kan få ett visst intelligent beteende utan anpassningsförmåga, där man bara utnyttjar ett antal "burkförpackade" beteenden som tidigare visat sig bra. För de allra flesta situationer i vår vardag krävs det dock ett lärande system för att uppnå sann intelligens. jag ska nu titta på vilka metoder för simulerad intelligens som finns i dag. Om du inte har några förkunskaper så är nog resten av kapitlet den minst lättlästa delen av visionen, men jag har gjort vårt bästa för att förklara metodena på ett så enkelt sätt som möjligt.
Vi börjar med att fundera över vilka mekanismer för intelligens som finns i naturen. Dels har jag hjärnorna och nervsystemen, som kan lösa mycket svåra uppgifter på olika sätt för skilda djurarter. Dels har jag evolutionen, som också skapat många geniala intelligenta lösningar, däribland hjärnorna. Inom den konstgjorda intelligensen är det motsvarande metoder som är mest framgångsrika för att uppnå lärande och adaptiv intelligens.
Hjärnor simuleras med metoder som kallas artificiella neuronnät. Man bygger modeller av hjärnceller i datorn och får dessa att lära sig, anpassa sig, hitta mönster och på andra sätt lösa uppgifter som kräver intelligens. Evolutionen simulerar jag i datorernas värld med metoder som kallas evolutionära algoritmer. Evolutionära algoritmer avlar fram lösningar på problem. På samma sätt som jag har avlat fram kor som mjölkar bättre, eller dvärgpudlar från vargar, så kan man avla fram lösningar på mycket svåra problem i datorn eller i den intelligenta roboten.
Avel är en mycket kraftfull metod, som till exempel gett våra grisar ett extra revben på bara 40 år. I den simulerade evolutionens värld kan man avla fram datorprogram som löser problem som ingen människa kunnat lösa eller programmera, och vars lösningar jag kanske inte ens kan förstå. De lösningar som är begripliga visar sig ofta vara mycket geniala. Datorn kan avla fram program på ett helt annat sätt än en mänsklig programmerare skulle skriva det.
Det finns i stora drag tre metoder för konstgjord intelligens: artificiella neuronnät, evolutionära algoritmer och expertsystem. Expertsystem är datorsystem där man "burkförpackat" mänsklig kunskap om problemlösning i datorn. Man analyserar på förhand hur en mänsklig expert löser problem, och så försöker man överföra problemlösningsmetoden till en dator. Det kan till exempel röra sig om hur en läkare ställer diagnos utifrån olika symptom.
En särskild typ av expertsystem kallas för fuzzy logics. Metoden är speciell på det sättet att den har en ovanligt god matematisk grund, och den kan dessutom uttrycka "mjuka" mänskliga kunskapsformuleringar och ge svaret i klartext på ett mänskligt sätt. Till exempel: OM projektet väljer alternativ 1, DÅ kommer det att ge stor vinst.
Fuzzy Logics skapades på 60-talet av logikern Lotfi Zadeh, född i Azerbajdzjan. Men det tog 30 år innan metoden började användas praktiskt i någon större omfattning. Det är ett exempel på idéer vars genialitet omvärlden inte upptäcker förrän efter lång tid, trots att det faktiskt kostar mänskligheten att inte ta bra idéer i bruk.
Normal logik handlar ju om formella resonemang av typen: "alla människor är dödliga, Sokrates var en människa, därför var Sokrates dödlig". Störst framgång har logiska resonemang när de görs helt abstrakta, med bokstäver och tecken. Till exempel: "om A är sann är också B sann; A ®B". Problemet med att använda logik är att mycket av det jag behandlar i vår vardag inte låter sig kategoriseras som antingen sant eller falskt på ett enkelt sätt. Frågan om en person är lång eller kort till exempel. jag har nog fler frågor som innehåller gråzoner än frågor som är svartvita.
Med fuzzy logics hittade Zadeh en bra praktisk metod att formellt resonera om frågor som innehåller gråzoner. Fuzzy logics är ett system som översätter "luddiga" meningar på mänskligt språk till en formell representation med bokstäver och tecken. Med systemet kan man också resonera vidare med dessa bokstäver och tecken, för att slutligen översätta resultatet tillbaka till en någorlunda förståelig, "luddig", mänsklig mening. Man kan till exempel använda metoden för projekthantering: "OM projektlängden är lång OCH antalet projektdeltagare är stort OCH projektfinansieringen är otillräcklig, DÅ är risken hög". Eller på en restaurang: "OM servicen är utmärkt ELLER maten är delikat DÅ blir dricksen generös". Man kan resonera med ett stort antal sådana "mjuka" regler. Nyckelproblemet som fuzzy logics löser är alltså att hantera "luddiga" ord som lång, stort, otillräcklig, hög, utmärkt, delikat och generös.
På senare tid har man har med framgång kombinerat fuzzy logics med evolutionära algoritmer eller artificiella neuronnät, för att få fram lärande system.
Men i ett rent expertsystem är det alltså inte datorn själv som drar slutsatser eller hittar nya mönster eller anpassar sig. Man "får ut det man stoppar in" i form av redan definierad mänsklig kunskap. Ett rent expertsystem kan få svårt att klara sig i nya, oförutsedda situationer. Om man vill ha ett system som är intelligent nog att klara sig i vår komplexa vardag så räcker det inte med att burkförpacka mänsklig kunskap, det krävs även en viss kreativitet och anpassningsförmåga hos det intelligenta systemet. De två mest framgångsrika sådana systemen är idag artificiella neuronnät och evolutionära algoritmer. Men det finns som sagt också olika typer av hybrider mellan metoderna.
Evolutionära algoritmer, artificiella neuronnät och fuzzy logics räknas till soft computing. Det är AI-metoder som inte bara kan ge "hårdfakta", utan även uttrycka kunskap på ett mjukare sätt.
En annan stor del av AI-forskningen är inriktad på olika specialalgoritmer. Där försöker man främst få AI-systemen att lösa olika delproblem, som att leta efter ett definierat mönster i en text. Problemen går ofta går att lösa analytiskt. En människa kan klura ut lösningen i förväg, så systemen behöver inte lära sig själva. Enligt min mening innehåller dessa system "burkförpackad mänsklig analysförmåga".
Det finns också mängder av olika specialalgoritmer för maskin-inlärning. Maskinen lär sig till exempel att anpassa parametrar i ett bildbehandlingsprogram, att gruppera objekt på smarta sätt i olika kategorier, eller att hitta det exempel som är mest likt ett referensexempel i en stor mängd andra exempel. Här handlar det om mer inlärning än i det föregående fallet, men det bygger ändå på burkförpackad mänsklig analysförmåga - om än ofta en väldigt användbar sådan.
Dessa specialalgoritmer är inte expertsystem i traditionell mening, men trots det är det är tveksamt om man "får ut mer än vad man stoppar in".
En annan infallsvinkel är att attackera problemet med konstgjord intelligens från tre olika håll, beroende på om man utgår från intelligensens beståndsdelar eller från dess helhet. Om man utgår från beståndsdelarna är det naturligt att ta hjärnan som modell. Man försöker då skapa intelligens genom att bygga konstgjorda hjärnor, det vill säga artificiella neuronnät.
Ett annat sätt är att hävda att det inte spelar någon roll exakt vilken hårdvara jag kör intelligensen i. jag behöver inga konstgjorda hjärnceller, jag kan fundera mer övergripande på hur intelligensen fungerar. Hur uppstår tankar, hur korsbefruktas idéer, hur lever goda idéer vidare? I detta mellanskikt finns metoder som evolutionära algoritmer.
Ett tredje sätt att angripa problemet är att vara mycket teoretisk, att försöka hitta intelligensens innersta väsen genom att definiera den matematiskt. Detta kallas ibland computational learning theory (COLT). Metoder på den här tredje nivån handlar därför om mycket generella begrepp som komplexitet, förmåga att generalisera, och vilka teoretiskt möjliga slutsatser man kan dra av en serie observationer. Ett begrepp som ofta dyker upp i dessa sammanhang är Ockhams rakkniv. Ännu så länge finns det knappast några metoder som bygger direkt på de matematiska teorier man har inom COLT, utan resultaten används mest för att analysera och sätta gränser för redan existerande metoder.
De metoder som används mest idag för att skapa "äkta" konstgjord intelligens är som sagt artificiella neuronnät och evolutionära algoritmer, och jag ska ägna resten av kapitlet åt att titta närmare på dessa metoder.
Artificiella neuronnät
När man försöker åstadkomma intelligens med hjälp av artificiella neuronnät så bygger man alltså modeller av hjärnceller och kopplar ihop dem. Sedan får man dem att lära sig genom att förändra styrkan och signalvägarna hos kopplingarna. jag vet hur hjärnceller fungerar med ganska hög noggrannhet, och de hjärnceller som simuleras med artificiella neuronnät är mycket enkla modeller av riktiga nervceller. Inte desto mindre kan man träna artificiella neuronnät till att lösa mycket svåra problem, ofta problem av en "mjukare" karaktär, som att tolka ljud, bilder eller andra signaler. Man har fått artificiella neuronnät att lära sig förstå och producera mänskligt tal och tolka mänsklig handstil, för att ta några få exempel ur den uppsjö av tillämpningar där man använt artificiella neuronnät med framgång. Begreppet konstgjord intelligens – eller artificiell intelligens – myntades på 50-talet, och man har använt neuronnätsmetoder allt sedan dess för att producera intelligent beteende.
Som de flesta metoder för kreativ intelligens i datorns värld är artificiella neuronnät ganska krävande för datorn att räkna på, och det är först de senaste tio åren som det funnits tillräckligt med datorkraft för att få fram riktigt intressanta resultat. Forskningen kring artificiella neuronnät avstannade nästan i slutet på 60-talet och början på 70-talet. Då fick man fram teoretiska resultat som visade att den typ av neuronnät man dittills mest jobbat med, så kallade perceptron, inte kunde lösa alla problem. Mer komplicerade neuronnät hade man ännu ingen träningsmetod för, man hade alltså inget sätt att få "hjärnvävnaden" att lära sig. Men så kom man på en mycket generell metod som kallas backpropagation. Plötsligt kunde man träna mycket komplicerade neuronnät, även om den begränsade datorkapaciteten vid 70-talets mitt utgjorde ett hinder. Backpropagation i olika varianter är fortfarande standardmetoden för att träna artificiella neuronnät.
Ett artificiellt neuronnät är alltså ett antal simulerade hjärnceller, eller neuroner, som är sammankopplade med varandra så att varje enskild hjärncell har ett antal ingångar, men endast en utgång. Utgången från en "hjärncell" kan vara kopplad till flera olika ingångar på andra hjärnceller. Kopplingen mellan utgången från en hjärncell och ingången till en annan kan vara olika stark, man pratar om att kopplingen har en vikt. För varje koppling mellan hjärnceller finns alltså en vikt, och det är det är dessa vikter som tillsammans med ledningsdragningen definierar beteendet hos hela nätet.
Metoden som man använder för att få nätet att lära sig, träningsmetoden, har till uppgift att variera styrkan hos kopplingarna, att justera vikterna, så att hela det artificiella neuronnätet får rätt beteende och utför rätt uppgift. I de allra flesta fall justerar träningsalgoritmen bara vikterna i kopplingarna och inte hur kopplingarna går, men det finns även metoder för att träna nätet så att "ledningsdragningen" i det artificiella neuronnätet modifieras. Det är alltså inte bara de enskilda neuronerna som är modeller av riktiga hjärnceller, neuronnätet som helhet efterliknar också ett riktigt nervsystem. Kopplingarna i ett artificiellt neuronnätverk motsvaras i naturen av synapser. Vid inlärning påverkas vår hjärna i första hand genom att effekten hos specifika synapser förändras, men det kan också bildas nya synapser.
Utdata från hela den simulerade hjärncellen beräknas på ett ganska enkelt sätt utifrån indata till hjärncellen. Först multiplicerar man värdet på varje insignal med kopplingens vikt. Sedan summerar man alla produkter från de olika ingångarna. Därefter får summan passera genom en "sammanpressande matematisk funktion", ofta en så kallad sigmoid. Den trycker ihop utdata så att ett mycket högt värde på summan ändå aldrig får utsignalen att överstiga ett visst värde, och ett mycket lågt värde får inte utsignalen att understiga ett visst värde. Däremellan finns ett intervall där utsignalen varierar kontinuerligt med insignalen.
I allmänhet är ett neuronnät organiserat i lager. Det finns ett lager dit de flesta av nätets ingångar är kopplade, ett lager dit nätets utgångar är kopplade, samt ett antal lager däremellan som brukar kallas "dolda lager".
När man vill få ett neuronnät att lära sig så utgår man oftast från ett antal träningsexempel. Låt oss säga att jag vill få fram ett neuronnät som kan förutsäga om aktiekursen går upp eller ner i morgon. Som indata till nätet kan jag använda ett antal ekonomiska parametrar, till exempel räntor, den tidigare kursutvecklingen och index. Utdata från nätet ska vara en signal som till exempel kan vara positiv för "sälj" och negativ för "köp". jag ställer sedan samman ett stort antal träningsexempel, alltså en tabell där jag utgår från historiska data under ett antal dagar. jag noterar värdet på dessa indata-parametrar, samt om det varit läge för att köpa eller sälja aktierna. Samtliga värden, både indata och utdata, representeras som tal, så köpsignalen som kommer ut ur systemet är också ett tal. Talets värde avgör hur stark köpsignalen är.
Systemet presenteras sedan för träningsuppgifterna och jag räknar ut nätets utdata genom produkter, summeringar och sigmoider enligt ovanstående metod. För varje träningsexempel får jag då ett utvärde som jämförs med det idealiska utvärdet för exemplet, alltså om det var läge att köpa eller sälja just den dagen. jag får också ett felvärde genom att subtrahera verkligt utvärde och önskat utvärde. Det är nu backpropagation kommer in i bilden - felvärdet skickas bakåt genom nätet från utgångarna till ingångarna, och ändrar samtidigt storleken på vikterna som det passerar.
Så håller jag på för alla exempel och kanske flera gånger för hela exempelmängden, tills vikterna är finslipade och jag får nästan samma utresultat som det önskade. Nu kan jag börja köra systemet på indata som det inte tidigare sett, och försöka förutsäga dagens aktiestrategi utifrån dagens data.
Evolutionära algoritmer
Evolutionära algoritmer är samlingsnamnet för en mängd metoder som är inspirerade av evolution eller avel. Metoderna är åtminstone i terminologin inspirerad av Darwins teori om naturligt urval. Man talar om en population över många generationer där olika lösningar selekteras och korsbefruktas eller muteras.
I korthet innebär evolution att en grupp organismer, en population, utsätts för selektionstryck. Selektionstrycket består av alla de faktorer som påverkar populationen, till exempel näringstillgång, rovdjur och konkurrens om partners. På grund av konkurrensen om olika resurser kommer bara en liten del av organismerna att överleva och föröka sig. De individer som är bäst anpassade till sin omgivning selekteras, det vill säga de lyckas föröka sig och sprida sina gener vidare. För varje generation sprider sig "bra" gener på bekostnad av "dåliga" gener i populationen. Men bra gener kan snabbt bli dåliga när omgivningen förändras. På så sätt kommer populationen hela tiden att utvecklas genom att den anpassar sig till en föränderlig miljö.
När livet på jorden hade uppstått visade det sig snart att det är bra om det finns genetisk variation mellan individerna. Då ökar chansen att åtminstone några individer klarar sig när omgivningen förändras. Variationen i en population upprätthålls dels genom mutationer, dels genom korsbefruktning vid sexuell reproduktion. Det senare "blandar" individer så att avkomman aldrig blir en kopia av vare sig mamman eller pappan, utan får en ny delkombination av deras gener.
Alla dessa begrepp från evolutionsbiologin kommer till användning när man arbetar med evolutionära algoritmer. Men egentligen liknar de flesta evolutionära algoritmer mer avel än evolution, eftersom man hela tiden väljer ut de bästa lösningarna som får gå vidare, "paras" och får barn. Inom avel är det människan som avgör vilka egenskaper som är bra, i stället för det naturliga urvalet vid vanlig evolution.
Säg att jag vill avla fram en tax från en dobermann. jag börjar då med en uppsättning – en population – av dobermann-hundar. I denna population väljer jag ut de individer som på något sätt är mer "taxlika" än de andra. Dessa mer taxlika individer får sedan para sig med varandra och jag får nya valpar som har ärvt egenskaper från föräldrarna. jag gör oss av med de individer i populationen som är minst lika en tax, och ersätter dem med valparna från de taxlika föräldrarna. Sedan upprepar jag samma process; väljer ut de individer som mest liknar taxar, låter dem få valpar och ersätter de minst "taxlika" hundarna med dessa valpar. Så fortsätter jag på samma sätt generation efter generation.
Principen för evolutionära algoritmer är nästan exakt densamma. Man börjar med en initial uppsättning datorprogram eller lösningskandidater som får tävla mot varandra i att uppnå ett bestämt mål. Sedan väljer man ut dem som är lite bättre och låter dem få "barn" så att man kan ersätta de sämsta "individerna" med barnen från de bästa. En avgörande skillnad är att det hela går så mycket snabbare i en dator; man kan få se tiotusen generationer eller fler passera per sekund.
Den första generationen skapas slumpmässigt. Detta innebär att man har en uppsättning datorprogram vars enda kända egenskap är att de inte kraschar datorn, de är alltså syntaktiskt korrekta men i övrigt slumpmässiga. Man måste sedan definiera systemets mål som kan vara att styra en robot, förutsäga en aktiekurs, förstå mänskligt tal eller komprimera bilder, för att nämna några av många möjliga tillämpningar. Man definierar också en metod för att betygsätta hur varje tänkbar individ uppfyller det uppsatta målet. Denna metod kallas godhetsfunktion eller fitnessfunktion. En viktig egenskap hos godhetsfunktionen är att den på ett rättvist sätt ska kunna är betygsätta alla individer, oavsett om de redan är nära målet eller om de är fullkomligt värdelösa, vilket de flesta förstås är i början.
Man använder sedan godhetsfunktionen för att betygsätta individerna i den första generationen. Eftersom de är slumpmässigt skapade kommer de att vara i det närmaste värdelösa. Men om man har definierat godhetsfunktionen tillräckligt listigt så kommer några individer att vara lite mindre värdelösa än de andra. Dessa individer väljer man ut, selekterar, och de får "para sig" så att de får "barn". Deras barn ersätter de individer som var allra mest värdelösa i populationen. Det är viktigt att hela betygsättningen kan göras mekaniskt utan mänsklig inblandning, eftersom selektionen måste gå mycket fort om man ska kunna prestera tiotusen generationer per sekund. Och det krävs förstås åtskilliga generationer för att nå det mål man har satt upp för systemet.
På samma sätt som med artificiella neuronnät så tränar man, eller avlar, i systemet med hjälp av träningsexempel. Dessa träningsexempel kallas ofta för fitness cases. Att lära sig med hjälp av redan definierade träningsexempel kallas lärarledd inlärning. Det är den vanligaste metoden inom artificiell intelligens, men det finns även metoder att få systemet att lära sig utan träningsexempel.
Vid en första anblick kan det tyckas svårt att hitta en godhetsfunktion som uppfyller kravet på att ge olika betyg till alla tänkbara individer, från de allra mest värdelösa i början av evolutionen, till de nästan perfekta vid evolutionens slut. Det finns emellertid en mycket enkel metod för godhetsfunktion som uppfyller detta krav. Man låter helt enkelt godhetsfunktionen vara summan av alla fel man får om man jämför utdata från en individ med önskad utdata i träningsexemplen.
Låt oss säga att jag vill ha ett datorsystem som kan förstå mänskligt tal, och jag börjar med den enklare uppgiften att lära sig skilja mellan olika vokaler. jag kan då producera ett stort antal träningsexempel genom att spela in olika personer som säger olika vokaler. jag får en tabell av exempel som systemet kan använda sig av under träning. Tabellerna består av inspelade indata och önskade utdata. Indata är ett antal ljudinspelningar i datorform (samples), medan utdata är någon representation av den önskade vokalen. jag kan till exempel låta A representera siffran ett, E representera siffran två, och så vidare. Träningsdata är tusentals sådana exempel, uttalade av olika personer och under olika omständigheter.
Sedan tar jag alla individerna i populationen och låter dem tugga igenom alla tusentals exemplen. Varje individ presenteras för varje talat ljud och kommer då att ge någon form av utdata. Dessa utdata jämförs med de utdata jag vill ha, som representerar den rätta vokalen, och jag noterar skillnaden mellan dessa två tal. Säg att jag har en inspelning av bokstaven A och att den representeras av siffran ett. Låt oss också anta att jag kör denna inspelning genom en individ och får ut siffran 10377. Felvärdet är då skillnaden mellan vad jag ville få ut,1, och det jag verkligen fick ut, 10377, alltså 10376. Det är alltså felvärdet för det enstaka träningsexemplet och den specifika individen. jag summerar sedan ihop felvärdena för alla träningsexempel som presenteras för individen. Denna summa blir individens betyg, eller "fitness".
I början är förstås både de enskilda felvärdena och den totala summan mycket stora tal. Men några individer kommer av en slump att prestera ett mindre sammanlagt fel än de andra, och dessa får gå vidare för att para sig och få avkomma. "Barnen" från de lite bättre individerna ersätter sedan individerna med de allra sämsta betygen. jag kan hävda att individerna som fick lite bättre betyg bara hade tur, men i det långa loppet litar man på att de individer som har bättre betyg på det hela taget är något bättre än de andra.
Så fortsätter jag att köra den nya uppsättningen individer genom alla träningsexemplen så att de får ett betyg med hjälp av godhetsfunktionen. jag fortsätter också att välja ut de som är något bättre så att de får para sig och de nya "barnen" får ersätta de något sämre individerna. Så håller jag på, generation efter generation, tusentals eller hundratusentals generationer. Ibland prövar man på detta sätt flera miljarder individer tills man avlat fram en individ; ett program som kan lösa den uppgift man definierat.
Det resultat man får fram kan vara lösningen på ett problem som ingen människa vet hur man ska lösa. Det kan vara ett problem som saknar analytisk lösning, och det kan till och med vara svårt att förstå hur det program man får fram fungerar. Men att programmet fungerar visas av att det kan att lösa sin uppgift, till exempel förstå mänskligt tal. Ofta visar datorn prov på stor kreativitet medan den löser uppgiften. Den är inte begränsad av en människas förutfattade meningar om hur uppgiften ska lösas, utan prövar ett stort antal individer på ett slumpmässigt sätt och producerar "barn" delvis med hjälp av slumpen. Systemet skiljer sig dock på ett avgörande sätt från en helt slumpmässigt sökning. Varje generation man får fram bygger ju på det bästa i den föregående. Detta är nyckeln till framgång i såväl evolutionära algoritmer som, åtminstone delvis, i naturlig evolution.
Ibland kan man som sagt inte förstå de lösningar som kommer fram, men ibland kan man analysera dem och hitta så genialiska programmeringslösningar att man nästan får kalla kårar när man inser att de är skapade med slumpens hjälp av ett datorsystem, utan egentlig mänsklig inblandning, annat än vid definition av godhetsfunktionen. jag kan alltså säga till datorn vad jag vill ha, utan att berätta hur den ska åstadkomma det.
Tidigare har artificiell intelligens kritiserats för att man inte får ut mer intelligens ur systemet än man stoppar in. Detta gäller till stor del för expertsystem där intelligensen hos systemet kommer från "burkförpackad" mänsklig kunskap. Men när det gäller lärande system, som evolutionära algoritmer och artificiella neuronnät, kan man argumentera för att datorn är verkligt kreativ och producerar lösningar på egen hand, efter egna regler. Ibland med ett resultat som är överlägset den bästa kända mänskliga lösningen på samma problem.
Annars är ju inte kreativitet en egenskap man förknippar med en dator. En dator betraktas som en maskin som bara gör exakt det man säger till den, och som utför en lång lista av förutbestämda instruktioner utan att någonsin komma med egna idéer. På den lägsta nivån är detta givetvis sant, men på en högre nivå i systemet kan datorn visa prov på sann kreativitet. Man skulle till med kunna säga att datorsystemen är mer kreativa än intelligenta, eftersom de så friskt prövar ett gigantiskt antal lösningar utan fråga sig "hur man brukar göra".
Inom en speciell gren av evolutionära algoritmer använder man faktiskt AI-system för att stödja mänsklig kreativitet. Det finns system inom bilindustrin där man använder evolutionära algoritmer för att avla fram design av nya bilar. Ofta får man helt vansinniga lösningar genom att till exempel korsa en Porsche med en Range Rover, man kanske får en liten sportbil med en gigantiskt hög vindruta. En bil som knappast är praktisk men som, visar det sig, kan få mänskliga designers att bli inspirerade och börja tänka i nya banor. Den här typen av metoder brukar kallas "interaktiv evolution" eftersom lösningskandidaterna inte betygsätts helt mekaniskt, utan någonstans finns det en människa med i loopen som talar om vilka lösningar som är på väg åt rätt håll.
Om nu artificiella neuronnät och evolutionära algoritmer är två framgångsrika metoder för att åstadkomma konstgjord intelligens, båda inspirerade av naturens metoder för intelligens, så undrar man kanske vad skillnaden är mellan de båda. Lite förenklat kan man säga att de oftast kan användas på samma problem. De har lite olika historia och förutsättningar, men i stort sett används de idag på samma typer av problem. Det finns dock flera fördelar med evolutionära algoritmer.
När man jobbar med dem sätts individerna i den första generationen samman av en uppsättning av programdelar, till exempel variabler, siffror och de fyra räknesätten. Listan över grundläggande funktioner, till exempel multiplikation, sinus eller villkor, kallas funktionsmängd (function set). Övriga byggstenar, till exempel siffror och variabler, kallas terminalmängd (terminal set). En fördel med evolutionära algoritmer är att man kan definiera sin egen funktionsmängd utifrån det problem man vill lösa, till skillnad från när man jobbar med artificiella neuronnät. Där har man ju mer eller mindre samma neuroner oavsett vilket problem man vill lösa. Att kunna använda specialfunktioner för ett specifikt problem gör ofta att man hittar lösningen snabbare och att den blir mer elegant.
Ett annat plus är att när man testar individen i ett system för genetisk programmering kör man en liten programsnutt på en dator, något som en dator är väldigt bra på. När man testar ett neuronnät räknar man ett flyttalsvärde för ett komplext nätverk av "vikter", något som inte alltid låter sig programmeras lika effektivt.
Men den kanske viktigaste skillnaden är att utresultatet från ett tränat artificiellt neuronnät, alltså samlingen av "vikter", kan användas för att lösa ett visst problem men inte säger så mycket om hur själva lösningen går till. Ur evolutionära algoritmer får man däremot ett datorprogram eller en formel som kan läsas av en människa, och ibland kan jag få viktig information ur programmet eller formeln. På det sättet är ett neuronnät mer en "black box", en svart låda, medan det evolutionära systemet ger lösningar som går att tolka.
Det händer att informationen jag får genom att studera lösningen från ett evolutionärt system är viktigare än själva lösningen. Låt oss säga att jag arbetar med ett industriellt problem i stålindustrin. jag vill veta vilka data under tillverkningen av en stålsmälta som påverkar kvaliteten hos stålet allra mest. jag kan ha med indata som temperatur, blandning, tryck och tidsintervall under tillverkningen av en klump stål. Sedan går jag in i laboratoriet och mäter kvaliteten på den just tillverkade klumpen stål. jag upprepar proceduren för ett stort antal stålsmältor och får då en tabell av indata i form av parametrar från tillverkningen, och utdata i form av kvaliteten på stålet.
Det kanske inte finns någon tillfredsställande teori för hur kvaliteten hos stålet beror på de uppmätta parametrarna från produktionen, så som tryck och temperatur. Men om jag fick en teorisk beskrivning, en ekvation eller en formel, så skulle jag kunna analysera vad som betyder mest för kvaliteten och försöka förbättra processen just på dessa punkter. jag kan pröva att avla fram en sådan ekvation. jag försöker då få fram en ekvation som med hjälp av träningsexemplen från laboratoriet försöker förutsäga kvaliteten, givet ett visst antal parametrar från tillverkningen. Om jag lyckas få fram en sådan formel så kanske värdet ligger i formeln själv, snarare än dess förmåga att förutsäga kvaliteten. Om jag ser att till exempel temperaturen är väldigt avgörande för kvaliteten, temperaturen kanske står "i kvadrat" i formeln, så vet jag att jag ska arbeta med att förbättra processen främst vad det gäller temperaturen.
Detta är ett exempel på hur artificiell intelligens används idag för att lösa konkreta problem. Det görs mycket enklare med ett evolutionärt system än med ett artificiellt neuronnät, eftersom jag med ett evolutionärt system får ut data i klartext. När jag försöker samma sak med ett artificiellt neuronnät så får vid bara en uppsättning numeriska vikter som kan vara mycket svårtolkade. Utdata från en evolutionär algoritm är däremot symbolisk.
En evolutionär algoritm kan därför också ha lättare att behandla symbolisk information som indata än ett neuronnät, eftersom neuronnätet på sätt och vis är begränsat till numeriska indata. Man måste skicka indata till de flesta neuronnät som flyttal, medan evolutionära algoritmer kan acceptera rent symboliska indata som till exempel strängar av ettor och nollor eller hela datorprogram.
Om det är väldigt kontinuerliga funktioner man söker som lösning kan det å andra sidan finnas en fördel med artificiella neuronnät. Då kan man ibland snabbare finna lösningarna med de kontinuerliga beräkningarna i ett neuronnät än med evolutionära algoritmer, som kanske i stället lämpar sig bättre för lösningar som kan förväntas vara mer kaotiska till sin struktur.
Evolutionära algoritmer är ett samlingsnamn för flera typer av algoritmer. Man talar bland annat om genetiska algoritmer, genetisk programmering eller evolutionära strategier. Skillnaden mellan dessa algoritmer kan till exempel vara hur individerna representeras. Den representation som lagrar den genetiska informationen hos en individ kallas både i naturen och i simulerad evolution för genom (i naturen består en individs genom av alla dess gener). Det är främst genomet som skiljer sig åt mellan olika varianter av evolutionära algoritmer.
Om man vill avla fram ett visst tal kan man använda en evolutionär strategi. Talet kan representera, låt oss säga, den optimala inställningen för en kemisk process. Man kan då använda ett genom som består av flyttal. I ett annat fall vill man avla fram ett datorprogram, och kan då använda ett genom som består av ett datorprogram. Algoritmen blir då en typ av genetisk programmering. Om man slutligen jobbar med information som lämpar sig för att uttryckas som strängar av ettor och nollor, så använder man genetiska algoritmer.
Dessa olika varianter av evolutionära algoritmer kan skilja sig åt genom det sätt man skapar "barn" av två föräldrar. För att få "genetisk" variation hos avkomman använder man olika genetiska operatorer, som mutationer och korsbefruktning. Samma metoder som skapar genetisk variation i naturen, med andra ord. En del algoritmer använder bara mutationer och inte korsbefruktning, medan andra kanske bara korsbefruktar individer och inte använder mutation. Som avslutning på kapitlet ska jag nämna två olika metoder för genetiska operatorer.
Man skapar alltså nya individer med hjälp av genetiska operatorer. Det kan tyckas märkligt att man kan använda korsbefruktning och mutation för att avla fram hela datorprogram. Alla som någon gång jobbat med ett datorprogram vet hur oerhört känsligt det är. Om ett enda litet tecken står på fel ställe så kan hela systemet krascha, eller så gör datorn inte alls det man tänkt sig. Kan man verkligen använda slumpen för att skapa och avla fram datorprogram?
Ja, det finns faktiskt enkla sätt för att åstadkomma detta. Det enda villkoret är att inga datorprogram får krascha systemet. Alla individer och program måste vara syntaktiskt korrekta. Det är oftast mycket enklare än man tror att se till att den första slumpmässiga generationen är syntaktiskt korrekt, och att alla individer som skapas vid korsbefruktning och mutation också är syntaktiskt korrekta. När man korsbefruktar två individer – så kallad sexuell reproduktion – så vill man att barnen ska ärva egenskaper från båda föräldrarna. Man är alltså ute efter genetisk variation. Det är viktigt att barnen skiljer sig åt från föräldrarna, annars kan man ju aldrig få någon utveckling.
Den vanligaste formen av korsbefruktning i genetisk programmering bygger på att individerna representeras som ett träd. Det har visat sig att alla datorprogram kan skrivas som en figur som liknar ett träd, oftast ritat upp och ned. Korsbefruktningen går då till så att man byter två godtyckliga "grenar" mellan mamma-träd och pappa-träd. På det sättet får man två nya barn till de två föräldrarna. När man muterar en individ så används bara mutationer som inte bryter programmets trädstruktur. Den nya, slumpmässiga individen kan sedan korsbefruktas med andra individer.
I vår forskning på Chalmers använder jag oftast en variant av genetisk programmering som kallas linjär genetisk programmering, där individerna representeras som listor av programrader med kod, eller instruktioner, i stället för "grenar". Man gör en korsbefruktning genom att byta ett antal rader av kod mellan två individer. Mutation går i det fallet in och ändrar en enskild programrad. Antingen bara lite grann, eller så byter man ut hela programraden mot en ny slumpmässig, men syntaktiskt korrekt, rad.

why evolution workS

Compression of information is an important concept in the theory of learning. We argue for the hypothesis that there is an inherent compression pressure towards short, elegant and general solutions in a genetic programming system and other variable length evolutionary algorithms. This pressure becomes visible if the size or complexity of solutions are measured without non-effective code segments called introns. The built in parsimony pressure effects complex fitness functions, crossover probability, generality, maximum depth or length of solutions, explicit parsimony, granularity of fitness function, initialization depth or length, and modularization. Some of these effects are positive and some are negative.

What is AI (in Swedish)

Konstgjord intelligens är olika metoder för att modellera och simulera intelligent beteende så som jag upplever det i naturen och bland våra medmänniskor. Det betyder i princip att man försöker skriva datorprogram som kan lösa alla de problem som en mänsklig hjärna kan lösa. Till exempel kan det röra sig om datorprogram som kan tolka bilder, förstå mänskligt tal, planera, resonera eller ge uttryck för kreativitet.
Men AI kan också handla om intelligenta beteenden från andra delar av vår omgivning. jag kan till exempel se att bakteriekulturer på bara några år kan "klura ut" hur de ska göra vår antibiotika verkningslös. jag befinner oss alla mitt i en ständig kapprustning mellan forskare som försöker hitta nya antibiotika och bakteriekulturer som utvecklar resistens, det vill säga motståndskraft mot antibiotika. Jag menar att en bakteriekultur definitivt är mycket intelligent. Den enskilda bakterien kan kanske knappast betraktas som intelligent, men de samverkande evolverande bakterierna är tillsammans mycket intelligenta. Bakteriekulturer är ett exempel på system som inte utgörs av vare sig den mänskliga hjärnan eller andra hjärnor, men som helt klart ändå har ett anpassningsbart och intelligent beteende. Med konstgjord intelligens menar jag alltså inte bara en dator som jag kan prata med och som verkar mänsklig, utan alla system som ger uttryck för ett intelligent beteende, oavsett hur de är konstruerade eller på vilket sätt de uttrycker sig.
Är en baktieriekultur intelligent?
För att kunna skapa AI måste jag först förstå vad intelligens är, i matematisk mening. Jag menar att den absolut viktigaste principen när man ska definiera intelligens är Ockhams rakkniv. Låt oss ta ett exempel för att illustrera principen.
Antag att du deltog i en intelligenstest och en av uppgifterna var att förutsäga nästa tal i talserien 2,4,6,8,....
När du får facit i din hand får du se att det rätta svaret inte alls är 10, utan 36, eftersom talserien uttrycker funktionen n4 – 10n3 + 35n2 – 48n + 24. Du skulle säkert tycka att testet var en aning orättvist och märkligt, eftersom lösningen 2n (alltså att lägga till 2 till föregående tal) hade verkat "naturligare".
Varför skulle då 2n vara naturligare än n4 – 10n3 + 35n2 – 48n + 24? En uppenbar skillnad är att lösningen 2n är enklare och kortare än n4 – 10n3 + 35n2 – 48n + 24. Den metodologiska principen att välja ett enkelt svar framför ett komplext, kallas alltså för Ockhams rakkniv. Den formulerades för första gången av den engelske filosofen och teologen William Ockham som föddes i slutet 1200-talet.
Det verkar som om Ockhams rakkniv är hårdkodat in i våra hjärnor som något jag föredrar. Många vetenskapsmän har uttryckt en speciell förkärlek till principen. Newton sa så här i förordet till sitt berömda verk Principia: "Natura eniem simplex est, et rerum causis superfluis non luxuriat". Fritt översatt betyder det: "Naturen gillar enkelhet, och tycker inte om onödigt komplexa orsakssamband". När Kopernikus argumenterade för att jorden rörde sig runt solen och inte tvärt om, så var det uteslutande för att det gjorde hans ekvationer enklare. Det fanns andra ekvationer som beskrev det omvända och som också fungerade för att förutsäga himlafenomen, men de var mer komplexa. Idag beskriver matematiker och naturvetare ofta en teori som "vacker". Man menar då helt enkelt att den kan beskrivas på ett kort och konsist och därmed elegant sätt.
Ockhams rakkniv är idag accepterad som en av de viktigaste principerna när det gäller att skapa generella teorier om vår omvärld. På sätt och vis kan man se hela teoribildningen som ett uttryck för principen. jag försöker helt enkelt hitta kortare representationsformer för ett stort antal vetenskapliga observationer, alltså teorier som sammanfattar observationerna på ett enklare sätt än de underliggande data jag observerat.
Man kan ta resonemanget ett steg längre och hävda att intelligens helt enkelt är förmågan att komprimera data. Det finns flera forskare som tror att det är precis så, intelligens är i sin mest kompakta definition inget annat än förmågan till datakompression. Gerry Wolff heter en brittisk forskare som längre propagerat för detta synsätt. "Hela detta liv, allt detta tänkande och allt jag fått i mitt huvud är en zip-fil", som en av hans vänner kommenterade det.
Själv är jag beredd att hålla med. Jag är övertygad om att Wolff är nära sanningen om intelligensens gåta. Sedan är det förstås inte lätt att ta reda på hur jag uppnår intelligens bara för att jag tror jag vet vad den är. En mycket formell och matematisk definition av Ockhams rakkniv går under namnet Solomonoffs induktionsprincip. Detta ståtliga namn betyder att man kan använda kompression till universell förutsägelse, det vill säga förmågan till förutsägelse av framtiden är intimt knuten till förmågan att komprimera historien.
De flesta metoder för AI och inlärning har visat sig ha "komprimerande" egenskaper inbyggda i sig, oftast utan att dess skapare vetat om det. Kanske skulle en mer konkret fokusering på komprimeringsprincipen leda AI-utvecklingen snabbare framåt.