Wetenschap
Krediet:Shutterstock
Wat als computers zichzelf konden programmeren? In plaats van het moeizame werk uit te zoeken hoe een computer een probleem zou kunnen oplossen en vervolgens nauwkeurige gecodeerde instructies te schrijven, het enige wat u hoeft te doen is het te vertellen wat u wilt en de computer genereert een algoritme dat uw probleem oplost.
Voer evolutionaire berekening in, die kan worden gezien als een vorm van kunstmatige intelligentie en een tak van machine learning. Voor het eerst gesuggereerd in de jaren 1950, evolutionaire berekening is het idee dat een computer zijn eigen oplossingen voor problemen kan ontwikkelen, in plaats van dat mensen een reeks mogelijk complexe stappen moeten doorlopen om het computerprogramma zelf te schrijven. In theorie, dit zou betekenen dat computerprogramma's die weken nodig hebben om handmatig te programmeren, binnen enkele minuten klaar kunnen zijn.
Dit idee stelde computers in staat om complexe problemen op te lossen die misschien niet goed worden begrepen en die voor mensen moeilijk op te lossen zijn. Computerwetenschappers hebben evolutionaire berekeningen voor veel problemen gebruikt, inclusief het formuleren van de beste mix van ingrediënten voor garnalenvoer, portefeuille optimalisatie, telecommunicatie, spelletjes spelen en geautomatiseerd inpakken.
En onderzoekers die al meer dan 60 jaar evolutionaire berekeningen bestuderen, hebben enorme vooruitgang geboekt. Het is zelfs het onderwerp van verschillende wetenschappelijke tijdschriften. Nog, zoals ik in een recent artikel opmerkte, het idee wordt nog steeds niet veel gebruikt buiten de onderzoeksgemeenschap. Dus waarom evolueert evolutionair computergebruik niet sneller?
Hoe werkt evolutionaire berekening?
Evolutionaire berekening is gebaseerd op de principes van natuurlijke evolutie van Charles Darwin, algemeen bekend als survival of the fittest. Dat is, de zwakste (minder goed aangepaste) leden van een soort sterven af en de sterkste overleven. Gedurende vele generaties, de soort zal evolueren om beter aangepast te worden aan zijn omgeving.
Genetische programmeerboom. Krediet:Wikimedia
In evolutionaire berekeningen, de computer creëert een populatie van mogelijke oplossingen voor een probleem. Dit zijn vaak willekeurige oplossingen, dus het is onwaarschijnlijk dat ze het probleem zullen oplossen of zelfs maar in de buurt komen. Maar sommige zullen iets beter zijn dan andere. De computer kan de slechtste oplossingen weggooien, behoud de betere en gebruik ze om meer potentiële oplossingen te "kweken". Delen van verschillende oplossingen worden gecombineerd (dit wordt vaak "crossover" genoemd) om een nieuwe generatie oplossingen te creëren die vervolgens kunnen worden getest en het proces begint opnieuw.
Een ander belangrijk element van evolutionaire berekening, zoals bij natuurlijke selectie, mutatie is. Af en toe een kleine, willekeurige wijziging wordt aangebracht in een van de oplossingen die worden getest. Dit betekent dat er nieuwe potentiële oplossingen kunnen worden gecreëerd die niet mogelijk zouden zijn door alleen crossover te gebruiken.
Hopelijk zal een combinatie van crossover en mutatie nieuwe potentiële oplossingen opleveren die beter zijn dan hun "ouders". Dit gebeurt misschien niet elke keer, maar naarmate er meer generaties worden geproduceerd, betere oplossingen zullen sneller naar voren komen. Het is niet ongebruikelijk dat bij evolutionaire berekeningen vele miljoenen generaties betrokken zijn, net zoals natuurlijke selectie er vele miljoenen jaren over kan doen om een levende soort merkbaar te veranderen.
Een van de meest populaire soorten evolutionaire berekeningen is genetische programmering. Dit houdt in dat het ene computerprogramma een ander werkprogramma ontwikkelt om een specifiek probleem aan te pakken. De gebruiker geeft een zekere mate van wat een goed programma omvat en dan neemt het evolutionaire proces het over, hopelijk een programma teruggeven dat het probleem oplost.
We kunnen genetische programmering terugvoeren tot eind jaren tachtig, met een van de belangrijkste voorstanders is John Koza. Maar hoewel het sindsdien aanzienlijke onderzoeksvooruitgang heeft geboekt, genetische programmering wordt niet dagelijks gebruikt door commerciële organisaties of gebruikers van thuiscomputers. Gezien hoe lastig het kan zijn om softwaresystemen te ontwikkelen die effectief en efficiënt werken, het lijkt verstandig om computers te laten helpen op dezelfde manier waarop ze veel andere industrieën veranderen.
Waarom is evolutionaire berekening niet aangenomen?
De commerciële sector heeft evolutionaire berekeningen niet omarmd, omdat andere technologieën zijn ontwikkeld door onderzoekers. Bijvoorbeeld, 3D-printen is uitgevonden in de jaren tachtig en wordt na een lange periode van ontwikkeling nu gebruikt in de industriële productie en zelfs door mensen thuis. evenzo, augmented reality, virtual reality en kunstmatige intelligentie zijn voortgekomen uit de onderzoeksgemeenschap en zijn belangrijke producten geworden voor grote technologiebedrijven.
Een van de belangrijkste problemen die evolutionaire berekeningen tegenhouden, is het falen van onderzoekers om zich te concentreren op problemen die de commerciële sector zou herkennen. Bijvoorbeeld, computerwetenschappers hebben intensief bestudeerd hoe evolutionaire berekeningen kunnen worden gebruikt om examenroosters te plannen of routes voor voertuigen uit te werken.
Maar onderzoekers bestuderen vaak alleen vereenvoudigde versies van problemen die in de echte wereld van weinig nut zijn. Bijvoorbeeld, veel simulaties van voertuigroutering omvatten het berekenen van de afstand tussen twee punten met behulp van een rechte lijn. Voertuigroutes in de echte wereld volgen zelden rechte lijnen, and have to contend with one way systems, breakdowns, legal issues (such as how long before a driver must rest), time constraints and a whole lot more. Echter, this complexity is actually where evolutionary computation could help. If you can adequately define the problem as it occurs in the real world, then the evolutionary algorithm should be able to deal with its complexity.
Another problem is that the solutions evolutionary computation generates are often hard to explain. Bijvoorbeeld, even though a genetic programming system might create a solution with a perfect outcome, how it actually works might be a mystery to a human programmer as the system may have produced complex code that is difficult to interpret and understand.
An evolutionary computation system is also complex to implement and support and this may put off some commercial organisations. It would help if there was an easy-to-use framework that hid much of the underlying complexity. While these frameworks exist in the scientific community, they are not easily accessible by the commercial sector, never mind home users.
IBM's famous computer architect Frederick Brooks said that you cannot tackle increasingly large software development projects simply by throwing more people at them. It would be an immense help to the software development industry if, instead of having to manually develop every piece of a system, developers could specify the requirements of its key parts and let an evolutionary process deliver the solutions.
Dit artikel is oorspronkelijk gepubliceerd op The Conversation. Lees het originele artikel.
Wetenschap © https://nl.scienceaq.com