IBM Membuka CodeNet untuk Sistem Pembelajaran Mesin yang Menterjemah dan Mengesahkan Kod

IBM telah melancarkan inisiatif CodeNetnya, yang bertujuan untuk menyediakan penyelidik dengan set data yang membolehkan mereka bereksperimen dengan penggunaan teknik pembelajaran mesin untuk mencipta penterjemah bahasa pengaturcaraan, penjana kod dan penganalisis. CodeNet termasuk koleksi 14 juta contoh kod yang menyelesaikan 4053 masalah pengaturcaraan biasa. Secara keseluruhan, koleksi itu mengandungi kira-kira 500 juta baris kod dan merangkumi 55 bahasa pengaturcaraan, kedua-dua bahasa moden seperti C++, Java, Python dan Go, dan bahasa warisan termasuk COBOL, Pascal dan FORTRAN. Perkembangan projek itu diedarkan di bawah lesen Apache 2.0, dan set data dirancang untuk diedarkan dalam bentuk domain awam.

Contoh-contohnya diberi penjelasan dan melaksanakan algoritma yang sama dalam bahasa pengaturcaraan yang berbeza. Set yang dicadangkan itu dijangka membantu melatih sistem pembelajaran mesin dan membangunkan inovasi dalam bidang terjemahan dan penghuraian kod mesin, sama seperti bagaimana pangkalan data imej beranotasi ImageNet membantu pembangunan pengecaman corak dan sistem penglihatan komputer. Pelbagai pertandingan pengaturcaraan disebut sebagai salah satu sumber utama pembentukan koleksi.

Tidak seperti penterjemah tradisional, yang dilaksanakan berdasarkan peraturan terjemahan, sistem pembelajaran mesin boleh menangkap dan mengambil kira konteks penggunaan kod. Apabila menukar daripada satu bahasa pengaturcaraan kepada yang lain, konteks adalah sama pentingnya dengan ketika menterjemah daripada satu bahasa manusia kepada bahasa lain. Kekurangan pertimbangan konteks inilah yang menghalang kod daripada ditukar daripada bahasa warisan seperti COBOL.

Mempunyai pangkalan data yang besar bagi pelaksanaan algoritma dalam bahasa yang berbeza akan membantu mewujudkan sistem pembelajaran mesin universal yang, bukannya terjemahan langsung antara bahasa tertentu, memanipulasi perwakilan kod yang lebih abstrak, bebas daripada bahasa pengaturcaraan tertentu. Sistem sedemikian boleh digunakan sebagai penterjemah, menterjemah kod yang dihantar dalam mana-mana bahasa yang disokong ke dalam perwakilan abstrak dalamannya, dari mana kod kemudiannya boleh dijana dalam berbilang bahasa.

Sistem ini juga akan dapat melakukan transformasi dua arah. Contohnya, bank dan agensi kerajaan terus menggunakan projek dalam bahasa COBOL yang sudah lapuk. Penterjemah berasaskan pembelajaran mesin akan dapat menukar kod COBOL kepada perwakilan Java, dan, jika perlu, menterjemah kembali serpihan Java ke dalam kod COBOL.

Sebagai tambahan kepada terjemahan antara bahasa, bidang aplikasi CodeNet seperti penciptaan sistem carian kod pintar dan automasi pengesanan klon, serta pembangunan pengoptimum dan sistem pembetulan kod automatik disebut. Khususnya, contoh yang dibentangkan dalam CodeNet dilengkapi dengan metadata yang menerangkan keputusan ujian prestasi, saiz program yang terhasil, penggunaan memori dan keadaan, yang membolehkan kita membezakan kod yang betul daripada kod dengan ralat (untuk membezakan kod yang betul daripada kod yang salah, koleksi khususnya termasuk contoh dengan ralat, bahagiannya ialah 29.5%). Sistem pembelajaran mesin boleh mengambil kira metadata ini untuk menjana kod yang paling optimum atau untuk mengenal pasti regresi dalam kod yang dianalisis (sistem boleh memahami bahawa algoritma dalam kod yang diserahkan tidak dilaksanakan secara optimum atau mengandungi ralat).

Sumber: opennet.ru

Tambah komen