Videnskab
 science >> Videnskab >  >> Elektronik

Evolutionær beregning har lovet selvprogrammerende maskiner i 60 år - så hvor er de?

Kredit:Shutterstock

Hvad hvis computere kunne programmere sig selv? I stedet for det besværlige arbejde med at finde ud af, hvordan en computer kunne løse et problem og derefter skrive præcise kodede instruktioner, alt du skal gøre er at fortælle den, hvad du vil have, og computeren vil generere en algoritme, der løser dit problem.

Indtast evolutionær beregning, som kan ses som en form for kunstig intelligens og en gren af ​​maskinlæring. Først foreslået i 1950'erne, evolutionær beregning er ideen om, at en computer kan udvikle sine egne løsninger på problemer, frem for at mennesker skal igennem en række muligvis komplekse trin for selv at skrive computerprogrammet. I teorien, dette ville betyde, at computerprogrammer, der kan tage uger at programmere manuelt, kan være klar i løbet af få minutter.

Denne idé gjorde det muligt for computere at løse komplekse problemer, som måske ikke forstås godt, og som er svære for mennesker at tackle. Dataloger har brugt evolutionær beregning på mange problemer, herunder formulering af den bedste blanding af ingredienser til rejefoder, porteføljeoptimering, telekommunikation, spille spil og automatiseret pakning.

Og forskere, der har studeret evolutionær beregning i over 60 år, har gjort enorme fremskridt. Det er endda genstand for flere videnskabelige tidsskrifter. Endnu, som jeg bemærkede i en nylig avis, ideen bliver stadig ikke brugt bredt uden for forskningsmiljøet. Så hvorfor udvikler evolutionær computing sig ikke hurtigere?

Hvordan fungerer evolutionær beregning?

Evolutionær beregning bygger på Charles Darwins principper for naturlig evolution, almindeligvis kendt som survival of the fittest. Det er, de svageste (mindre veltilpassede) medlemmer af en art dør, og de stærkeste overlever. Gennem mange generationer, arten vil udvikle sig til at blive bedre tilpasset sit miljø.

Genetisk programmeringstræ. Kredit:Wikimedia

I evolutionær beregning, computeren skaber en population af potentielle løsninger på et problem. Det er ofte tilfældige løsninger, så det er usandsynligt, at de løser det problem, der løses, eller endda kommer tæt på. Men nogle vil være lidt bedre end andre. Computeren kan kassere de værste løsninger, fastholde de bedre og bruge dem til at "avle" flere potentielle løsninger. Dele af forskellige løsninger vil blive kombineret (dette kaldes ofte "crossover") for at skabe en ny generation af løsninger, som derefter kan testes, og processen begynder igen.

Et andet vigtigt element i evolutionær beregning, som med naturlig udvælgelse, er mutation. En gang imellem en lille, Der foretages tilfældig ændring af en af ​​de løsninger, der testes. Det betyder, at der kan skabes nye potentielle løsninger, som ikke ville være mulige ved blot at bruge crossover.

Forhåbentlig vil en kombination af crossover og mutation producere nye potentielle løsninger, der er bedre end deres "forældre". Dette sker måske ikke hver gang, men efterhånden som flere generationer produceres, bedre løsninger er mere tilbøjelige til at dukke op. Det er ikke usædvanligt, at evolutionære beregninger involverer mange millioner generationer, ligesom naturlig udvælgelse kan tage mange millioner år at ændre en levende art mærkbart.

En af de mest populære typer evolutionær beregning er genetisk programmering. Dette indebærer, at et computerprogram udvikler et andet arbejdsprogram for at løse et specifikt problem. Brugeren giver et mål for, hvad der består af et godt program, og så tager den evolutionære proces over, forhåbentlig returnere et program, der løser problemet.

Vi kan spore genetisk programmering tilbage til slutningen af ​​1980'erne, med en af ​​hovedfortalerne John Koza. Men selvom det siden har gjort betydelige forskningsfremskridt, genetisk programmering bruges ikke på daglig basis af kommercielle organisationer eller hjemmecomputerbrugere. I betragtning af hvor vanskeligt det kan være at udvikle softwaresystemer, der fungerer effektivt, det ville virke fornuftigt at få computere til at hjælpe på samme måde, som de ændrer mange andre industrier.

Udvælgelse, Mutation og Crossover.

Hvorfor er evolutionær beregning ikke blevet vedtaget?

Den kommercielle sektor har ikke omfavnet evolutionær beregning, da den har andre teknologier udviklet af forskere. For eksempel, 3-D print blev opfundet i 1980'erne og bliver efter en lang periode med udvikling nu brugt i industriel fremstilling og endda af folk i deres hjem. Tilsvarende augmented reality, virtual reality og kunstig intelligens er opstået fra forskningsmiljøet og blevet store produkter for store tech-virksomheder.

Et af nøglespørgsmålene, der holder evolutionær beregning tilbage, er forskeres manglende fokus på problemer, som den kommercielle sektor ville erkende. For eksempel, dataloger har intensivt undersøgt, hvordan evolutionær beregning kan bruges til at planlægge eksamensskemaer eller udarbejde ruter for køretøjer.

Men forskere studerer ofte kun forenklede versioner af problemer, der er til lidt nytte i den virkelige verden. For eksempel, mange køretøjsrutesimuleringer involverer beregning af afstanden mellem to punkter ved hjælp af en lige linje. Køretøjsruter i den virkelige verden følger sjældent lige linjer, og skal kæmpe med envejssystemer, nedbrud, legal issues (such as how long before a driver must rest), time constraints and a whole lot more. Imidlertid, 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. For eksempel, 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.

Denne artikel blev oprindeligt publiceret på The Conversation. Læs den originale artikel.




Varme artikler