Ulepszanie sztucznej inteligencji w rozwiązywaniu problemów w konkursach kodowania

Ulepszanie sztucznej inteligencji w rozwiązywaniu problemów w konkursach kodowania

Wywiad Zdolności komercyjnych modeli wielkojęzykowych w rozwiązywaniu konkurencyjnych problemów programistycznych można znacznie zwiększyć poprzez ostrożne kierowanie procesami za pomocą sprytnej, szybkiej inżynierii.

Aby to zademonstrować, Codium AI z siedzibą w Izraelu zbudowało AlphaCodium i wydany oprogramowanie w GitHub w tym miesiącu. AlphaCodium samo w sobie nie jest dużym modelem językowym. Zamiast tego jest to metoda, która poprawia możliwości rozwiązywania problemów za pomocą generatywnych narzędzi AI, takich jak GPT-4, poprzez wykorzystanie tego, co dyrektor generalny Itamar Friedman nazywa „inżynierią przepływu”.

Najpierw do podstawowego modelu dużego języka zadawane jest pytanie programistyczne, a następnie wymagane jest opisanie i podsumowanie problemu. Informacje te następnie wskazują, w jaki sposób należy rozpocząć rozwiązywanie problemu. AlphaCodium definiuje rzeczy, na przykład jakie powinny być wejścia i wyjścia, gdy wymyślamy rozwiązanie. Wszystko to jest określone w języku naturalnym.

Następnie model zaczyna generować kod zgodny z właśnie opisanymi specyfikacjami. Konkursy programistyczne, w których uczestnicy proszeni są o kodowanie zgodnie ze specyfikacją, zazwyczaj obejmują testy pokazujące, co skrypt powinien wyświetlić dla danych wejściowych. AlphaCodium generuje więcej takich przypadków testowych, a następnie uruchamia możliwe rozwiązania, aby sprawdzić, czy kod działa zgodnie z oczekiwaniami.

Jeśli nie uda mu się dopasować żadnego z wyjść zdefiniowanych w żadnym z testów, model generuje różne rozwiązania, dopóki nie przejdą wszystkich testów lub nie powiedzie się. Błędy mogą pojawić się, gdy kod się nie kompiluje lub jest po prostu błędny.

Na poniższym schemacie możesz zobaczyć różne etapy procesu inżynierii przepływu. Jest on w dużej mierze podzielony na fazę wstępnego przetwarzania, w której system analizuje problem w języku naturalnym, oraz etap iteracji kodu, w którym sprawdza możliwe rozwiązania na podstawie testów publicznych i generowanych przez sztuczną inteligencję.

alfakodium

Wszystkie ogólne kroki, które prowadzą AlphaCodium do generowania kodu w celu rozwiązania problemów

„Nie bierzemy pod uwagę problemu, nie podchodzimy do modelu i nie mówimy mu: «Hej, proszę, wygeneruj ostateczne rozwiązanie»” – powiedział Friedman Rejestr. „Prosimy modelkę, aby ponownie zdefiniowała ten problem w punktach”. Uproszczenie go i podzielenie rzeczy na kawałki ułatwia modelowi późniejsze generowanie kodu dla różnych części algorytmu.

Zasadniczo inżynieria przepływów to procedura, która kieruje procesem rozwiązywania problemów w modelu, dzieląc go na dobrze zdefiniowane etapy. Powiedziano nam, że nakłonienie go do „podzielenia wygenerowanego kodu na małe podfunkcje o znaczących nazwach i funkcjonalnościach” prowadzi do mniejszej liczby błędów i ułatwia testowanie i naprawianie kodu.

„Zasadniczo 95 procent czasu spędziliśmy na inżynierii przepływu, a tylko 5 procent na szybkiej inżynierii i nie zmienialiśmy podpowiedzi dla każdego [kroku]” – dodał Friedman.

Inżynierowie z Codium przetestowali wydajność swojego modelu na setkach problemów wykorzystanych w częściach weryfikacyjnych i testowych zbioru danych CodeForces skompilowanego przez Google DeepMind dwa lata temu. Twierdzą, że AlphaCodium lepiej radziło sobie z rozwiązywaniem problemów z kodowaniem niż modele AlphaCode i AlphaCode2 firmy Google DeepMind.

W wynikach zgłoszonych w pliku arXiv papier [PDF] Firma AlphaCodium była w stanie poprawnie odpowiedzieć na 44 procent pytań w porównaniu do 24 procent AlphaCode, generując jednocześnie tylko pięć rozwiązań w porównaniu z dziesięcioma wybranymi przez AlphaCode rozwiązaniami dla 107 problemów z walidacją. Co ciekawe, różnica zmniejszyła się, jeśli chodzi o 165 problemów testowych, przy czym AlphaCodium rozwiązało 29 procent w porównaniu do 28 procent AlphaCode.

AlphaCode wybiera dziesięć najbardziej obiecujących rozwiązań spośród dziesiątek tysięcy lub setek tysięcy generowanych możliwych skryptów, co sprawia, że ​​jego uruchomienie wymaga dużej mocy obliczeniowej.

„Skoncentrowaliśmy się znacznie bardziej na całym przebiegu testów” – powiedział Friedman. „W przypadku [Google] wykonali ogromną pracę nad pokoleniem. Próbują wygenerować setki innych opcji, a my generujemy bardzo niewiele rozwiązań, ale testujemy je naprawdę dobrze, aby pomóc w ulepszaniu kodu.

AlphaCodium jest odrobinę lepszy od najnowszego modelu AlphaCode2 firmy Google DeepMind i jest 10,000 XNUMX razy wydajniejszy od swojego poprzednika AlphaCode – dodał.

alfakodium_2

Porównanie AlphaCodium z innymi najnowocześniejszymi modelami pod względem dokładności i wydajności

Friedman wyraził pewność, że wydajność AlphaCodium nie jest spowodowana wyciekiem danych, gdyż podstawowy model został przeszkolony i przetestowany pod kątem tych samych problemów. Wersja GPT-4, na której opiera się AlphaCodium, była szkolona na tekstach pobranych z Internetu do września 2021 r., natomiast problemy, na których testowała swój system, zostały wzięte ze wspomnianego zbioru danych CodeForces, który został opublikowany znacznie później.

Lepsze porównanie typu „jabłko do jabłka”, które ocenia proces inżynierii przepływu, uwzględnia jednak zdolność GPT-4 do rozwiązywania tych samych problemów z zastosowaniem AlphaCodium i bez niego. Zwykły stary GPT-4 mógł poprawnie odpowiedzieć jedynie na 19 i 12 procent problemów w zestawach walidacyjnych i testowych, w porównaniu do wariantu zasilanego AlphaCodium – 44 i 29 procent.

Krótko mówiąc, wydaje się, że wdrożenie ostrożnego potoku generującego dodatkowe dane wskazujące sposób generowania kodu i usprawniające proces testowania może być skuteczniejsze niż próba uczenia od zera dużego modelu językowego.

Codium wypuściło niedawno nowe narzędzie wspierające programistów Pythona, którzy mogą teraz wywołać AlphaCodium, aby bezpośrednio rozwiązać problem z kodowaniem w swoim IDE. Możesz się nim bawić Tutaj. ®

Znak czasu:

Więcej z Rejestr