Platform pembelajaran mesin Awan Alibaba PAI bekerjasama dengan pasukan Profesor Gao Ming dari East China Normal University untuk menerbitkan model Transformer SASA yang menyedari struktur di SIGIR2022 Ini ialah kaedah pengoptimuman model Transformer untuk jujukan kod panjang, khusus untuk menambah baik senario kod panjang dan prestasi. Memandangkan kerumitan modul perhatian kendiri meningkat secara eksponen dengan panjang jujukan, kebanyakan model bahasa pralatihan (PPLM) berasaskan pengaturcaraan menggunakan pemotongan jujukan untuk memproses jujukan kod. Kaedah SASA mengurangkan pengiraan perhatian kendiri dan menggabungkan ciri-ciri struktur kod, dengan itu meningkatkan prestasi tugas urutan panjang dan mengurangkan memori dan kerumitan pengiraan.
Kertas: Tingting Liu, Chengyu Wang, Cen Chen, Ming Gao, dan Aoying Zhou Memahami Bahasa Pengaturcaraan Panjang dengan SIGIR 2022
Rajah berikut menunjukkan rangka kerja keseluruhan SASA:
Antaranya, SASA terutamanya terdiri daripada dua peringkat: peringkat prapemprosesan dan peringkat latihan Sparse Transformer. Dalam peringkat prapemprosesan, matriks interaksi antara dua token diperolehi, satu ialah matriks frekuensi top-k, dan satu lagi ialah matriks corak AST. Matriks kekerapan Top-k menggunakan model bahasa pra-latihan kod untuk mempelajari kekerapan interaksi perhatian antara token pada korpus CodeSearchNet Matriks corak AST ialah Pokok Sintaks Abstrak (AST) yang menghuraikan kod tersebut pada hubungan sambungan pepohon sintaks maklumat interaktif antara token. Fasa latihan Sparse Transformer menggunakan Transformer Encoder sebagai rangka kerja asas, menggantikan perhatian kendiri penuh dengan perhatian kendiri jarang sedar struktur, dan melakukan pengiraan perhatian antara pasangan token yang mematuhi corak tertentu, dengan itu mengurangkan kerumitan pengiraan.
Perhatian jarang SASA termasuk empat modul berikut:
Untuk menyesuaikan diri dengan ciri pengkomputeran selari perkakasan moden, kami membahagikan jujukan kepada beberapa blok dan bukannya mengira dalam unit token Setiap blok pertanyaan berkaitan dengan
blok tingkap gelongsor dan
blok global dan
atas-k dan Blok AST kira perhatian, dan kerumitan pengiraan keseluruhan ialah
b ialah saiz blok.
Setiap corak perhatian jarang sepadan dengan matriks perhatian dengan mengambil perhatian tetingkap gelongsor sebagai contoh, pengiraan matriks perhatian ialah:
Kod pseudo ASA. :
Kami menggunakan empat set data tugasan yang disediakan oleh CodeXGLUE[1] untuk penilaian, iaitu pengesanan klon kod, pengesanan kecacatan, carian kod dan ringkasan kod. Kami mengekstrak data yang panjang jujukannya melebihi 512 untuk membentuk set data jujukan yang panjang Keputusan eksperimen adalah seperti berikut:
Daripada keputusan eksperimen, ia dapat dilihat. bahawa prestasi SASA pada tiga set data adalah Prestasi dengan ketara melebihi semua Garis Dasar. Antaranya, Roberta-base[2], CodeBERT[3], dan GraphCodeBERT[4] menggunakan pemotongan untuk memproses jujukan panjang, yang akan kehilangan sebahagian daripada maklumat konteks. Longformer[5] dan BigBird[6] ialah kaedah yang digunakan untuk memproses jujukan panjang dalam pemprosesan bahasa semula jadi, tetapi mereka tidak menganggap ciri-ciri struktur kod, dan pemindahan terus kepada tugas kod adalah tidak berkesan.
Untuk mengesahkan kesan top-k sparse attention dan AST-aware sparse attention modul, kami menjalankan eksperimen ablasi pada set data BigCloneBench dan Pengesanan Kecacatan Hasilnya adalah seperti berikut:
Modul perhatian yang jarang bukan sahaja meningkatkan prestasi tugasan kod yang panjang, tetapi juga mengurangkan penggunaan memori video dengan ketara Di bawah peranti yang sama, SASA boleh menetapkan saiz kelompok yang lebih besar, manakala diri penuh -model perhatian menghadapi masalah ingatan, penggunaan memori video khusus adalah seperti berikut:
SASA, sebagai modul perhatian yang jarang, boleh dipindahkan ke model pra-latihan yang lain berdasarkan Transformer untuk memproses tugas pemprosesan bahasa semula jadi urutan panjang akan disepadukan ke dalam rangka kerja sumber terbuka EasyNLP (https://github.com/alibaba/EasyNLP) dan menyumbang kepada komuniti sumber terbuka.
Pautan kertas:
https://arxiv.org/abs/2205.13730
Atas ialah kandungan terperinci Kaedah pengoptimuman model pengubah untuk urutan kod panjang untuk meningkatkan prestasi dalam senario kod panjang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!