AlphaCode – AI programuje już jak przeciętny developer
Dyskusje o tym, czy możliwe jest, że w przyszłości pracę developerów i testerów będzie wykonywać sztuczna inteligencja, zazwyczaj sprowadzają się do wniosku, że AI być może poradzi sobie z kodowaniem, ale nie z rozwiązywaniem problemów. Kreatywność i umiejętność krytycznego myślenia często wskazywane są jako cechy niedostępne dla maszynowego developera. Innego zdania są jednak twórcy sztucznej inteligencji DeepMind.
DeepMind to jedna z najbardziej zaawansowanych AI, jaką aktualnie dysponujemy. To właśnie należąca do Alphabet sieć neuronowa po raz pierwszy pokonała profesjonalnego gracza w Go oraz odnosi duże sukcesy podczas rozgrywek przeciwko ludziom w złożoną strategię czasu rzeczywistego Starcraft II. DeepMind jest oczywiście sprawnie rozwijane i szybko wzbogaca się o nowe wariacje wyspecjalizowane w konkretnych zadaniach.
AlphaCode – lepsze niż developerzy?
Jedną z takich wariacji jest AlphaCode, czyli sztuczna inteligencja wyspecjalizowana w pisaniu kodu. Oczywiście nie są to pierwsze eksperymenty z maszynowym kodowaniem. Ba, z owoców części tych eksperymentów korzystamy już na co dzień – dość powiedzieć, że inteligentne systemy autouzupełniania kodu i autosugestii choćby w takich środowiskach jak Visual Studio napędzane są uczeniem maszynowym.
Ale w przypadku AlphaCode mamy do czynienia z czymś więcej. Według opublikowanego właśnie artykułu podsumowującego dotychczasowy rozwój silnika, może on nie tylko wykonywać proste prace związane z generowaniem kodu, ale także radzić sobie ze znacznie bardziej złożonymi zadaniami, a nawet wnioskowaniem i rozwiązywaniem problemów. Na podstawie przeprowadzonych badań zespół rozwijający AlphaCode jest zdania, że radzi sobie on z programowaniem na poziomie przeciętnego developera:
AI było zatem lepsze niż niemal połowa ludzkich developerów. Jak tego dokonano? Naukowcy zauważyli, że umiejętności w zakresie głębszego wnioskowania rosną, jeśli usprawnień dokona się w trzech obszarach: zapewnienie szerokiego zbioru danych rozwijającego specjalizację w programowaniu kompetytywnym (w przypadku AlphaCode było to 715 GB kodu w językach C++, C#, Go, Java, JavaScript i TypeScript, Lua, Python, PHP, Ruby, Rust i Scala), zbudowanie architektury umożliwiającej efektywne próbkowanie i trenowanie na modelach ML typu transformer, a w końcu próbkowanie modeli na dużą skalę w celu eksploracji przestrzeni wyszukiwania.
Aby zrozumieć gigantyczny potencjał AlphaCode, warto zapoznać się z przykładowym zadaniem, w którym AI poradziło sobie lepiej niż blisko połowa ludzkich konkurentów. Wyczerpujące omówienie sposobu, w jaki AlphaCode rozwiązało problem, znaleźć można na blogu DeepMind.
Sam założyciel Codeforces, Mike Mirzayanov przyznaje, że mimo początkowego sceptycyzmu, jest pod ogromnym wrażeniem AlphaCode, zwłaszcza że zadania wymagały nie tylko implementacji jakiegoś algorytmu, lecz przede wszystkim jego wymyślenia, z czym AI poradziło sobie całkiem nieźle.
Konsekwencje i ryzyko
Czy zatem ludzcy programiści powinni już pakować manatki? Oczywiście, że (na razie) nie, choć nigdy nie mieli tak silnej maszynowej konkurencji. Zwracają na to uwagę także twórcy AlphaCode, którzy zauważają, że pisanie kodu jest tylko częścią pracy developera. Z drugiej zaś strony stwierdzają, że dotychczasowe eksperymenty (jak choćby wspomniane ML w IDE) zmieniły w jakiś sposób to, jak programujemy. Tak zaawansowany silnik jak AlphaCode ma więc szansę zmienić jeszcze więcej.
AlphaCode generuje także ryzyko w kwestii właściwej dla każdej zaawansowanej sieci neuronowej. Autorzy pracy nazywają je zbiorczo „ryzykiem zaawansowanej AI”. Na dłuższą metę sztuczna inteligencja wyspecjalizowana w pisaniu kodu może prowadzić do tego, że system będzie rekursywnie pisać sam siebie i sam się doskonalić, stanowiąc coraz bardziej złożoną i zaawansowaną strukturę, która jednocześnie może się okazać coraz mniej zrozumiała dla człowieka.