• Home
  • Kemi
  • Astronomien
  • Energi
  • Naturen
  • Biologi
  • Fysik
  • Elektronik
  • Evolutionära beräkningar har lovat självprogrammerande maskiner i 60 år – så var är de?

    Kredit:Shutterstock

    Tänk om datorer kunde programmera sig själva? Istället för det mödosamma jobbet att ta reda på hur en dator skulle kunna lösa ett problem och sedan skriva exakta kodade instruktioner, allt du behöver göra är att berätta för den vad du vill ha så genererar datorn en algoritm som löser ditt problem.

    Gå in i evolutionär beräkning, som kan ses som en typ av artificiell intelligens och en gren av maskininlärning. Föreslogs först på 1950-talet, evolutionär beräkning är idén att en dator kan utveckla sina egna lösningar på problem, snarare än att människor måste gå igenom en rad möjligen komplexa steg för att själva skriva datorprogrammet. I teorin, detta skulle innebära att datorprogram som kan ta veckor att programmera manuellt kan vara klara på några minuter.

    Denna idé gjorde det möjligt för datorer att lösa komplexa problem som kanske inte är väl förstådda och som är svåra för människor att ta itu med. Datavetare har använt evolutionära beräkningar på många problem, inklusive att formulera den bästa blandningen av ingredienser för räkfoder, portföljoptimering, telekommunikation, spela spel och automatiserad packning.

    Och forskare som har studerat evolutionära beräkningar i över 60 år har gjort enorma framsteg. Det är till och med föremål för flera vetenskapliga tidskrifter. Än, som jag noterade i en ny tidning, idén används fortfarande inte i stor utsträckning utanför forskarvärlden. Så varför utvecklas inte evolutionär datoranvändning snabbare?

    Hur fungerar evolutionär beräkning?

    Evolutionära beräkningar bygger på Charles Darwins principer för naturlig evolution, allmänt känd som survival of the fittest. Det är, de svagaste (mindre anpassade) medlemmarna av en art dör och de starkaste överlever. Under många generationer, arten kommer att utvecklas för att bli bättre anpassad till sin miljö.

    Genetiskt programmeringsträd. Kredit:Wikimedia

    I evolutionär beräkning, datorn skapar en population av potentiella lösningar på ett problem. Det är ofta slumpmässiga lösningar, så det är osannolikt att de löser problemet som åtgärdas eller ens kommer nära. Men vissa kommer att vara något bättre än andra. Datorn kan kassera de värsta lösningarna, behålla de bättre och använda dem för att "föda upp" fler potentiella lösningar. Delar av olika lösningar kommer att kombineras (detta kallas ofta "crossover") för att skapa en ny generation av lösningar som sedan kan testas och processen börjar om igen.

    En annan viktig del av evolutionär beräkning, som med naturligt urval, är mutation. Då och då en liten, slumpmässig ändring görs i en av lösningarna som testas. Detta innebär att nya potentiella lösningar kan skapas som inte skulle vara möjliga om man bara använder crossover.

    Förhoppningsvis kommer en kombination av crossover och mutation att producera nya potentiella lösningar som är bättre än deras "föräldrar". Detta kanske inte händer varje gång, men när fler generationer produceras, Det är mer sannolikt att bättre lösningar uppstår. Det är inte ovanligt att evolutionära beräkningar involverar många miljoner generationer, precis som naturligt urval kan ta många miljoner år att märkbart förändra en levande art.

    En av de mest populära typerna av evolutionär beräkning är genetisk programmering. Detta innebär att ett datorprogram utvecklar ett annat arbetsprogram för att ta itu med ett specifikt problem. Användaren ger ett mått på vad som utgör ett bra program och sedan tar den evolutionära processen över, förhoppningsvis returnera ett program som löser problemet.

    Vi kan spåra genetisk programmering tillbaka till slutet av 1980-talet, med en av de främsta förespråkarna är John Koza. Men även om det sedan dess har gjort betydande forskningsframsteg, genetisk programmering används inte dagligen av kommersiella organisationer eller hemdatoranvändare. Med tanke på hur knepigt det kan vara att utveckla mjukvarusystem som fungerar effektivt, det verkar klokt att få datorer att hjälpa till på samma sätt som de förändrar många andra branscher.

    Urval, Mutation och Crossover.

    Varför har inte evolutionär beräkning antagits?

    Den kommersiella sektorn har inte anammat evolutionär beräkning eftersom den har andra teknologier som utvecklats av forskare. Till exempel, 3D-utskrift uppfanns på 1980-talet och används nu efter en lång tids utveckling inom industriell tillverkning och även av människor i deras hem. Liknande, förstärkt verklighet, virtuell verklighet och artificiell intelligens har dykt upp från forskarvärlden och blivit stora produkter för stora teknikföretag.

    En av nyckelfrågorna som håller tillbaka evolutionära beräkningar är forskarnas misslyckande att fokusera på problem som den kommersiella sektorn skulle inse. Till exempel, datavetare har intensivt studerat hur evolutionär beräkning kan användas för att schemalägga tentamens tidtabeller eller utarbeta rutter för fordon.

    Men forskare studerar ofta bara förenklade versioner av problem som är till liten nytta i den verkliga världen. Till exempel, många simuleringar av fordonsrutt innebär att man beräknar avståndet mellan två punkter med hjälp av en rät linje. Fordonsrutter i den verkliga världen följer sällan raka linjer, och måste brottas med enkelriktade system, haverier, juridiska frågor (som hur lång tid innan en förare måste vila), tidsbrist och mycket mer. Dock, Denna komplexitet är faktiskt där evolutionära beräkningar kan hjälpa. 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. Till exempel, 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.

    Denna artikel publicerades ursprungligen på The Conversation. Läs originalartikeln.




    © Vetenskap https://sv.scienceaq.com