Sekėjai

Ieškoti šiame dienoraštyje

2024 m. balandžio 5 d., penktadienis

Dideli kalbų modeliai padeda tobulėti kompiuterių programoms

 

 

"Kompiuterių mokslo šaka, žinoma, kaip genetinis programavimas, buvo paskatinta, taikant didelius kalbų modelius, kurie mokomi, remiantis pasaulio programuotojų intuicija.

 

     Nors mašinos pranoksta žmones, atliekant daugelį užduočių – nuo gamybos iki žaidimų 1,2, jos paprastai laikomos nepajėgiomis kurti ar išrasti dalykus. Tačiau tai keičiasi: per pastaruosius trejus metus technologijų įmonės išleido dirbtinio intelekto (AI) programas, kurios gali įspūdingai kūrybiškai piešti ar rašyti. Mokslinis atradimas gali būti kitas tikslas, nes kompiuteriai pradeda atskleisti žinias, kurių mokslininkai nepastebėjo. Rašydami Nature, Romera-Paredes ir kt.3 praneša apie savarankišką matematinį atradimą, kuriam buvo naudojamas AI – ne siekiant patikrinti įrodymus ar atlikti varginančius skaičiavimus, o išspręsti atviras problemas. Tikėtina, kad šį koncepcijos įrodymą paseks kitos panašios programos, nes programinė įranga tampa kūrybinga priemone moksliniams atradimams.

 

     Romera-Paredes ir kolegų darbas yra naujausias žingsnis ilgoje mokslinių tyrimų eilutėje, kuria bandoma automatiškai kurti programas, įkvėpus biologinės evoliucijos, srities, vadinamos genetiniu programavimu. Procesas prasideda paleidžiant daugybę atsitiktinių programų, siekiant išsiaiškinti, kaip gerai kiekviena iš jų gali išspręsti tikslinę problemą. Tada geriausios programos atrenkamos, nukopijuojamos ir atsitiktinai modifikuojamos, panašiai kaip genetinė mutacija. Tada procesas vėl prasideda su šiomis modifikuotomis programomis, kurios atrenkamos ir modifikuojamos tol, kol viena programa tinkamai išsprendžia problemą.

 

     Pagrindinis genetinio programavimo klausimas yra tai, kaip pavaizduoti programas, kad jas būtų galima lengvai, bet prasmingai modifikuoti atsitiktiniu būdu. Kitaip tariant, kas yra kompiuterio programos „DNR“? Pavyzdžiui, atsitiktinių raidžių įtraukimas į programą, parašytą Python skriptų kalba, greičiausiai, neatves prie programos, kuri atitiktų Python sintaksę, o tai reiškia, kad kompiuteris negali vykdyti daugumos modifikuotų programų, todėl jos yra nenaudingos.

 

     Norėdami išspręsti šią problemą, genetinio programavimo tyrinėtojai įkvėpimo sėmėsi iš kompiliatorių, kurie yra programos, kurios programavimo kalba parašytą tekstą paverčia kodu, kurį gali interpretuoti kompiuteris. Kompiliatoriai vaizduoja programas kompiuterio atmintyje su abstrakčia „medžio“ struktūra. Naudodama šį vaizdą, genetinio programavimo sistema „mutuoja“ programą, atsitiktinai pakeisdama vieną medžio mazgą į kitą reikšmę. Pavyzdžiui, mutacija gali pakeisti pliuso ženklą minuso ženklu arba skaičių 2 pakeisti 3. Panašiai sistema sumaišo dvi programas keisdama atsitiktinai pasirinktus pomedžius iš dviejų atskirų programų.

 

     Šis požiūris davė daug įdomių rezultatų. Pastaruosius 20 metų buvo rengiamas konkursas, skirtas parodyti, kaip evoliucijos įkvėpti algoritmai skiriasi nuo žmonių sukurtų algoritmų (žr. human-competitive.org/awards). Vienas iš pavyzdžių yra programa Eureqa, kuri automatiškai suranda klasikinių dinaminių sistemų, tokių, kaip siūbuojanti švytuoklė, judesio lygtis, naudodama tik duomenis5. Kitas pavyzdys yra GenProg sistema6, kuri suteikia galimybę automatiškai taisyti esamas atvirojo kodo programas ir netgi uždirbo jos kūrėjams pinigų.

 

     Nepaisant to, genetinis programavimas iki šiol buvo sėkmingas tik lygtims arba trumpoms programų dalims, kurias paprastai sudaro keliolika eilučių. Priežastis ta, kad programuoti sunku. Tam reikia tinkamos sintaksės ir intuicijos, kas galėtų veikti. Ir kiekvienas pakeitimas reikalauja, kad programuotojas atsižvelgtų į likusios programos kontekstą. Apskritai atsitiktiniai sintaksės medžių variantai retai būna reikšmingi, o genetinio programavimo procesas duoda rezultatų tik per milijonus pakartojimų.

 

     Ši situacija keičiasi dėl didelių kalbų modelių (LLM). Šie dideli neuroniniai tinklai yra išmokyti numatyti kitus žodžius tam tikro konteksto kodo eilutėje (vadinamu raginimu), kai jiems buvo paduota milijonai kodo eilučių. Šis didelis pavyzdžių rinkinys suteikia modeliui „intuiciją“ apie tai, ką tipiškas programuotojas parašytų toje pačioje situacijoje. LLM, kurios specializuojasi kodų generavime, daugelis programuotojų naudoja kasdien taip pat, kaip žmonės naudoja automatinio užbaigimo funkciją, pasiekiamą daugelyje programų – modelis atspėja, koks tekstas greičiausiai bus po kiekvieno kodo, todėl nereikia jo įvesti.

 

     LLM yra žaidimą keičiantys įrankiai programuotojams, tačiau jie taip pat gali būti trūkstama genetinio programavimo galvosūkio dalis: jie įtraukia tūkstančių programuotojų žinias, kad sukurtų prasmingą kodą tam tikram kontekstui. Užuot pakeitęs atsitiktines sintaksės medžio dalis, LLM gali generuoti standartine programavimo kalba parašytos programos variantą, pvz.,  kaip Python. Norėdami tai padaryti, paprastas, bet galingas būdas yra pasirinkti dvi programas, jas sujungti ir paprašyti LLM užbaigti programą, naudojant sujungtą porą, kaip raginimą – taip sukuriama trečioji programa. Rezultatas, tikriausiai, turės galiojančią sintaksę ir bus prasmingas savo kontekste. Tačiau jis gali būti netikslus ar optimalus. Štai kodėl procesas turi būti kartojamas, pasirenkant našiausias programas, generuojant variantus. naudojant LLM ir tada išbandant šiuos variantus.

 

     Romera-Paredes ir kt. naudojo šį naują požiūrį į genetinį programavimą, kad surastų optimizavimo ir geometrijos matematinių problemų sprendimo būdus, kurie buvo geresni už geriausius žmogaus programuotojų bandymus. Autorių sistema žada daug, tačiau jai vis tiek reikia vadovautis „įvertinimo funkcija“, kuri nukreipia modelį produktyviausia linkme. Tiesioginis būdas būtų naudoti „patikrinimo funkciją“, kuri nustato, kada problema buvo išspręsta. Autorių vertinimo funkcija yra panaši į mokyklinį testą, kuris buvo skirtas apdovanoti mokymąsi, išlaikant pusiausvyrą tarp lengvų ir sudėtingų klausimų.

 

     Naudojant automatinius programuotojus, tokius kaip Romera-Paredes ir kolegų sukurtas, reikės tokio pat kruopštaus sprendimo rengiant tinkamus testus. Tačiau autorių naujovės parodo LLM panaudojimo galią ir potencialą kuriant kūrybines programas problemoms spręsti, ir šis pažanga yra besivystančios sėkmės istorijos dalis7,8. Kadangi šiems modeliams skirtos problemos tampa vis aktualesnės, akivaizdu, kad LLM genetiniam programavimui įkvėps naujos gyvybės." [1]


1. Nature 625, 452-453 (2024)  By Jean-Baptiste Mouret

Komentarų nėra: