Abstract-Algoritm klassificering är att automatiskt identifiera klasser av ett program baserat på algoritm(er) och / eller datastruktur(er) som genomförs i programmet. Det kan vara användbart för olika uppgifter, såsom kod återanvändning, kod stöld upptäckt, och malware upptäckt. Kodlika mått, på grundval av egenskaper som utvunnits ur syntax och semantik, har använts för att klassificera program. Sådana funktioner kräver emellertid ofta manuella urvalsinsatser och är specifika för enskilda programmeringsspråk, vilket begränsar klassificeringen till program på samma språk. För att känna igen likheter och skillnader mellan algoritmer implementeras i olika språk, beskriver detta dokument en ram av Bilaterala Neural Networks (Bi-NN) som bygger ett neuralt nätverk ovanpå två underliggande undernätverk, som var och en kodar syntax och semantik av kod på ett språk. En hel Bi-NN kan tränas med bilaterala program som implementerar samma algoritmer och/eller datastrukturer på olika språk och sedan tillämpas för att känna igen algoritmklasser över språk. Vi har påskyndat ramverket med flera typer av token-, träd- och grafbaserade neurala nätverk som kodar och lär sig olika typer av information i kod. Vi har tillämpat instanserna av ramverket på en kod corpus som samlats in från GitHub som innehåller tusentals Java- och C++-program som implementerar 50 olika algoritmer och datastrukturer. Våra utvärderingsresultat visar att användningen av Bi-NN faktiskt producerar lovande algoritmklassificeringsresultat både inom ett språk och över språk, och kodning av beroenden från kod till underliggande neurala nätverk bidrar till att förbättra algoritmklassificeringens noggrannhet ytterligare. I synnerhet våra specialbyggda beroende träd med trädbaserade konvolutionella neurala nätverk uppnå den högsta klassificeringen noggrannhet bland de olika instanserna av ramverket som vi har utvärderat. Vår studie pekar på en möjlig framtida forskningsriktning för att skräddarsy bilaterala och multilaterala neurala nätverk som kodar mer relevanta semantik för kodinlärning, gruvdrift och analysuppgifter.
Ett annat exempel är att bilaterala beroende trädbaserade CNN (DTBCNN) REF används för att klassificera program över olika programmeringsspråk.
Bilateral Dependency Neural Networks for Cross-Language Algorithm Classification
{'venue': '2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER)', 'journal': '2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER)', 'mag_field_of_study': ['Computer Science']}