Uczenie maszynowe sprawia, że programowanie staje się szybsze, bezpieczniejsze i bardziej niezawodne
Każdego roku usuwanie błędów i usterek w oprogramowaniu pochłania wiele miliardów euro. Wiele z tych problemów jest rezultatem błędów w kodzie. Potrzebujemy bardziej niezawodnego, wydajniejszego i bezpieczniejszego oprogramowania. Największym problemem pozostaje jednak fakt, że tworzenie tego rodzaju oprogramowania jest niezwykle trudne przy wykorzystaniu tradycyjnych technik, a niektórzy uważają nawet, że jest to niemożliwe. Należą do nich także uczestnicy finansowanego ze środków Unii Europejskiej projektu BIGCODE, którzy łącząc języki programowania i uczenie maszynowe budują nowe rodzaje silników programistycznych, pozwalających na uzyskiwanie statystycznie prawdopodobnych rozwiązań problemów, które bez nich byłyby niemożliwe do rozwiązania. „W ramach projektu powstały nowe rodzaje modeli uczenia maszynowego, które mogą być trenowane na kodzie komputerowym”, wyjaśnia Martin Vechev, koordynator projektu BIGCODE oraz dyrektor Laboratorium Bezpiecznych, Niezawodnych i Inteligentnych Systemów (SRI) Szwajcarskiego Federalnego Instytutu Technologii w Zurychu (ETH Zurich). „Celem jest wykorzystanie tych modeli do rozwiązywania różnych istotnych problemów, takich jak między innymi automatyczne generowanie nowego kodu, wykrywanie problemów z bezpieczeństwem w istniejącym kodzie i tłumaczenie między językami programowania”.
Nowe rodzaje modeli uczenia maszynowego
Kluczowym rezultatem projektu, który został zrealizowany dzięki wsparciu Europejskiej Rady ds. Badań Naukowych, było opracowanie nowych typów fundamentalnych modeli uczenia maszynowego. „Czynnikiem, który decyduje o wyjątkowości naszych modeli, jest fakt, że mogą być trenowane na kodzie i skutecznie stawiać czoła problemom, które do tej pory były niemożliwe do rozwiązania”, wyjaśnia Vechev. „Co więcej, nasze modele są interpretowalne – dzięki temu podejmowane przez nie decyzje są zrozumiałe dla ludzi i mogą być przez nich kontrolowane”. Podczas opracowywania modeli uczenia maszynowego badacze zdali sobie sprawę, że programy komputerowe charakteryzują się złożoną i formalną semantyką. W celu ustalenia tej semantyki, skuteczne trenowanie modelu na podstawie kodu musi obejmować metody symboliczne. Jak twierdzi Vechev, wykracza to daleko poza metody używane do trenowania modeli opartych na języku naturalnym lub obrazach. „W rezultacie osiągnięcia naszego projektu mają wartość koncepcyjną wykraczającą poza kod – mogą zostać wykorzystane w syntezie programowej w przypadku występowania zakłóceń, przetwarzaniu języka naturalnego i odkrywaniu nowych rodzajów gramatyk formalnych”, dodaje Vechev. „W pewnym sensie praca z kodem okazała się niezwykle owocna z punktu widzenia nowych metod, które można łatwo uogólnić”.
Bardziej niezawodne i bezpieczniejsze oprogramowanie
Modele opracowane w ramach projektu BIGCODE, które sam Vechev określa mianem „SI dla kodu” są już teraz wykorzystywane przez setki tysięcy programistów, którzy tworzą dzięki niemu bardziej niezawodne i bezpieczne oprogramowanie. W oparciu o prace zrealizowane w ramach projektu, badacze założyli również start-up DeepCode, który już teraz odnosi sukcesy. Start-up został przejęty przez zajmującą się cyberbezpieczeństwem firmę Snyk, która zintegrowała rozwiązanie DeepCode w wielu swoich produktach i usługach. „Projekt BIGCODE pozwolił nam udowodnić, że możliwe jest nie tylko poszerzanie naszej wiedzy i pomoc w kształtowaniu nowych obszarów badań, ale także wykorzystanie rezultatów prac do tworzenia nowych i odnoszących sukcesy firm zajmujących się zaawansowanymi technologiami, które mają ogromną wartość gospodarczą”, podsumowuje Vechev.
Słowa kluczowe
BIGCODE, uczenie maszynowe, programowanie, języki programowania, kod, oprogramowanie, komputer, programy komputerowe, język naturalny, SI, zaawansowane technologie