Detail článku

how to:bit AlphaCode: Umělá inteligence se učí psát kód a daří se jí to

01. 02. 2023 | how to:bit <<<Na všechny články
Sdílej to!
S čím to souvisí?

Software je všudypřítomný – využívají je všichni a všude. Jenže společnosti dlouhodobě bojují s nedostatkem programátorů. Mohla by s touto situací pomoci umělá inteligence?

Systém umělé inteligence nazvaný AlphaCode podle nové studie přibližuje lidstvo o krok blíže k vizi, kdy počítač na základě vstupů a požadavků od uživatele sestaví fungující program. Zní to jako sci-fi? Je důvod k obavám? To určitě ne, role AI v programování bude podle všeho spíš podpůrná: vědci tvrdí, že AlphaCode z výzkumné laboratoře DeepMind, dceřiné společnosti Alphabetu (mateřské společnosti Googlu), může jednoho dne pomáhat zkušeným programátorům, ale pravděpodobně je nedokáže nahradit.

 

AlphaCode překračuje dosavadní standardní postupy v oblasti psaní kódu umělou inteligencí, které reprezentoval zejména Codex, systém, který v roce 2021 vydala výzkumná laboratoř OpenAI. Laboratoř již dříve vyvinula GPT-3, populární jazykový model, který je po vyškolení na miliardách slov z digitálních knih, článků Wikipedie a dalších stránek internetových textů zdatný v napodobování a interpretaci lidského textu. Po vyladění modelu GPT-3 na více než 100 gigabajtech kódu z online úložiště softwaru Github přišla společnost OpenAI s modelem Codex. Tento systém dokáže psát kód, když je mu zadán běžný popis toho, co má dělat – například počítat samohlásky v řetězci textu. Tvůrci AlphaCode ale zašli ještě dál a zaměřili se na složitější úlohy. A udělali to podobně jako lidé stojící za Codexem: začali tím, že velký jazykový model „nakrmili“ mnoha gigabajty kódu z GitHubu, aby se seznámil se syntaxí a konvencemi kódování. Poté jej vycvičili k překladu popisů problémů do kódu pomocí tisíců problémů shromážděných z různých hackathonů a programovacích soutěží.

Ukázkou takových problémů, respektive zadání je například požadavek, aby program určil počet binárních řetězců (posloupností nul a jedniček) o délce n, které nemají žádnou po sobě jdoucí nulu. Po předložení nového problému AlphaCode vygeneruje kandidáty na řešení kódu (v jazyce Python nebo C++) a odfiltruje ty špatné. Zatímco však výzkumníci dříve používali modely jako Codex, které generovaly desítky nebo stovky kandidátů, společnost DeepMind nechala AlphaCode vygenerovat až více než milion kandidátů.

Aby je AlphaCode odfiltroval, ponechal si nejprve pouze 1 % programů, které prošly testovacími případy. Aby dále zúžil pole, shlukuje uchovávané programy na základě podobnosti jejich výstupů. Poté předkládá programy z každého shluku jeden po druhém, dokud nedojde na úspěšný nebo nedosáhne 10 předložených programů (přibližně maximum, které lidé předkládají v soutěžích). To umožňuje testovat širokou škálu programovacích taktik. Podle Kevina Ellise, počítačového vědce z Cornellovy univerzity, který se zabývá kódováním umělé inteligence, jde nejinovativnější krok v procesu AlphaCode. Po tréninku AlphaCode vyřešil přibližně 34 % zadaných problémů, uvedl DeepMind pro magazín Science (Codex dosáhl v podobných testech jednociferné úspěšnosti).

 

AlphaCode soutěží

Aby společnost DeepMind dále otestovala „zdatnost“ svého výtvoru, přihlásila AlphaCode do online kódovacích soutěží. V soutěžích s nejméně 5 000 účastníky systém překonal 45,7 % programátorů. Výzkumníci také porovnali jeho programy s programy v tréninkové databázi a zjistili, že neduplikuje velké části kódu nebo logiky. Generoval něco nového, co by se dalo označit jako kreativita.

Kódování umělé inteligence by mohlo mít široké uplatnění, jak uvedl Yujia Li, počítačový vědec ze společnosti DeepMind. Mohlo by vykonávat softwarovou práci a uvolnit tak vývojářům místo pro práci na vyšší nebo abstraktnější úrovni, nebo by mohlo pomoci začátečníkům vytvářet jednoduché programy.

David Choi, další autor studie ze společnosti DeepMind, si představuje fungování modelu v opačném směru: překládání kódu k vysvětlení toho, co dělá, což by mohlo být přínosem pro programátory, kteří se snaží pochopit kód ostatních.

Prozatím chce DeepMind snížit chybovost systému. Li říká, že i když AlphaCode vygeneruje funkční program, někdy se dopustí jednoduchých chyb, například vytvoří proměnnou a nepoužije ji.

Objevují se i další problémy. AlphaCode vyžaduje desítky miliard bilionů operací na jeden problém – výpočetní výkon, který mají jen největší technologické společnosti. A problémy, které řešil z online programátorských soutěží, byly poměrně jednoduché a samoúčelné. K programování v reálném světě však často zapotřebí správa rozsáhlých balíčků kódu na více místech, což vyžaduje ucelenější chápání softwaru.

Studie také upozorňuje na dlouhodobé riziko softwaru, který se rekurzivně vylepšuje. Podle některých odborníků by takové sebezdokonalování mohlo vést k superinteligentní umělé inteligenci, která by se mohla vymknout kontrole. To je samozřejmě nejméně pravděpodobný scénář, vědci přesto chtějí, aby oblast kódování umělé inteligence měla jasné mantinely a kontrolní mechanismy.

<<<Na všechny články