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.

A new revolution (in Swedish)

På många sätt påminner vårt samhälle idag om 1400-talets Europa. Omkring 1440 uppfanns tryckpressen, något som senare skulle visa sig vara en milstolpe i samhällsutvecklingen. Jag tror att historikerna om några hundra år kommer att titta tillbaka och säga samma sak om tekniken för artificiell intelligens.
På 1400-talet använde man böcker för att bevara information. Informationsbehandlingen utfördes på den tiden av munkar eller skrivare, som skrev och kopierade böcker. Från början hade européerna skrivit på pergament eller papyrus. Båda materialen var mycket dyra och utgjorde större delen av kostnaden för att producera ett nytt exemplar av en bok, alltså att duplicera information. Men så hände något helt nytt, man fick tillgång till ett nytt skrivmaterial som kunde produceras till en bråkdel av den tidigare kostnaden för pergament eller papyrus. Det nya materialet var papper.
Tekniken att producera papper hade vandrat in från Kina. På 700-talet spreds tekniken via två kinesiska krigsfångar till Samarkand, som under lång tid var centrum för papperstillverkningen. Kunskapen spreds sedan via muslimska länder till Italien och Spanien, där de första europeiska pappersbruken startades på 1200-talet. Snart producerades det papper i stora mängder över hela Europa. Detta fick till följd att det plötsligt var skrivaren som var dyr när man skulle producera en bok, medan det fanns ett överflöd av billigt skrivmaterial. Nu fanns det istället alldeles för få skrivare som kunde använda detta fantastiska nya material.
Lösningen uppfanns av en tysk guldsmed, som jag känner som Johann Gutenberg. Han uppfann tryckpressen med "rörliga typer", och därigenom kunde man börja massproducera böcker mekaniskt i stora upplagor. Efter att Gutenberg hade fullbordat sin uppfinning - omkring 1450 - ökade det totala antalet böcker i världen från några tusen till 50 miljoner under loppet av några år. Det har sagts att det var ett tryckpressen som skapade den moderna tiden. Kanske har jag tryckpressen att tacka för demokratin, industrialiseringen och upplysningen. Nu blev det plötsligt möjligt att på ett effektivt och billigt sätt sprida nya tankar, idéer och kunskap över stora geografiska områden, något som förmodligen påverkade samhällsutvecklingen i Europa mer än något annat.
Vad har då detta med artificiell intelligens att göra, och vad spelar det för roll i den värld jag lever i idag? Jo, på många sätt liknar vårt moderna samhälle 1400-talets Europa om man betraktar det från "informationens" perspektiv. På 1400-talet översvämmades marknaden av billigt material för att lagra information på, det vill säga papper. Idag badar jag i datorkraft.
De datorer som jag har stående på våra skrivbord gör för det mesta ingenting. En normal dator arbetar mindre än en promille av den tid den skulle kunna arbeta, resten av tiden står den overksam. jag går miste om triljontals datorcykler som skulle kunna användas till något nyttigt. Delvis är problemet att det är så dyrt att programmera en dator. Du kan köpa en komplett liten dator för mindre än en tia, men ska du programmera den så kan det kosta mer än en årslön att hyra en programmerare. Idag har jag alltså billiga informationsbehandlingssystem; billiga datorer, men jag saknar ett effektivt sätt att programmera dem mekaniskt. Lösningen kan vara att hitta ett nytt sätt att programmera, en ny tryckpress om man så vill.
Om jag hittar en metod som genererar datorprogram mekaniskt så kan jag skapa helt automatisk databehandling, vilket kan leda till en större förändring än den som tryckpressen en gång gav upphov till. jag skulle få en metod att utnyttja all den datorkapacitet som jag idag redan har, men där alla världens datorer bara står och går på tomgång under större delen av sina "liv".
Ett annat sätt att betrakta AI-utvecklingen är utifrån samhällets trånga resurser. Det har sagts att det under medeltiden var mark som var den viktigaste resursen. Att lägga under sig så mycket jord som möjligt var betydelsefullt, det var mark som var grunden till välstånd. Under industrialismen var det kapital som var den trånga resursen. Det var kapitalet och bristen på det som styrde utvecklingen. I det som har kallats den nya ekonomin, eller informationssamhället, är det istället hjärnorna som utgör den trånga resursen. Det företag som kan samla på sig de mest briljanta hjärnorna kommer att expandera snabbast.
Det finns goda skäl att tro att det inom en snar framtid kommer att vara de konstgjorda hjärnorna som är den trånga resursen och det viktigaste redskapet för ekonomisk tillväxt. Snart kommer det att vara omöjligt för människor att sortera och filtrera den flod av information som väller över oss varje dag. Den som kan skaffa mekanisk hjälp att sovra informationen har det verkliga övertaget. Kanske kommer metoder för konstgjord intelligens och dess effektivitet att vara den trängsta resursen i vad som redan har kallats den tredje industriella revolutionen.
Precis som med tryckpressens inträde i samhället, där det på 1400-talet var omöjligt att överblicka konsekvenserna för samhällsutvecklingen, så kan jag med den nya AI-tekniken få en oerhörd utveckling som idag är oförutsägbar. Att alla skulle kunna få sina egna skräddarsydda datorprogram är bara en liten del av en sådan revolution. Framför allt handlar det om en process som kan accelerera sig själv. Om jag får ett sant intelligent system så kan det inte bara vara med och förbättra vår värld, utan även förbättra sig själv, möjligtvis på ett "självförstärkande" sätt så att jag får en explosion, en exponentiell tillväxt av tillgänglig intelligens. Intelligensen ger "ränta på ränta".
Detta kan leda till ett fenomen som ibland kallas för singulär AI. Inom matematiken och fysiken används begreppet singularitet för exceptionella, odefinierade tillstånd. Om man dividerar ett tal med noll får man till exempel en matematisk singularitet, man får inte fram något värde utan bara ett odefinierat tillstånd. Inom kosmologin används singulariteter bland annat för att beskriva svarta hål i rymden där gravitationen är oändlig. Singulär AI innebär på motsvarande sätt ett odefinierat tillstånd som faller utanför ramen för vår begreppsvärld. jag kan idag inte tolka vad singulär AI skulle innebära.
Vad kan man tänka sig att utvecklingen skulle leda till? Skulle jag få en utopi, där jag människor bara behöver syssla med det som är självförverkligande, medan jag för övrigt är betjänade av maskiner? De superintelligenta systemen kanske snabbt skulle lösa de flesta vetenskapliga problem som jag människor brottats med under lång tid. Kanske skulle cancer och andra sjukdomar, världssvält och miljöproblem kunna lösas genom en serie aha-upplevelser, producerade av system med en oerhörd konstgjord intelligens. Eller, skulle en sådan utveckling leda till en instabil situation där de intelligenta systemen på något sätt tar över kontrollen av samhället?
Kanske behöver jag inte vara så oroliga för en instabil situation. Om jag lyckas hålla en viss kontroll över utvecklingen av konstgjord intelligens så kanske de intelligenta systemen inte alls kommer att konkurrera med människan. jag kan jämföra med en annan mänsklig bedrift som i tusentals år ansågs vara praktiskt och teoretiskt omöjlig – flyget.
Det finns gott om roliga citat som är 150 år gamla, där olika auktoriteter hävdar att flygplanet är omöjligt. Men när flygplanet sedan uppfanns fick det en makalös utveckling. På bara hundra år har jag fått se flygplan som fraktar flera hundra personer, och passagerarplan med hastigheter som överskrider dubbla ljudhastigheten. Eller för att spetsa till det ytterligare; det tog bara 66 år från bröderna Wrights första blygsamma skutt med ett tyg- och träflygplan, tills jag flög till månen. Att det skulle gå så fort hade ingen av åskådarna kunnat drömma om i början på 1900-talet, när de första motordrivna flygplanen försiktigt lättade några meter, för att sedan krascha under sin egen tyngd.
Intressant nog är dessa otroliga underverk till flygande maskiner fortfarande väldigt olika naturens lösning på problemet med flygande. jag har ännu inte sett en jumbojet landa på en telefontråd, och ingen av våra fantastiska flygmaskiner flaxar med vingarna. På samma sätt kommer kanske inte alls den konstgjorda intelligensen likna människans intelligens. jag kommer istället att använda den som ett kraftfullt verktyg för att lösa vissa problem där den blir totalt överlägsen naturens förmåga, men utan behovet av att imitera eller konkurrera. Att efterlikna känslor till exempel, kanske inte alls är värt besväret för ett system med konstgjord intelligens. I så fall kommer jag inte att få intelligens som direkt liknar den mänskliga intelligensen, inga vackert flaxande svalor eller andra fåglar, utan snarare effektiva överljudsflygplan som gör någonting helt nytt utan att konkurrera med "fåglarna".

The creative computer

A new initiative:

The computer is often viewed as a deterministic rather than a creative entity, which follows its program in a strictly deterministic fashion. As computers have become more powerful, this view has become less obvious. When the internal state of a complex entity cannot be monitored in detail, its actions may appear genuinely creative to an observer. Aspects of creativity appear in several new computational paradigms, such as evolutionary algorithms. Active at Chalmers one of the leading research centers in Europe in areas such as genetic programming and artificial life, I would like to explore the boundary between this work, engineering design problems, visual design and artistic applications. Evolutionary algorithms in design may either evolve solutions automatically given a fixed quality criterion, or a human may partially guide the search for new designs (interactive evolution). Interactive evolution can play an important role in amplifying human creativity. As simulation techniques improve, automated techniques will become common tools in engineering, without any bias in favor of conventional solutions. In the project, principles of computer assisted design, and human-computer interactions in such systems will be studied, as well as methods for learning about user preferences through adaptive methods. A common theoretical framework for automatic design in terms of fitness landscapes in domains from biotechnology to mechanical engineering will be explored. New powerful simulators, e.g., for deformable media and fluid flow will be used in this framework. Evolution of 3-D objects (also with time dependence) will be studied, in particular using growth algorithms. Collaborative interactive design, and interactions between a learning user and an adaptive machine will also be studied. Collaborations with artists will be developed both in areas of image and sound. The project will also include studies of the concept of creativity itself, involving researchers from philosophy and cognitive science, and complex systems modelling.