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

Large language models help computer programs to evolve

"A branch of computer science known as genetic programming has been given a boost with the application of large language models that are trained on the combined intuition of the world’s programmers.      

Although machines outperform humans at many tasks, from manufacturing to playing games1,2, they are commonly considered incapable of creating or inventing things. But this is changing: over the past three years, technology companies have been releasing artificial intelligence (AI) programs that can draw or write with impressive creativity. Scientific discovery might be the next target, as computers start to uncover knowledge that has eluded scientists. Writing in Nature, Romera-Paredes et al.3 report an autonomous mathematical discovery for which AI was used — not to check a proof or to execute tedious computations, but to solve open problems. This proof of concept is likely to be followed by other programs like it, as software becomes a creative contributor to scientific discoveries.

Romera-Paredes and colleagues’ work is the latest step in a long line of research that attempts to create programs automatically by taking inspiration from biological evolution, a field called genetic programming4. The process starts with running many random programs to find out how well each one can solve a target problem. The best programs are then selected, copied and randomly modified, in a manner that is similar to genetic variation. The process then begins again with these modified programs, which are selected and modified until one program solves the problem adequately.

The key question in genetic programming is how to represent programs so that they can be modified easily, but meaningfully, by random variation. In other words, what is the ‘DNA’ of a computer program? For instance, adding random letters to a program written in the Python scripting language is unlikely to result in a program that follows Python syntax, which means that the vast majority of modified programs cannot be executed by the computer, and are therefore useless.

To approach this problem, genetic programming researchers have taken inspiration from compilers, which are programs that transform text written in a programming language into code that a computer can interpret. Compilers represent programs in the computer’s memory with an abstract ‘tree’ structure. Using this representation, a genetic-programming system ‘mutates’ a program by randomly changing one node in the tree to a different value (Fig. 1a). For example, a mutation might replace a plus sign with a minus sign, or the number 2 with a 3. Similarly, the system mixes two programs by exchanging randomly chosen sub-trees from the two separate programs.

This approach has given rise to many fascinating results. For the past 20 years, a competition has been held to showcase how evolution-inspired algorithms measure up to those made by humans (see human-competitive.org/awards). One example is a program called Eureqa, which automatically finds the equations of motion for classic dynamical systems, such as a swinging pendulum, using data alone5. Another example is the GenProg system6, which provides a way of automatically repairing existing open-source programs — and even earned its developers money doing so.

Nevertheless, genetic programming has so far been successful only for equations or short sections of programs, typically comprising a dozen lines. The reason for this is that programming is hard. It requires the right syntax and intuition about what could work. And every change requires the programmer to take the context of the rest of the program into account. In general, random variations in syntax trees are rarely meaningful and the genetic-programming process yields results only through millions of repetitions.

 

AI learns to write sorting software on its own

 

This situation is changing with large language models (LLMs). These large neural networks are trained to predict the next words in a line of code for a given context (known as a prompt), after having been fed millions of lines of code. This large body of examples gives the model an ‘intuition’ about what a typical programmer would write in the same situation. LLMs that are specialized in code generation are used daily by many programmers in the same way that people use the autocomplete function available in many apps — the model guesses the most likely text to follow each piece of code, so there is no need to type it or to memorize the function names.

LLMs are game-changing tools for programmers, but they might also be the missing piece of the genetic-programming puzzle: they embed the knowledge of thousands of programmers to generate meaningful code for a given context. Instead of replacing random parts of a syntax tree, an LLM can generate a variation of a program written in a standard programming language, such as Python. To do so, a simple, but powerful, approach is to select two programs, concatenate them, and ask the LLM to complete the program using the concatenated pair as a prompt — resulting in the generation of a third program (Fig. 1b). The result will probably have valid syntax and be meaningful in its context. However, it might not be exact or optimal. This is why the process must be iterated, by selecting the highest-performing programs, generating variations using the LLM and then testing these variations.

Romera-Paredes et al. used this fresh approach to genetic programming to find ways of solving mathematical problems in optimization and geometry that were better than the best attempts of human programmers. The authors’ system shows promise, but it still requires guidance in the form of an ‘evaluate function’, which nudges the model in the most productive direction. A more direct way would be to use a ‘validate function’, which determines when the problem has been solved. The authors’ evaluate function is similar to a school test that has been designed to reward learning by striking a balance between easy and difficult questions.

Using automatic programmers, such as the one developed by Romera-Paredes and colleagues, will require the same level of careful judgement in crafting the right tests. However, the authors’ innovation demonstrates the power and potential of using LLMs to write creative programs for solving problems, and this advance is part of a developing success story7,8. As the problems intended for these models become ever more relevant, it’s clear that LLMs will breathe new life into genetic programming." [1]


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

 

„Paruoškite ir pamirškite“: automatizuota laboratorija naudoja dirbtinį intelektą ir robotiką, kad pagerintų baltymus

   „Savavairėje laboratorijų sistemoje pusmetį buvo naudojami fermentai, skirti dirbti aukštesnėje temperatūroje.

 

     Savavairė laboratorija, susidedanti iš robotų įrangos, kuriai vadovauja paprastas dirbtinio intelekto (AI) modelis, sėkmingai perkūrė fermentus be jokios žmonių įtakos, išskyrus retkarčiais atliekamus techninės įrangos pataisymus.

 

     „Tai pažangiausias darbas“, – sako Héctoras García Martínas, fizikas ir sintetinis biologas iš Lawrence'o Berkeley nacionalinės laboratorijos Berklyje, Kalifornijoje. "Jie visiškai automatizuoja visą baltymų inžinerijos procesą."

 

     Savavairės laboratorijos sujungia robotų įrangą su mašininio mokymosi modeliais, galinčiais nukreipti eksperimentus ir interpretuoti rezultatus, kad būtų sukurtos naujos procedūros. Pasak mokslininkų, tikimasi, kad autonominės laboratorijos paskatins mokslinį procesą ir pateiks sprendimus, kurių žmonės galėjo patys nesugalvoti.

 

     Monotoniškas darbas

 

     Baltymų inžinerija yra ideali užduotis savavairėms laboratorijoms, sako Philipas Romero, Viskonsino-Madisono universiteto baltymų inžinierius, vadovavęs tyrimui, paskelbtam sausio 11 d. Nature Chemical Engineering. Įprasti metodai dažniausiai remiasi tam tikronis savybėmis, tarkime, fermento aktyvumo, tyrimo sukūrimu ir daugybės mutavusių baltymo versijų atranka. „Tiek daug baltymų inžinerijos srities yra monotoniška“, - sako jis.

 

     Sistemą, kurią sukūrė Romero komanda, varo gana paprastas mašininio mokymosi modelis, kuris susieja baltymo seką su jo funkcija ir siūlo sekos pakeitimus, kad pagerintų funkciją. Jis pristato baltymų sekas laboratorinei įrangai, kuri gamina baltymus, išmatuoja jų aktyvumą, o rezultatus grąžina modeliui, kad būtų galima atlikti naują eksperimentų etapą. „Mes paruošėme ir pamiršome“, – sako Romero.

 

     Tyrimo metu tyrėjai pavedė savo savavairei laboratorijai padaryti metabolinius fermentus, vadinamus glikozidų hidrolazėmis, atsparesnius aukštai temperatūrai. Po 20 eksperimentinių ciklų kiekvienoje iš 4 kampanijų buvo sukurtos naujos fermentų versijos, kurios galėjo veikti bent 12 ˚C aukštesnėje temperatūroje, nei baltymai, su kuriais pradėjo ši autonominė laboratorija.

 

     Tyrėjai pirmiausia bandė paleisti savo robotinę įrangą, tačiau mašinos vis lūždavo. Taigi, jie kreipėsi į debesų laboratoriją Kalifornijoje – esamą įrenginį su robotine įranga, kuri gali būti nukreipta nuotoliniu būdu, naudojant kompiuterio kodą – ir paruošė savo AI modelį, kad ten būtų siunčiamos instrukcijos. Visas eksperimentas truko apie 6 mėnesius, įskaitant 2,5 mėnesio pertrauką dėl pristatymo vėlavimo, o kiekvienas 20 raundų kainavo apie 5200 JAV dolerių, skaičiuoja tyrėjai. Tą patį darbą atlikdamas, žmogus gali praleisti iki metų.

 

     Žinių generavimas

 

     Savavairėms biologijos laboratorijoms tobulinti gali prireikti naujos kartos aparatinės įrangos, nes esama automatizuota laboratorijų įranga paprastai gaminama, atsižvelgiant į žmogų - prižiūrėtoją, sako García Martín. Esminis iššūkis yra sukurti savavaires laboratorijas, galinčias generuoti žinias, kurias galėtų interpretuoti mašinos ir žmonės.

 

     Padaryti baltymus karščiui stabilesnius yra gana paprasta, sako Huiminas Zhao, Ilinojaus Urbana-Champaign universiteto sintetinis biologas. Neaišku, kaip lengvai savavairę laboratoriją galima pritaikyti fermentams keisti kitais būdais.

 

     Romero sako, kad jo komanda stengiasi pritaikyti savo savavairę laboratoriją kitiems baltymų inžinerijos iššūkiams. Grupė taip pat nori įtraukti sudėtingesnius giluminio mokymosi įrankius, kurie paskatino baltymų dizaino pažangą.

 

     Tačiau mokslininkai nesistengia sumažinti mokslinės darbo jėgos. „Mes nepadarome žmones nereikalingais“, – internetiniame seminare, pristatančiame darbą, sakė tyrimo bendraautorius Jacobas Rappas, Viskonsino ir Madisono universiteto baltymų inžinierius. "Mes keičiame nuobodžias dalis, kad galėtumėte sutelkti dėmesį į įdomias mūsų inžinerinio darbo dalis." [1]

 

 

1. Nature 625, 436 (2024) By Ewen Callaway