Jauns neironu tīkls varētu palīdzēt datoriem kodēt sevi

AI raksta datora kodu

Tehnikas kundze





Datorprogrammēšana nekad nav bijusi vienkārša. Pirmie kodētāji rakstīja programmas ar roku, uzzīmējot simbolus uz milimetru papīra, pirms tos pārveidoja lielās perfokaršu kaudzēs, kuras varēja apstrādāt dators. Viena atzīme nevietā, un viss, iespējams, būs jāpārtaisa.

Mūsdienās kodētāji izmanto virkni jaudīgu rīku, kas automatizē lielu daļu darba, sākot no kļūdu noteikšanas rakstīšanas laikā līdz koda pārbaudei pirms tā izvietošanas. Bet citos veidos maz ir mainījies. Viena muļķīga kļūda joprojām var izraisīt visas programmatūras avārijas. Tā kā sistēmas kļūst arvien sarežģītākas, šo kļūdu izsekošana kļūst arvien grūtāka. Dažkārt kodētāju komandām var paiet dienas, lai novērstu vienu kļūdu, saka Džastins Gotšlihs, Intel mašīnu programmēšanas pētniecības grupas direktors.

Tāpēc daži cilvēki domā, ka mums vajadzētu vienkārši likt mašīnām programmēt sevi. Automātiskā kodu ģenerēšana ir bijusi aktuāla pētniecības tēma jau vairākus gadus. Microsoft veido pamata kodu ģenerēšanu savos plaši izmantotajos programmatūras izstrādes rīkos, Facebook ir izveidojis sistēmu ar nosaukumu Smarža kas automātiski pabeidz mazas programmas, un DeepMind ir izstrādājis neironu tīklu, kas var nākt klajā efektīvākas versijas vienkāršus algoritmus nekā cilvēku izstrādātie. Pat OpenAI GPT-3 valodas modelis var izspiediet vienkāršas koda daļas , piemēram, tīmekļa lapu izkārtojumus, izmantojot dabiskās valodas uzvednes.



Gotšlihs un viņa kolēģi to sauc mašīnu programmēšana . Strādājot ar komandu no Intel, MIT un Džordžijas Tehnoloģiju institūta Atlantā, viņš ir izstrādājis sistēmu ar nosaukumu Mašīnas secinātā koda līdzība vai MISIM, kas var iegūt koda daļas nozīmi — to, ko kods liek datoram darīt — tāpat kā dabiskās valodas apstrādes (NLP) sistēmas var lasīt angļu valodā rakstītu rindkopu.

Pēc tam MISIM var ieteikt citus koda rakstīšanas veidus, piedāvājot labojumus un veidus, kā to padarīt ātrāku vai efektīvāku. Rīka spēja saprast, ko programma mēģina darīt, ļauj tai identificēt citas programmas, kas veic līdzīgas darbības. Teorētiski šo pieeju varētu izmantot mašīnas, kas raksta savu programmatūru, balstoties uz jau esošu programmu savārstījumu ar minimālu cilvēka pārraudzību vai ieguldījumu.

MISIM darbojas, salīdzinot koda fragmentus ar miljoniem citu jau redzētu programmu, kas ņemtas no daudziem tiešsaistes krātuvēm. Vispirms tas pārvērš kodu formā, kas tver to, ko tas dara, bet ignorē to, kā tas ir rakstīts, jo divas programmas, kas rakstītas ļoti atšķirīgi, dažreiz veic vienu un to pašu. Pēc tam MISIM izmanto neironu tīklu, lai atrastu citu kodu, kam ir līdzīga nozīme. Iekšā priekšdruka , Gotšlihs un viņa kolēģi ziņo, ka MISIM ir 40 reizes precīzāks nekā iepriekšējās sistēmas, kas mēģina to izdarīt, tostarp Aroma.



MISIM ir aizraujošs solis uz priekšu, saka Veselins Raičevs, Šveices uzņēmuma DeepCode CTO, kura kļūdu novēršanas rīki — vieni no vismodernākajiem tirgū — izmanto neironu tīklus, kas apmācīti miljoniem programmu, lai ieteiktu uzlabojumus kodētājiem, kad tie raksta. .

Bet mašīnmācība joprojām nav lieliska, lai prognozētu, vai kaut kas ir kļūda, saka Raychev. Tas ir tāpēc, ka ir grūti iemācīt neironu tīklam, kas ir vai nav kļūda, ja vien cilvēks to nav atzīmējis kā tādu.

Viņš saka, ka tiek veikts daudz interesantu pētījumu ar dziļiem neironu tīkliem un kļūdu labošanu, taču praktiski tie vēl nav veikti ar lielu starpību. Viņš saka, ka parasti AI kļūdu uztveršanas rīki rada daudz viltus pozitīvu rezultātu.



MISIM to novērš, izmantojot mašīnmācīšanos, lai atklātu līdzības starp programmām, nevis tieši identificētu kļūdas. Salīdzinot jaunu programmu ar esošu programmatūras daļu, kas ir zināma kā pareiza, tā var brīdināt kodētāju par svarīgām atšķirībām, kas varētu būt kļūdas.

Intel plāno izmantot rīku kā koda ieteikumu sistēmu iekšējiem izstrādātājiem, iesakot alternatīvus veidus, kā rakstīt kodu, kas ir ātrāks vai efektīvāks. Taču, tā kā MISIM nav piesaistīts noteiktas programmas sintaksi, tas var darīt daudz vairāk. Piemēram, to var izmantot, lai tulkotu kodu, kas rakstīts vecā valodā, piemēram, COBOL, modernākā valodā, piemēram, Python. Tas ir svarīgi, jo daudzas iestādes, tostarp ASV valdība , joprojām paļaujas uz programmatūru, kas rakstīta valodās, kuras daži kodētāji zina, kā uzturēt vai atjaunināt.

Galu galā Gotšlihs domā, ka šo ideju varētu attiecināt uz dabisko valodu. Apvienojumā ar NLP, spēja strādāt ar koda nozīmi atsevišķi no tā teksta attēlojuma kādu dienu varētu ļaut cilvēkiem rakstīt programmatūru, vienkārši aprakstot to, ko viņi vēlas darīt, viņš saka.



Izveidojiet nelielas lietotnes savam tālrunim vai tamlīdzīgas lietas, kas palīdzēs jūsu ikdienas dzīvē — es domāju, ka tās nav pārāk tālu, saka Gotšlihs. Es vēlētos, lai 8 miljardi cilvēku izveidotu programmatūru tādā veidā, kas viņiem ir visdabiskākais.

paslēpties