Disember ini, apabila OpenAI's ChatGPT mendapat momentum, AlphaCode, yang pernah mengatasi separuh daripada pengaturcara, berada di muka depan Sains!
Pautan kertas: https://www.science.org/doi/10.1126/science.abq1158
Bercakap tentang AlphaCode, semua orang mesti biasa dengannya.
Seawal Februari tahun ini, ia secara senyap-senyap mengambil bahagian dalam 10 pertandingan pengaturcaraan di Codeforces yang terkenal dan mengalahkan separuh daripada pengekod manusia dalam satu gerakan.
Separuh daripada pengaturcara telah dikalahkan
Kita semua tahu bahawa ujian sedemikian sangat popular di kalangan pengaturcara - pertandingan pengaturcaraan.
Dalam pertandingan, ujian utama ialah keupayaan pengaturcara untuk berfikir secara kritis melalui pengalaman dan mencipta penyelesaian kepada masalah yang tidak dijangka.
Ini merangkumi kunci kepada kecerdasan manusia, dan model pembelajaran mesin selalunya sukar untuk meniru jenis kecerdasan manusia ini.
Tetapi saintis DeepMind melanggar peraturan ini.
YujiA Li et al membangunkan AlphaCode menggunakan pembelajaran diselia sendiri dan seni bina penukar pengekod-penyahkod.
Kerja pembangunan AlphaCode telah disiapkan semasa berada di rumah
Walaupun AlphaCode juga berdasarkan seni bina codec Transformer standard, DeepMind telah meningkatkannya kepada "tahap epik" -
Ia menggunakan model bahasa berasaskan Transformer, menjana kod pada skala yang tidak pernah berlaku sebelum ini, dan kemudian menapis subset kecil program yang tersedia dengan bijak.
Langkah-langkah khusus ialah:
1) Berbilang minta perhatian: biarkan setiap blok perhatian berkongsi pengepala kunci dan nilai, dan Pada pada masa yang sama, digabungkan dengan model penyahkod pengekod, kelajuan pensampelan AlphaCode meningkat lebih daripada 10 kali ganda.
2) Pemodelan Bahasa Bertopeng (MLM): Dengan menambahkan kerugian MLM pada pengekod, kadar penyelesaian model dipertingkatkan.
3) Tempering: Jadikan pengagihan latihan lebih tajam, dengan itu menghalang kesan regularization daripada overfitting.
4) Pelaziman dan ramalan nilai: Sediakan isyarat latihan tambahan dengan membezakan penyerahan soalan yang betul dan salah dalam set data CodeContests.
5) Penjanaan Pembelajaran Luar Strategi (EMAS): Biarkan model menjana penyelesaian yang betul untuk setiap masalah dengan memfokuskan latihan pada penyelesaian yang paling mungkin untuk setiap masalah .
Nah, semua orang tahu hasilnya.
Dengan skor Elo 1238, AlphaCode menduduki tempat teratas 54.3% dalam 10 permainan ini. Melihat pada 6 bulan sebelumnya, keputusan ini mencapai 28% teratas.
Anda mesti tahu bahawa untuk mencapai ranking ini, AlphaCode mesti "melepasi lima peringkat dan mengalahkan enam jeneral", menyelesaikan masalah yang mengintegrasikan pemikiran kritis , logik dan algoritma , pelbagai masalah baharu yang menggabungkan pengekodan dan pemahaman bahasa semula jadi.
Berdasarkan keputusan, AlphaCode bukan sahaja menyelesaikan 29.6% masalah pengaturcaraan dalam set data CodeContests, tetapi 66% daripadanya telah diselesaikan dalam penyerahan pertama. (Jumlah penyerahan adalah terhad kepada 10 kali)
Sebagai perbandingan, kadar penyelesaian model Transformer tradisional agak rendah, hanya satu digit.
Malah pengasas Codeforces Mirzayanov sangat terkejut dengan keputusan ini.
Lagipun, pertandingan pengaturcaraan menguji keupayaan untuk mencipta algoritma, yang sentiasa menjadi kelemahan AI dan kekuatan manusia.
Saya pasti boleh mengatakan bahawa hasil daripada AlphaCode melebihi jangkaan saya. Saya ragu-ragu pada mulanya kerana walaupun dalam masalah persaingan yang mudah seseorang bukan sahaja perlu melaksanakan algoritma tetapi juga menciptanya (yang merupakan bahagian yang paling sukar). AlphaCode telah menjadikan dirinya saingan yang hebat kepada ramai manusia. Saya tidak sabar untuk melihat apa yang akan berlaku pada masa depan!
- Mike Mirzayanov, pengasas Codeforces
Jadi, bolehkah AlphaCode mencuri kerja pengaturcara?
Sudah tentu tidak.
AlphaCode hanya boleh menyelesaikan tugas pengaturcaraan mudah Jika tugasan menjadi lebih kompleks dan masalah menjadi lebih "tidak dapat dijangka", AlphaCode, yang hanya menterjemahkan arahan kepada kod, tidak akan berdaya.
Lagipun, dari perspektif tertentu, markah 1238 adalah bersamaan dengan tahap pelajar sekolah menengah yang baru belajar berprogram. Pada tahap ini, ia bukan ancaman kepada pakar pengaturcaraan sebenar.
Tetapi tidak syak lagi bahawa pembangunan platform pengekodan jenis ini akan memberi impak yang besar terhadap produktiviti pengaturcara.
Malah keseluruhan budaya pengaturcaraan mungkin diubah: mungkin, pada masa hadapan, manusia hanya akan bertanggungjawab untuk merumuskan masalah, dan tugas menjana dan melaksanakan kod boleh diserahkan kepada mesin pembelajaran.
Kami tahu bahawa walaupun pembelajaran mesin telah mencapai kemajuan besar dalam menjana dan memahami teks, kebanyakan AI masih terhad kepada masalah matematik dan pengaturcaraan yang mudah.
Apa yang mereka akan lakukan ialah mendapatkan semula dan menyalin penyelesaian sedia ada (saya percaya sesiapa yang telah bermain ChatGPT baru-baru ini akan memahami perkara ini).
Jadi, mengapa begitu sukar bagi AI untuk belajar menjana program yang betul?
1 Untuk menjana kod yang menyelesaikan tugasan tertentu, anda perlu mencari dalam semua urutan aksara yang mungkin Ini adalah ruang yang besar, dan hanya sebahagian kecil daripadanya sepadan dengan yang sah program yang betul.
2. Pengeditan satu aksara mungkin mengubah gelagat program atau malah menyebabkannya ranap, dan setiap tugas mempunyai banyak penyelesaian yang berbeza dan berkesan.
Untuk pertandingan pengaturcaraan yang sangat sukar, AI perlu memahami huraian bahasa semula jadi yang kompleks; algoritma dan struktur data, dan penyiapan tepat kod yang mungkin beratus-ratus baris panjang.
Selain itu, untuk menilai kod yang dijananya, AI juga perlu melaksanakan tugas pada set ujian tersembunyi yang lengkap dan menyemak kelajuan pelaksanaan dan ketepatan huruf tepi.
(A) Masalah 1553D, dengan skor kesukaran sederhana 1500; (B) Penyelesaian masalah yang dihasilkan oleh AlphaCode
Ambil masalah 1553D ini sebagai contoh Peserta perlu mencari cara untuk menukar rentetan huruf s dan t yang berulang secara rawak kepada rentetan huruf yang sama menggunakan set input terhad. .
Peserta tidak boleh hanya memasukkan huruf baharu, tetapi mesti menggunakan arahan "ruang belakang" untuk memadam beberapa huruf daripada rentetan asal. Soalan khusus adalah seperti berikut:
Dalam hal ini, penyelesaian AlphaCode adalah seperti berikut:
Selain itu, "idea penyelesaian masalah" AlphaCode bukan lagi Ia ialah kotak hitam yang turut menunjukkan lokasi kod dan sorotan perhatian.
Apabila menyertai pertandingan pengaturcaraan, cabaran utama yang dihadapi AlphaCode ialah:
(i) memerlukan carian dalam ruang program yang besar, (ii) hanya kira-kira 13,000 contoh tugasan tersedia untuk latihan, dan (iii) terdapat bilangan penyerahan yang terhad bagi setiap masalah.
Untuk menangani masalah ini, pembinaan keseluruhan sistem pembelajaran AlphaCode dibahagikan kepada tiga pautan, pra-latihan, penalaan halus, persampelan dan penilaian, seperti yang ditunjukkan dalam rajah di atas Tunjukkan.
Pralatihan
Dalam peringkat pralatihan, 715GB syot kilat kod pengkod manusia yang dikumpulkan di GitHub digunakan. Pra-latih model dan gunakan entropi silang kerugian ramalan token seterusnya. Semasa proses pra-latihan, fail kod dibahagikan secara rawak kepada dua bahagian, bahagian pertama digunakan sebagai input pengekod, dan model dilatih untuk menjana bahagian kedua tanpa pengekod.
Pralatihan ini mempelajari lebih awal untuk pengekodan, membolehkan penalaan halus khusus tugasan seterusnya dilakukan pada set data yang lebih kecil.
Penalaan halus
Semasa fasa penalaan halus, model dijalankan pada pengaturcaraan kompetitif 2.6GB set data masalah Untuk penalaan halus dan penilaian, set data telah dicipta oleh DeepMind dan dikeluarkan secara terbuka di bawah nama CodeContests.
Set data CodeContests termasuk soalan dan kes ujian. Set latihan mengandungi 13,328 soalan, dengan purata 922.4 jawapan dihantar setiap soalan. Set pengesahan dan set ujian masing-masing mengandungi 117 dan 165 soalan.
Semasa penalaan halus, kodkan pernyataan masalah bahasa semula jadi ke dalam ulasan program supaya ia kelihatan lebih serupa dengan fail yang dilihat semasa pra-latihan (yang boleh termasuk anotasi bahasa semula jadi yang dilanjutkan) dan gunakan kerugian ramalan token seterusnya yang sama.
Pensampelan
Untuk memilih 10 sampel terbaik untuk penyerahan, kaedah penapisan dan pengelompokan digunakan, laksanakan sampel menggunakan ujian contoh yang disertakan dalam pernyataan masalah, dan keluarkan sampel yang gagal ujian ini.
Tapis hampir 99% sampel model, kumpulkan sampel calon yang tinggal, laksanakan sampel ini pada input yang dijana oleh model pengubah yang berasingan dan Program yang menghasilkan output yang sama pada terjana input dikumpulkan bersama.
Kemudian, pilih satu sampel daripada setiap 10 kelompok terbesar untuk diserahkan. Secara intuitif, program yang betul berkelakuan sama dan membentuk kelompok besar, manakala program yang salah gagal dalam pelbagai cara.
Penilaian
Gambar di atas menunjukkan penunjuk pada 10@k tentang bagaimana prestasi model berubah dengan lebih banyak saiz sampel dan usaha pengiraan. Daripada penilaian prestasi hasil persampelan, penyelidik mencapai empat kesimpulan berikut:
1 Kadar penyelesaian mengembang secara logaritma dengan saiz sampel yang lebih besar
2. Model yang lebih baik mempunyai cerun yang lebih tinggi pada lengkung penskalaan
3. Kadar penyelesaian adalah berkadar linear secara logaritma dengan lebih banyak pengiraan;
Semata-mata "didorong data"
Tidak syak lagi bahawa pengenalan AlphaCode mewakili langkah besar dalam pembangunan model pembelajaran mesin.Menariknya, AlphaCode tidak mengandungi pengetahuan terbina dalam yang jelas tentang struktur kod komputer.
Sebaliknya, ia bergantung pada pendekatan "didorong data" semata-mata untuk menulis kod, iaitu untuk mempelajari struktur atur cara komputer dengan hanya memerhatikan sejumlah besar kod sedia ada.
Alamat artikel: https://www.science.org/doi/10.1126/science.add8258
Pada asasnya, perkara yang menjadikan AlphaCode lebih baik daripada sistem lain pada tugas pengaturcaraan yang kompetitif bergantung kepada dua atribut utama:
1 >
2. Pasca pemprosesan penyelesaian calonTetapi kod komputer ialah medium berstruktur tinggi dan program mesti mematuhi sintaks yang ditetapkan, dan mesti menghasilkan pra- dan keadaan pasca dalam bahagian penyelesaian yang berlainan.
Kaedah yang digunakan oleh AlphaCode semasa menjana kod adalah sama seperti semasa menjana kandungan teks lain - satu token pada satu masa, dan ketepatan program hanya disemak selepas keseluruhan program ditulis.
Memandangkan data dan kerumitan model yang sesuai, AlphaCode boleh menjana struktur yang koheren. Walau bagaimanapun, resipi akhir untuk prosedur penjanaan berjujukan ini terkubur jauh dalam parameter LLM dan sukar difahami.
Walau bagaimanapun, tidak kira sama ada AlphaCode benar-benar boleh "memahami" masalah pengaturcaraan, ia mencapai tahap purata manusia dalam pertandingan pengekodan.
"Menyelesaikan masalah persaingan pengaturcaraan adalah perkara yang sangat sukar yang memerlukan manusia mempunyai kemahiran pengekodan yang baik dan kreativiti penyelesaian masalah. AlphaCode mampu mencapai kejayaan dalam bidang I' saya kagum dengan kemajuan dan teruja untuk melihat cara model menggunakan pemahaman pernyataannya untuk menjana kod dan membimbing penerokaan stokastiknya untuk mencipta penyelesaian > —Petr Mitrichev, Jurutera Perisian Google dan pengaturcara kompetitif bertaraf dunia
AlphaCode diletakkan dalam 54% teratas pertandingan pengaturcaraan, menunjukkan betapa model pembelajaran mendalam memerlukan potensi pemikiran kritis dalam tugas berfikir.Model ini memanfaatkan pembelajaran mesin moden secara elegan untuk menyatakan penyelesaian kepada masalah sebagai kod, mengingat kembali kepada akar penaakulan simbolik AI beberapa dekad yang lalu.
Dan ini hanyalah permulaan.
Pada masa hadapan, AI yang lebih berkuasa akan dilahirkan untuk menyelesaikan masalah Mungkin hari ini tidak jauh.
Atas ialah kandungan terperinci AI terprogram super muncul di muka depan Sains! Peraduan Pengaturcaraan AlphaCode: Separuh daripada Pengaturcara Dipertandingkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!