211service.com
Nowa sieć neuronowa może pomóc komputerom w samodzielnym kodowaniu
Pani Tech
Programowanie komputerów nigdy nie było łatwe. Pierwsi programiści pisali programy ręcznie, bazgrali symbole na papierze milimetrowym, zanim przekształcili je w duże stosy kart dziurkowanych, które mogły zostać przetworzone przez komputer. Jeden znak nie na miejscu i być może trzeba będzie wszystko przerobić.
Obecnie programiści używają szeregu potężnych narzędzi, które automatyzują większość pracy, od wyłapywania błędów podczas pisania po testowanie kodu przed jego wdrożeniem. Ale pod innymi względami niewiele się zmieniło. Jeden głupi błąd może spowodować awarię całego oprogramowania. A ponieważ systemy stają się coraz bardziej złożone, śledzenie tych błędów staje się coraz trudniejsze. Czasami naprawienie pojedynczego błędu może zająć zespołom programistów kilka dni, mówi Justin Gottschlich, dyrektor grupy badawczej ds. programowania maszynowego w firmie Intel.
Dlatego niektórzy uważają, że powinniśmy po prostu sprawić, by maszyny same się programowały. Zautomatyzowane generowanie kodu jest od wielu lat gorącym tematem badawczym. Microsoft wbudowuje podstawowe generowanie kodu do swoich powszechnie używanych narzędzi do tworzenia oprogramowania, Facebook stworzył system o nazwie Zapach który automatycznie uzupełnia małe programy, a DeepMind opracował sieć neuronową, która może wymyślić wydajniejsze wersje prostych algorytmów niż te wymyślone przez ludzi. Nawet model językowy OpenAI GPT-3 może produkować proste fragmenty kodu , takich jak układy stron internetowych, z monitów w języku naturalnym.
Gottschlich i jego koledzy nazywają to programowanie maszyn . Współpracując z zespołem z Intel, MIT i Georgia Institute of Technology w Atlancie, opracował system o nazwie Podobieństwo kodu wnioskowanego przez maszynę lub MISIM, które potrafią wyodrębnić znaczenie fragmentu kodu — co kod nakazuje komputerowi — w podobny sposób, w jaki systemy przetwarzania języka naturalnego (NLP) potrafią odczytać akapit napisany w języku angielskim.
MISIM może następnie zasugerować inne sposoby napisania kodu, oferując poprawki i sposoby na przyspieszenie lub zwiększenie wydajności. Zdolność narzędzia do zrozumienia, co program próbuje zrobić, pozwala mu zidentyfikować inne programy, które robią podobne rzeczy. Teoretycznie takie podejście może być stosowane przez maszyny, które napisały własne oprogramowanie, czerpiąc z mozaiki wcześniej istniejących programów przy minimalnym nadzorze ludzkim lub wkładzie.
MISIM działa, porównując fragmenty kodu z milionami innych programów, które już widział, pobranymi z dużej liczby repozytoriów online. Najpierw tłumaczy kod na formę, która przechwytuje to, co robi, ale ignoruje sposób, w jaki jest napisany, ponieważ dwa programy napisane na bardzo różne sposoby czasami robią to samo. MISIM następnie wykorzystuje sieć neuronową, aby znaleźć inny kod, który ma podobne znaczenie. W preprint , Gottschlich i jego koledzy donoszą, że MISIM jest 40 razy dokładniejszy niż wcześniejsze systemy, które próbują to zrobić, w tym Aroma.
MISIM to ekscytujący krok naprzód, mówi Veselin Raychev, CTO w szwajcarskiej firmie DeepCode, której narzędzia do łapania błędów — jedne z najbardziej zaawansowanych na rynku — wykorzystują sieci neuronowe przeszkolone w milionach programów, aby sugerować koderom ulepszenia podczas pisania. .
Ale uczenie maszynowe nadal nie jest dobre w przewidywaniu, czy coś jest błędem, mówi Raychev. Dzieje się tak dlatego, że trudno jest nauczyć sieć neuronową, co jest błędem, a co nie, dopóki nie zostanie to oznaczone przez człowieka jako takie.
Jak mówi, przeprowadza się wiele interesujących badań dotyczących głębokich sieci neuronowych i naprawiania błędów, ale praktycznie jeszcze ich tam nie ma, z bardzo dużym marginesem. Zazwyczaj narzędzia AI do wyłapywania błędów generują wiele fałszywych alarmów, mówi.
MISIM radzi sobie z tym problemem, wykorzystując uczenie maszynowe do wykrywania podobieństw między programami, zamiast bezpośrednio identyfikować błędy. Porównując nowy program z istniejącym oprogramowaniem, o którym wiadomo, że jest poprawny, może to ostrzec programistę o ważnych różnicach, które mogą być błędami.
Firma Intel planuje używać tego narzędzia jako systemu rekomendacji kodu dla programistów we własnym zakresie, sugerując alternatywne sposoby pisania kodu, które są szybsze lub bardziej wydajne. Ale ponieważ MISIM nie jest powiązany ze składnią konkretnego programu, potencjalnie może zrobić znacznie więcej. Na przykład może służyć do tłumaczenia kodu napisanego w starym języku, takim jak COBOL, na bardziej nowoczesny język, taki jak Python. Ma to znaczenie, ponieważ wiele instytucji, m.in Rząd Stanów Zjednoczonych , nadal polegają na oprogramowaniu napisanym w językach, które niewielu programistów potrafi obsługiwać lub aktualizować.
Ostatecznie Gottschlich uważa, że pomysł ten można zastosować do języka naturalnego. W połączeniu z NLP, umiejętność pracy ze znaczeniem kodu niezależnie od jego reprezentacji tekstowej może pewnego dnia pozwolić ludziom pisać oprogramowanie, po prostu opisując słowami, co chcą robić.
Tworzenie małych aplikacji na telefon lub tego typu rzeczy, które pomogą Ci w codziennym życiu — myślę, że nie są one zbyt odległe, mówi Gottschlich. Chciałbym, aby 8 miliardów ludzi tworzyło oprogramowanie w sposób, który jest dla nich najbardziej naturalny.