Kaj se lahko umetna inteligenca nauči iz evolucije? Prijavi se na hekaton!
Umetna inteligenca že dolgo buri duhove javnosti. Prvi prikaz živečega uma v stroju se je na malih ekranih dalo videti že leta 1927, v kultnem nemškem filmu Metropolis. Prve zgodbe o inteligentnih robotih pa lahko zasledimo že v času antične Grčije, kjer so pripovedovali o bronastemu možu Talosu, ki je stražil obale Krete. Kot znanstvena disciplina pa se je umetna inteligenca uveljavila leta 1956. Do današnjega dne je področje doživelo več vzponov in padcev popularnosti, trenutno pa zanimanje zanjo hitro narašča.
Do danes ima umetna inteligenca ogromno različnih pristopov in algoritmov – od odločitvenih dreves, pa vse do nevronskih mrež. V tem članku bomo predstavili delovanje evolucijskih algoritmov. Kot morda lahko ugotovimo že iz imena, evolucijski algoritmi poskušajo simulirati evolucijo v naravi. V grobem lahko algoritem razdelimo na 3 dele: selekcijo, križanje in mutacije.
(Ne)naravna selekcija
Da lahko evolucijski algoritem začne z delom, potrebuje množico rešitev, ki (ne nujno dobro) rešujejo problem. To množico imenujemo »začetna populacija«, vsak element te množice pa »osebek«. Začetno populacijo lahko sestavimo sami, lahko pa jo naključno generiramo.
Ne smemo pozabiti implementirati nekakšne hevristične funkcije, ki nam bo povedala kako »dobro« določena rešitev oz. osebek populacije rešuje naš problem. Kaj točno ta funkcija je, je odvisno od primera problema in tipa osebkov s katerimi delamo. Npr.: v kolikor vsak osebek predstavlja računalniškega agenta, ki igra računalniško igrico »Go«, lahko za hevristično funkcijo izberemo turnir igre »Go«, v katerem se pomeri celotna populacija vseh naših osebkov.
Ko imamo pripravljeno začetno populacijo in hevristično funkcijo, lahko izvedemo prvo selekcijo. To storimo tako, da vse osebke v populaciji najprej ovrednotimo (s pomočjo prej izbrane hevristične funkcije), nato pa obdržimo le določeno število najboljših agentov, ki jih pošljemo naprej v križanje.
Križanje
Faza križanja je posebna zato, ker ustvarja nove osebke (potomce) iz podatkov trenutnih osebkov. Po navadi najprej izberemo dva osebka, ki predstavljata starša. Nato začnemo ustvarjati nov osebek – potomca. Vanj vstavljamo podatke iz osebkov, ki smo jih izbrali za starša. Pogosto ciljamo na to, da dobi potomec približno polovico podatkov od prvega starša, polovico pa od drugega. Nato lahko izberemo druga dva osebka in postopek večkrat ponovimo.
Mutacije
Ko so bili ustvarjeni vsi potomci, jih čaka še ena faza – mutiranje. V vsakem potomcu izberemo nekaj podatkov, ter jih naključno spremenimo. S tem se poskuša simulirati nepredvidljivost mutacij v naravni evoluciji.
Tukaj moramo pri izbiri parametrov biti precej pazljivi. Paziti moramo, koliko podatkov bomo spremenili v vsakem potomcu in kakšna je dovoljena sprememba. S premajhnimi vrednostmi bo iskanje novih, boljših rešitev potekalo počasneje. S prevelikimi vrednostmi pa povozimo stare, že preverjene vrednosti, in s tem preostali koraki algoritma izgubijo smisel.
Bi z evolucijskim algoritmom lahko reševal probleme? Prijavi se na hekaton
Evolucijski algoritmi so se izkazali za precej uspešen pristop k optimizaciji problemov. Misliš, da bi z evolucijskim algoritmom probleme reševal tudi ti?
V tem primeru ti BEST Maribor ponuja odlično priložnost, da se preizkusiš. 25. in 26. februarja 2022 namreč v sodelovanju s podjetjem Aqua Systems d.o.o. prirejajo Hackathon – Napovedovanje trendov porabe za namen dobave. Tema bo umetna inteligenca. Zmagovalec ima priložnost osvojiti 1400€.
Hackaton bo potekal preko spleta (MS Teams), prijave pa zbirajo do 18. februarja 2022. Prijaviš se lahko na tej povezavi.