Divize umělé inteligence DeepMind společnosti Google se zabývá vším od StarCraftu až po skládání proteinů. Není tedy překvapením, že se její tvůrci nakonec obrátili i ke generování kódu. Ve čtvrtečním vydání časopisu Science popsala společnost systém generující kód, který je typický pro programovací soutěže. Informoval o tom server Ars Technica a Gizmodo.
V testu dokázal AlphaCode dosáhnout „výkonu přibližně na úrovni člověka“ a vyřešit dříve neviděné problémy tím, že předpovídal segmenty kódu a vytvořil miliony potenciálních řešení. Po vygenerování velkého množství řešení je AlphaCode následně vyfiltroval na maximálně 10 řešení. Všechna byla podle výzkumníků vygenerována „bez jakýchkoli vestavěných znalostí o struktuře počítačového kódu„.
Jak uvedl server Ars Technica, v průměrné soutěži mohla umělá inteligence AlphaCode dosáhnout skóre blízko horní poloviny účastníků. Měla však trochu potíže se škálováním, protože s menší pravděpodobností vytvořila úspěšný program v úlohách, kde je obvykle zapotřebí více kódu. Přesto je skutečnost, že vůbec funguje, aniž by mu byly poskytnuty jakékoli strukturální informace o algoritmech nebo programovacích jazycích, ohromující.
DeepMind’s AlphaCode Can Outcompete Human Coders https://t.co/dQURDwVuHa pic.twitter.com/q7E6zUHBds
— Gizmodo (@Gizmodo) December 8, 2022
„Je velmi působivé, jakého výkonu je schopna dosáhnout při řešení docela náročných problémů,“ uvedl Armando Solar-Lezama, vedoucí skupiny počítačem podporovaného programování na Massachusettském technologickém institutu.
Princip soutěží v programování je poměrně jednoduchý. Lidé dostanou úkol, který mají splnit, a vytvoří kód, který by měl požadovaný úkol provést. V příkladu uvedeném v časopise Science jsou programátorům zadány dva řetězce a mají určit, zda lze kratší z nich vytvořit nahrazením některých stisků kláves potřebných k napsání většího řetězce zpětnými mezerami. Odeslané programy jsou pak kontrolovány, zda poskytují obecné řešení problému, nebo zda při testování dalších příkladů selhávají.
Jak AlphaCode funguje
Při dostatečném počtu příkladů programů, které dokáží vyřešit jeden problém, by systém umělé inteligence pravděpodobně dokázal odvodit algoritmickou strukturu potřebnou k úspěchu. Umělá inteligence by ale poté nebyla dostatečně obecná, aby mohla řešit jakékoli problémy.
Aby bylo možné zobecnit typ kódu, který AlphaCode může generovat, přistoupil tým DeepMind k tomu trochu jako k jazykovému problému. Popis výzvy je do jisté míry vyjádřením toho, co by měl algoritmus udělat. Kód je zatímco vyjádřením téhož, jen v jiném jazyce. AlphaCode byl tedy navržen tak, aby měl dvě části. Jednu, která popis přijímala a převáděla na vnitřní reprezentaci, a druhou, která vnitřní reprezentaci používala k vytváření funkčního kódu.