Bab terakhir dalam kecerdasan buatan dan pemrograman

Sumber asli: CSDN

Sumber gambar: Dihasilkan oleh Unbounded AI

Awal tahun ini, Matt Welsh mengumumkan bahwa pemrograman akan segera berakhir. Dia menulis di ACM Communications:

Saya percaya bahwa gagasan tradisional "menulis program" sedang sekarat, pada kenyataannya, untuk semua kecuali aplikasi yang sangat khusus, seperti yang kita ketahui, sebagian besar pemrograman perangkat lunak akan digantikan oleh sistem AI terlatih. Dalam beberapa kasus di mana hanya program "sederhana" yang diperlukan (setelah semua, tidak semuanya membutuhkan model ratusan miliar parameter yang berjalan pada cluster GPU), program itu sendiri akan dihasilkan langsung oleh AI, daripada kode tangan .

Beberapa minggu kemudian, dalam sebuah pidato, Wales memperluas pengamatan kematiannya. Bukan hanya seni pemrograman yang masuk ke kuburan, tetapi ilmu komputer secara keseluruhan. Semua ilmu komputer "ditakdirkan". (Gambar di bawah ini adalah tangkapan layar pidato.) )

Para penyampai pesan-pesan sedih ini tampaknya tidak diliputi kesedihan. Meskipun Welsh telah menjadi guru dan praktisi ilmu komputer (di Harvard, Google, Apple, dan di tempat lain), ia tampaknya bersemangat untuk melanjutkan ke langkah berikutnya. "Pokoknya, menulis kode menyebalkan!" Dia menyatakan.

Saya tidak begitu optimis tentang masa depan pasca-pemrograman. Pertama-tama, saya skeptis. Saya tidak berpikir kita telah melewati ambang batas bagi mesin untuk belajar memecahkan masalah komputasi yang menarik sendiri. Saya tidak berpikir kita sudah dekat dengan itu, atau kita bergerak ke arah yang benar. Apalagi jika ternyata sudut pandang saya salah, dorongan hati saya bukan untuk menyetujui tetapi untuk melawan. Di satu sisi, saya tidak menyambut tuan AI baru kami. Bahkan jika mereka terbukti menjadi programmer yang lebih baik dari saya, saya masih akan terus menggunakan editor kode dan kompiler saya, terima kasih. "Pemrograman menyebalkan?" Bagi saya, itu telah lama menjadi sumber sukacita dan inspirasi bagi saya. Saya menemukan itu juga alat yang berharga untuk memahami dunia. Saya tidak pernah yakin apakah saya memahaminya sampai saya dapat mengurangi ide menjadi kode. Untuk mendapatkan manfaat dari pengalaman belajar ini, saya harus benar-benar menulis program alih-alih hanya mengucapkan beberapa kata ajaib dan memanggil jin dari lampu AI Aladdin.

Model Bahasa Besar

Gagasan bahwa mesin yang dapat diprogram dapat menulis program mereka sendiri berakar kuat dalam sejarah komputasi. Charles Babbage mengisyaratkan kemungkinan ini pada awal 1836 ketika mendiskusikan rencananya untuk mesin analitik. Ketika Fortran diperkenalkan pada tahun 1957, nama resminya adalah "FORTRAN Automatic Coding System". Tujuan yang dinyatakan adalah untuk komputer untuk "kode masalah untuk diri mereka sendiri dan menghasilkan program yang baik (tetapi tanpa kesalahan) sebagai coders manusia."

Fortran tidak menghilangkan trik pemrograman (atau kesalahan), tetapi itu membuat prosesnya tidak terlalu membosankan. Kemudian bahasa dan alat-alat lain membawa perbaikan lebih lanjut. Dan impian pemrograman yang sepenuhnya otomatis tidak pernah pupus. Mesin tampaknya lebih cocok untuk pemrograman daripada kebanyakan. Komputer bersifat metodis, terikat aturan, rewel dan literal — semua sifat ini (benar atau salah) dikaitkan dengan programmer ahli.

Ironisnya, sistem AI yang sekarang siap untuk melakukan tugas pemrograman anehnya tidak seperti komputer. Kepribadian mereka lebih seperti Deanna Troi daripada Commander Data. Konsistensi logis, penalaran kausal, dan perhatian yang cermat terhadap detail bukanlah poin kuat mereka. Mereka memiliki saat-saat yang sangat cemerlang ketika mereka tampaknya merenungkan pikiran-pikiran yang mendalam, tetapi mereka juga memiliki potensi untuk kegagalan yang menakjubkan — kesalahan nalar yang terang-terangan dan kurang ajar. Mereka mengingatkan saya pada sindiran lama: orang membuat kesalahan, dan dibutuhkan komputer untuk benar-benar mengacaukan segalanya.

Sistem AI terbaru disebut Big Language Model (LLM). Seperti kebanyakan penemuan AI terbaru lainnya, mereka dibangun di atas jaringan saraf tiruan, struktur berlapis-lapis yang terinspirasi oleh struktur otak. Node jaringan mirip dengan neuron biologis, dan koneksi antara node bertindak sebagai sinapsis, yang merupakan titik koneksi di mana sinyal ditransmisikan dari satu neuron ke neuron lainnya. Jaringan pelatihan dapat menyesuaikan kekuatan atau berat koneksi. Dalam model bahasa, pelatihan dilakukan dengan memaksa sejumlah besar teks ke dalam jaringan. Ketika proses selesai, bobot gabungan menyandikan statistik terperinci tentang fitur linguistik teks pelatihan. Dalam model terbesar, jumlah bobot adalah 100 miliar atau lebih.

Dalam hal ini, istilah model bisa menyesatkan. Istilah ini tidak mengacu pada model skala atau model miniatur, seperti model pesawat terbang. Sebaliknya, ini mengacu pada model prediktif, seperti model matematika yang biasa ditemukan dalam sains. Sama seperti model atmosfer memprediksi cuaca besok, model bahasa memprediksi kata berikutnya dalam sebuah kalimat.

Model bahasa berskala besar yang paling terkenal adalah ChatGPT, yang dirilis ke publik musim gugur lalu dan menarik perhatian besar. Singkatan GPT Gee Pee Tee: Lidah saya terus-menerus tersandung tiga suku kata berima ini. Produk AI lainnya memiliki nama yang lucu, seperti Bart, Claude, Llama; Saya berharap saya bisa mengganti nama GPT dengan semangat yang sama. Saya akan menyebutnya Geppetto, dan itu menggemakan pola konsonan. GPT adalah singkatan dari Generative Pre-Trained Transformer; Versi obrolan sistem dilengkapi dengan HMI percakapan. ChatGPT dikembangkan oleh OpenAI, yang didirikan pada tahun 2015 untuk membebaskan AI dari kendali segelintir perusahaan teknologi kaya. OpenAI telah berhasil menyelesaikan misi ini sampai-sampai telah menjadi perusahaan teknologi yang kaya.

ChatGPT mengagumkan dan mengejutkan karena kata-katanya, kemampuan berbicara dengan baik, kefasihan berbahasa Inggris, dan bahasa lainnya. Chatbot dapat meniru penulis terkenal, menceritakan lelucon, menulis surat cinta, menerjemahkan puisi, menulis spam, "membantu" siswa dengan pekerjaan rumah, dan membuat informasi yang salah untuk informasi yang salah tentang politik. Baik atau buruk, kemampuan bahasa ini mewakili kemajuan teknologi yang luar biasa. Komputer yang pernah berjuang untuk membangun kalimat yang dapat dimengerti tiba-tiba menjadi ahli kata-kata. Apa yang dikatakan GPT mungkin benar atau mungkin tidak benar, tetapi hampir selalu ditulis dengan baik.

Tak lama setelah ChatGPT dirilis, saya terkejut menemukan bahwa penguasaan bahasanya meluas ke bahasa pemrograman. Set pelatihan model tampaknya tidak hanya mencakup beberapa bahasa alami, tetapi juga sejumlah besar kode sumber program dari repositori publik seperti GitHub. Berdasarkan sumber daya ini, GPT dapat menulis program baru berdasarkan perintah. Saya menemukan ini mengejutkan karena komputer sangat pilih-pilih dan tanpa henti tentang masukan mereka. Meskipun komputer terkadang memiliki kesalahan kecil seperti kesalahan ejaan, pembaca manusia berjuang untuk memahami sebuah kalimat. Tetapi jika komputer mendapat input bahkan dengan satu koma atau tanda kurung yang tidak cocok, itu akan muntah kacau. Model bahasa dengan sifat statistik atau probabilistik yang berpotensi tampaknya tidak mungkin mempertahankan akurasi yang diperlukan di luar beberapa baris.

Saya salah lagi dalam hal ini. Inovasi kunci dalam model bahasa besar, mekanisme perhatian, memecahkan masalah ini. Ketika saya mulai bereksperimen dengan ChatGPT sendiri, saya segera menemukan bahwa itu memang bisa menghasilkan program tanpa kesalahan tata bahasa yang ceroboh.

Tetapi masalah lain menyusul.

** Menaiki Tangga Kata **

Ketika Anda duduk untuk mengobrol dengan mesin, Anda segera dihadapkan dengan pertanyaan canggung: "Apa yang harus kita bicarakan?" Saya mencari topik yang cukup mengukur kemampuan pemrograman ChatGPT. Saya ingin masalah yang dapat diselesaikan dengan cara komputasi, tetapi ini tidak memerlukan banyak aritmatika, yang dianggap sebagai salah satu kelemahan model bahasa besar. Saya memilih permainan anagram yang ditemukan oleh Lewis Carroll 150 tahun yang lalu dan dianalisis secara mendalam oleh Donald E. Knuth di tahun 90-an abad ke-20.

Dalam transkrip di bawah ini, setiap pertukaran di pihak saya ditandai BR; Roset adalah logo OpenAI yang menentukan respons ChatGPT.

Ketika saya melihat kalimat-kalimat ini terungkap di layar - chatbot mengetiknya kata demi kata, sedikit tidak menentu, seolah berhenti untuk memilah-milah pikiran saya - saya langsung terpesona oleh kemampuan bahasa Inggris sistem. GPT mencantumkan semua fitur dasar tangga kata dalam prosa yang sederhana dan kuat: ini adalah permainan atau teka-teki di mana Anda beralih dari kata ke kata dengan mengubah satu huruf pada satu waktu, setiap anak tangga harus menjadi kata bahasa Inggris, dan tujuannya adalah untuk menemukan urutan sesingkat mungkin dari kata awal ke kata target. Saya sendiri tidak bisa menjelaskannya dengan lebih baik. Yang paling membantu adalah contoh kerja COLD-> WARM.

Bukan hanya kalimat individual yang membuat kesan kemampuan bahasa. Kalimat disusun menjadi paragraf, yang dirangkai untuk membentuk wacana yang koheren. Itu bagus!

Yang juga penting adalah kemampuan robot untuk menangani input yang kabur dan ceroboh. Pertanyaan awal saya dirumuskan sebagai pertanyaan ya atau tidak, tetapi ChatGPT menafsirkannya dengan benar sebagai permintaan: "Beri tahu saya apa yang Anda ketahui tentang kata tangga." Instruksi kedua saya mengabaikan isyarat tipografi yang menunjukkan bahwa LEAD dan GOLD harus dipahami sebagai kata-kata, bukan logam. Chatbot seharusnya memberi saya resep alkimia, tetapi memberikan kutipan yang hilang.

Namun, mengesampingkan semua kompleksitas linguistik dan retoris ini, yang benar-benar ingin saya uji adalah kemampuan program untuk memecahkan masalah tangga kata. Kedua contoh dari transkrip di atas dapat ditemukan di web, sehingga kemungkinan besar akan muncul dalam data pelatihan ChatGPT. Dengan kata lain, model bahasa besar mungkin hanya mengingat solusi alih-alih membangunnya. Jadi saya mengajukan tugas yang lebih sulit:

Pada pandangan pertama, ChatGPT tampaknya telah menang lagi, memecahkan teka-teki yang saya yakin belum pernah saya temui sebelumnya. Tapi lihat lebih dekat. MARSH -> MARIS MEMBUTUHKAN SUBSTITUSI DUA HURUF, SEPERTI HALNYA PARIL -> APRIL. Status MARIS dan PARIL sebagai "kata-kata yang valid" juga dapat dipertanyakan. Saya telah mengeluh:

Wow! Robot menawarkan pengakuan dan permintaan maaf yang licin, tetapi tangga yang "benar" lebih gila dari sebelumnya. Sepertinya kita bermain Scrabble dengan Humpty Dumpty dalam sajak anak-anak Mother Goose dan juga menyatakan "Saya katakan APRCHI adalah sebuah kata, dia sebuah kata!" Kemudian bubarkan semua ubin.

Ini bukan kegagalan yang terpisah dan unik. Semua upaya saya untuk memecahkan tangga kata dengan ChatGPT keluar jalur, meskipun tidak selalu dengan cara yang sama. Dalam satu kasus, saya meminta tangga dari REACH ke GRASP. Pakar AI datang dengan solusi ini:

JANGKAUAN -> MENGAJAR -> PERSIK -> PERDAMAIAN -> LANGKAH -> PARES -> PARSE -> PARSE -> PARSE -> PARSE -> TAMAN -> TAMAN -> TAMAN > -> PARES -> GRASP.

Dan ini:

PEDANG -> SWARD -> HADIAH -> MENGGAMBAR ULANG -> MENGGAMBAR ULANG -> MENGGAMBAR ULANG -> MENGGAMBAR ULANG -> MENGGAMBAR ULANG -> MENGGAMBAR ULANG -> DILUNASI -> PERBAIKAN -> DAMAI

Sekarang kita mengoceh seperti anak kecil yang baru saja belajar berhitung: "Satu, dua, tiga, empat, empat, tiga, empat, empat, tujuh, biru, sepuluh!" "

Semua hasil yang saya tunjukkan sejauh ini didokumentasikan dengan ChatGPT versi 3.5. Saya juga mencoba versi 4.0 yang baru dan lebih baik, yang keluar pada bulan Maret. Robot yang diperbarui memancarkan kepercayaan diri ramah yang sama, tetapi saya khawatir ia memiliki kecenderungan yang sama, jatuh ke dalam ketidakjelasan biasa:

Tangga dimulai dengan baik dengan empat langkah, mengikuti semua aturan. Tapi kemudian AI terganggu. PERGI DARI PLAGE KE HALAMAN MEMBUTUHKAN SUBSTITUSI EMPAT HURUF. LALU ADA PASES, YANG BUKAN KATA (SEJAUH YANG SAYA TAHU) DAN TIDAK DIPERLUKAN DI SINI, KARENA URUTAN DAPAT LANGSUNG DARI HALAMAN KE PARES. Lebih banyak kebodohan mengikuti. Namun, saya menghargai catatan informasi tentang PLAGE.

Baru-baru ini saya juga memiliki kesempatan untuk mencoba Llama 2, sebuah LLM yang diterbitkan oleh Meta (orang-orang Facebook). Meskipun model ini dikembangkan secara independen dari GPT, tampaknya memiliki beberapa kebiasaan psikologis yang sama, seperti membuat aturan dan kemudian mengabaikannya. Ketika saya meminta tangga yang menghubungkan REACH dan GRASP, Llama 2 menyarankan ini:

JANGKAUAN -> MENGAJAR -> PERSIKAN -> PELINDIAN -> PIDATO -> KURSI -> KAKI -> GENGGAM

** Nubuat dan Kode Monyet **

Matt Welsh menyebutkan dua mode operasi untuk sistem komputasi yang dibangun pada model bahasa besar. Sejauh ini, kami telah bekerja dalam apa yang saya sebut mode kenabian, di mana Anda mengajukan pertanyaan dan komputer mengembalikan jawaban. Anda memberikan sepasang kata, dan sistem menemukan tangga yang menghubungkan mereka dan melakukan perhitungan yang diperlukan untuk sampai ke sana. Anda mengirimkan kotak sepatu yang penuh dengan catatan keuangan, dan komputer mengisi formulir 1040 Anda. Anda mengumpulkan data iklim historis, dan komputer memprediksi suhu global rata-rata pada tahun 2050.

Alternatif untuk oracle AI adalah AI Code Monkey. Dalam mode kedua, mesin tidak langsung menjawab pertanyaan Anda atau melakukan perhitungan Anda; Sebaliknya, ia menciptakan program yang dapat berjalan di komputer konvensional. Alih-alih tangga kata dari bot Anda, Anda mengembalikan program yang menghasilkan tangga kata, yang ditulis dalam bahasa pemrograman pilihan Anda. Alih-alih mengisi pengembalian pajak lengkap, Anda mendapatkan perangkat lunak persiapan pajak; Model iklim menggantikan prediksi suhu.

Mari kita coba dengan ChatGPT 3.5:

Anda dapat menggunakan fitur wordLadder untuk memecahkan teka-teki tangga. Berikut adalah contoh penggunaannya:

Outputnya adalah:

Perhatikan bahwa ini adalah demo dasar, dan untuk tangga yang lebih besar atau skenario yang lebih kompleks, pengoptimalan atau algoritme tambahan mungkin diperlukan, seperti pencarian yang mengutamakan luas.

Sekali lagi, pandangan sepintas pada output menunjukkan bahwa kinerjanya berhasil. ChatGPT tampaknya fasih berbahasa Jawa seperti bahasa Inggris. Ia tahu sintaks jika, sementara, dan untuk pernyataan, serta semua aturan tanda baca dan tanda kurung yang rewel. Program yang dihasilkan mesin tampaknya menggabungkan semua komponen ini untuk menyelesaikan tugas tertentu. Perhatikan juga banyaknya komentar penjelasan, yang tentunya untuk keuntungan kita, bukan untuk itu. Demikian pula, nama variabel deskriptif (currentWord, newWord, tangga).

ChatGPT juga secara proaktif menyertakan instruksi untuk menjalankan program pada contoh tertentu (MARET hingga APRIL), dan mencetak hasil yang cocok dengan jawaban yang diberikan dalam pertukaran kami sebelumnya. Apakah output itu dihasilkan dengan benar-benar menjalankan program? ChatGPT tidak mengatakannya secara eksplisit, tetapi mengklaim bahwa jika Anda menjalankan program seperti yang diinstruksikan, Anda akan mendapatkan hasil yang ditampilkan (dalam semua kemuliaan konyol).

Kita dapat menguji pernyataan ini dengan memuat program ke browser web atau lingkungan eksekusi Java lainnya. Kesimpulannya: tertangkap! Program memang berjalan, tetapi tidak menghasilkan hasil yang ditentukan. OUTPUT NYATA DARI PROGRAM INI ADALAH: MARET -> AARCH -> APRCH -> APRIH -> APRIL. Urutan ini tidak begitu aneh karena mengikuti aturan mengubah hanya satu huruf pada satu waktu, dan semua "kata" memiliki tepat lima huruf. Di sisi lain, tidak ada "kata" perantara yang dapat ditemukan dalam kamus bahasa Inggris.

ADA ALGORITMA SEDERHANA YANG MENGHASILKAN URUTAN MARET -> AARCH -> APRCH -> APRIH -> APRIL. Cukup telusuri kata awal langkah demi langkah dari kiri ke kanan, ubah huruf di setiap posisi agar sesuai dengan huruf yang sesuai di kata target. Mengikuti aturan ini, setiap pasangan kata lima huruf dapat diatur dalam langkah-langkah tidak lebih dari lima langkah. MARET -> APRIL hanya mengambil empat langkah karena R di tengah tidak perlu diubah. Saya tidak bisa membayangkan cara yang lebih mudah untuk membuat tangga kata - dengan asumsi, tentu saja, bahwa Anda bersedia membuat campuran huruf dihitung sebagai satu kata.

Program yang dibuat oleh ChatGPT dapat menggunakan rutinitas cepat dan kotor ini, tetapi melakukan sesuatu yang jauh lebih membosankan: ia membangun semua tangga yang mungkin, yang pertama adalah kata awal, dan terus memperluas tangga tersebut sampai menemukan tangga yang berisi kata target. Ini adalah algoritma brute force yang boros. Setiap huruf dari kata awal dapat diubah dalam 25 cara. Dengan demikian, kata 5 huruf memiliki 125 kemungkinan penerus. Ketika Anda mencapai tangga lima langkah, ada 190 juta kemungkinan. (CONTOH YANG SAYA BERIKAN DI SINI, SEPERTI MARET -> APRIL DAN REACH-> GRAMP, MEMILIKI HURUF INVARIAN, JADI SOLUSINYA HANYA MEMBUTUHKAN EMPAT LANGKAH.) Mencoba menghitung solusi lima langkah lengkap menguras kesabaran saya. )

** Generasi ke-4 Kode Monkey **

Mari kita coba latihan coding yang sama dengan ChatGPT 4. Dengan petunjuk yang sama, bot baru merespons sebagai berikut:

Program ini memiliki struktur keseluruhan yang sama (loop sementara dengan dua loop bersarang untuk loop di dalamnya) dan menggunakan strategi algoritmik yang sama (menghasilkan semua string yang berbeda dari kata yang diberikan di satu tempat). Tetapi versi GPT-4 memiliki kebaruan yang besar: pengenalan daftar kata sangat penting. Dengan perubahan ini, kita akhirnya memiliki harapan untuk menghasilkan tangga kata-kata nyata.

Meskipun GPT-4 mengakui perlunya daftar, GPT-4 hanya menyediakan placeholder, urutan 10 kata yang dikonfigurasi untuk contoh REACH-> GRASP yang diberikan di atas. Rintisan dari daftar kata ini tidak banyak berguna, bahkan untuk meregenerasi tangga "REACH-to-GRASP" palsu. Jika Anda mencoba melakukan ini, program akan melaporkan bahwa tidak ada tangga. Tidak ada yang salah dengan hasil ini, karena 10 kata yang diberikan tidak membentuk jalur yang efektif untuk mengubah hanya satu huruf per langkah.

Bahkan jika kata-kata dalam daftar dipilih dengan cermat, kosakata 10 sangat tidak signifikan. Menghasilkan daftar kata yang lebih besar sepertinya tugas yang mudah untuk model bahasa. Bagaimanapun, LLM dilatih pada korpus teks yang sangat besar, di mana hampir semua kata bahasa Inggris cenderung muncul setidaknya sekali, sementara kata-kata umum muncul jutaan kali. Tidak bisakah robot mengambil sampel yang representatif dari kata-kata ini? Jawabannya jelas tidak. Meskipun GPT dapat dikatakan telah "membaca" semua teks ini, GPT tidak menyimpan kata-kata ini dalam bentuk apa pun yang mudah diakses. (Hal yang sama berlaku untuk pembaca manusia.) Dapatkah Anda membuat daftar 10 kata lima huruf yang paling umum dalam kosakata Anda dengan melihat kembali pengalaman membaca seumur hidup?

Ketika saya meminta ChatGPT 4 untuk membuat daftar kata, ia keberatan dengan meminta maaf: "Saya minta maaf atas kebingungannya, tetapi sebagai AI yang dikembangkan oleh OpenAI, saya tidak dapat langsung mengakses database kata atau mendapatkan kemampuan untuk mendapatkan data dari sumber eksternal ..." Jadi saya mencoba beberapa trik dan meminta robot untuk menulis cerita 1000 kata dan kemudian mengurutkan kata-kata dari cerita berdasarkan frekuensi. Triknya berhasil, tetapi sampelnya terlalu kecil untuk banyak digunakan. Selama saya tetap menggunakannya, saya mungkin bisa membujuk daftar yang dapat diterima dari GPT, tetapi saya mengambil jalan pintas. Lagi pula, saya bukan AI yang dikembangkan oleh OpenAI, dan saya memiliki akses ke sumber daya eksternal. Saya mengambil daftar 5.757 kata bahasa Inggris lima huruf yang disusun oleh Knuth untuk eksperimen tangga kata. Dengan daftar ini, program yang ditulis dalam GPT-4 akan menemukan diagram tangga sembilan langkah berikut:

JANGKAUAN -> PERSIK -> KEDAMAIAN -> TEMPAT -> PESAWAT -> RENCANA -> KELENJAR -> KACA -> RUMPUT -> PEGANG

Hasil ini sama persis dengan output dari program tangga Knuth sendiri, yang ia terbitkan 30 tahun lalu di Stanford Graphbase.

Pada titik ini, saya harus mengakui bahwa dengan sedikit bantuan dari luar, ChatGPT akhirnya memenuhi permintaan saya. Ini menulis sebuah program yang dapat membangun tangga kata yang valid. Tapi saya masih punya reservasi. Meskipun GPT-4 dan Knuth menulis program yang menghasilkan output yang sama, program itu sendiri tidak setara, atau bahkan serupa.

Knuth mendekati masalah ini dengan arah yang berlawanan, dimulai bukan dengan kumpulan semua string lima huruf yang mungkin (yang jumlahnya kurang dari 12 juta), tetapi dengan daftar 5.757 kata bahasa Inggris umum yang jauh lebih kecil. Dia kemudian membangun grafik (atau jaringan) di mana setiap kata adalah node, dan dua node dihubungkan oleh tepi jika dan hanya jika kata-kata yang sesuai berbeda dengan satu huruf. Ilustrasi berikut menunjukkan fragmen diagram semacam itu.

Dalam diagram, tangga kata adalah serangkaian tepi dari simpul awal ke simpul target. Tangga terbaik adalah jalur terpendek, melintasi jumlah sisi paling sedikit. Misalnya, jalur terbaik dari tali ke tali adalah tali -> pelindian -> mencapai -> retch, tetapi ada juga jalur yang lebih panjang seperti tali -> pelindian -> pantai -> persik -> mencapai -> retch. Untuk menemukan jalur terpendek, Knuth menggunakan algoritma yang dirancang oleh Edsger W. Dijkstra pada 50-an abad ke-20.

Program tangga kata Knuth membutuhkan investasi di muka untuk mengubah daftar kata sederhana menjadi bagan. Di sisi lain, ia menghindari pemborosan menghasilkan ribuan atau jutaan string lima huruf yang tidak dapat menjadi elemen yang terakhir. Dalam memecahkan masalah REACH-> Grape, program GPT-4 menghasilkan 219.180 string tersebut; Hanya 2.792 dari mereka (lebih dari 1%) adalah kata-kata nyata.

Jika berbagai prosedur tangga kata yang saya jelaskan diajukan oleh siswa, maka saya akan memberikan nilai gagal untuk versi tanpa daftar kata. Program GPT-4 dengan daftar akan lulus, tetapi demi efisiensi dan keanggunan, saya hanya akan memberikan nilai tertinggi pada program Knuth.

Mengapa chatbots lebih memilih algoritma yang lebih rendah? Anda cukup Google untuk "program tangga kata" untuk mendapatkan petunjuk. Hampir semua hasil peringkat teratas berasal dari situs-situs seperti Leetcode, GeeksForGeeks, dan RosettaCode. Situs-situs ini jelas dimaksudkan untuk melayani pencari kerja dan pesaing dalam kompetisi pemrograman, dengan solusi yang membutuhkan menghasilkan semua 125 varian huruf tunggal dari setiap kata, seperti program GPT. Karena ada begitu banyak situs seperti itu – tampaknya ada ratusan – mereka lebih penting daripada sumber lain, seperti buku Knuth (jika teks memang muncul di set pelatihan). Apakah ini berarti kita harus menyalahkan Leetcode atas pilihan algoritma yang salah, bukan GPT? Sebaliknya, saya ingin menunjukkan kelemahan protokol yang tak terhindarkan, yang paling umum adalah jawaban yang benar secara default.

Setiap kali saya berpikir bahwa model bahasa besar sedang ditulis untuk semua perangkat lunak kami, kekhawatiran terkait lainnya menghantui saya. Dari mana algoritma baru itu berasal? Model bahasa perguruan tinggi mungkin kreatif dalam mencampur elemen proyek yang ada, tetapi saya tidak melihat cara apa pun untuk menciptakan sesuatu yang sama sekali baru dan lebih baik.

** Cukup dengan kata tangga! **

Saya akui saya sudah terlalu jauh, menyiksa ChatGPT dengan terlalu banyak varian masalah tertentu (dan tidak relevan). Mungkin model bahasa perguruan tinggi berkinerja lebih baik pada tugas komputasi lainnya. Saya sudah mencoba beberapa, dengan hasil yang beragam. Saya hanya ingin membahas salah satunya, dan saya menemukan upaya ChatGPT agak pedih.

Dengan ChatGPT 3.5, saya meminta nilai angka Fibonacci ke-100. Perhatikan bahwa pertanyaan saya diajukan dalam mode Oracle; Saya meminta nomor ini, bukan program yang menghitungnya. Namun, ChatGPT secara sukarela menulis program Fibonacci dan kemudian membuat output dari program itu.

Algoritma yang diterapkan oleh program ini secara matematis benar; Itu datang langsung dari definisi deret Fibonacci, yang merupakan anggota urutan yang dimulai dari {0, 1}, dengan setiap elemen berikutnya sama dengan jumlah dari dua item pertama. Jawaban yang diberikan juga benar: 354224848179261915075 memang angka Fibonacci ke-100. Jadi apa masalahnya? Ini adalah kalimat tengah: "Ketika Anda menjalankan kode ini, itu akan menampilkan angka Fibonacci ke-100." Ini tidak benar. Jika Anda menjalankan kode, Anda akan mendapatkan nilai yang salah 354224848179262000000. Versi Java terbaru menyediakan tipe data BigInt untuk mengatasi masalah ini, tetapi BigInt harus ditentukan secara eksplisit, yang tidak dilakukan oleh program ChatGPT. Alasan untuk anomali ini adalah bahwa Java menggunakan aritmatika floating-point, bahkan untuk nilai bilangan bulat. Menurut standar floating-point IEEE, bilangan bulat maksimum yang dapat diwakili tanpa kehilangan presisi adalah 253−1; Angka Fibonacci ke-100 adalah sekitar 268. Inilah yang saya sebut pemikiran pedih: ChatGPT memberikan jawaban yang benar, tetapi metode yang diklaim digunakan untuk menghitung jawaban itu tidak memberikannya. Bot pasti telah menemukan nilai yang benar dengan beberapa cara lain, tetapi cara yang tepat tidak terungkap.

Memberikan tugas yang sama ke ChatGPT 4.0 akan membawa kita pada perjalanan yang bahkan lebih aneh. Dalam interaksi berikutnya, saya mengaktifkan Code Interpreter, plugin ChatGPT yang memungkinkan sistem untuk menguji dan menjalankan beberapa kode yang ditulisnya. Rupanya, robot mengambil keuntungan dari fitur ini, pertama kali datang dengan program yang gagal karena alasan yang tidak diketahui:

Di sini ChatGPT ditulis dengan Python, bahasa pemrograman utama yang didukung oleh Code Interpreter. Upaya pertama untuk menulis program didasarkan pada eksponensial matriks Fibonacci:

Ini adalah metode yang terkenal dan efektif, dan program mengimplementasikannya dengan benar. Namun, untuk alasan misterius, interpreter kode tidak dapat menjalankan program. (Kode bekerja dengan baik di lingkungan Python standar dan mengembalikan jawaban yang benar.) )

Pada titik ini, robot akan berbalik ke arah yang sama sekali baru dan lepas landas, menunjukkan bahwa nilai Fibonacci yang diperlukan dihitung dengan identitas matematika yang disebut rumus Binet. Itu telah menulis ekspresi matematika, tetapi kemudian berubah pikiran. Ini dengan benar meramalkan masalah presisi numerik: mengingat nilai yang tepat dari akar kuadrat dari 5, rumus akan menghasilkan hasil yang tepat, tetapi ini tidak layak.

Jadi sekarang ChatGPT telah mengambil strategi yang berbeda, menggunakan algoritma iteratif yang sama dengan versi 3.5. Kali ini kami mendapat jawaban yang benar karena Python (tidak seperti Java) tidak memiliki masalah berurusan dengan bilangan bulat besar.

Saya terkesan dengan kinerja ini, tidak hanya dengan jawaban yang benar, tetapi juga dengan ketekunan sistem yang berani. Terlepas dari masalah ChatGPT, ia bertahan, bingung dengan kesulitan yang tidak terduga tetapi menolak untuk menyerah. "Yah, metode matriks itu seharusnya berhasil. Tapi, bagaimanapun, mari kita coba rumus Binet ... Oh tunggu, aku lupa ... Bagaimanapun, tidak perlu terlalu mewah tentang ini. Mari kita lakukan dengan cara yang jelas dan lambat. Saya merasa ini adalah pendekatan yang sangat manusiawi untuk pemecahan masalah. Aneh melihat perilaku ini di mesin.

** Rekam skor keberhasilan dan kegagalan **

Eksperimen kecil saya membuat saya meragukan klaim bahwa oracle AI dan monyet kode AI akan mengusir programmer manusia. Saya telah melihat beberapa keberhasilan, tetapi lebih dari kegagalan. Catatan suram ini disusun pada tugas-tugas komputasi yang relatif sederhana yang solusinya terkenal dan dipublikasikan secara luas.

Yang lain telah membuat penilaian yang lebih luas dan lebih dalam tentang pembuatan kode LLM. Dalam bibliografi di akhir artikel ini, saya mencantumkan lima studi semacam itu. Saya ingin meringkas secara singkat beberapa hasil yang mereka laporkan.

Dua tahun lalu, Mark Chen dan lebih dari 50 rekannya di OpenAI berupaya keras untuk mengukur keakuratan Codex, fork dari ChatGPT 3 yang didedikasikan untuk menulis kode. (Codex sejak itu menjadi mesin yang menggerakkan GitHub Copilot, "asisten programmer.") ) membuat satu set 164 tugas yang dapat dilakukan dengan menulis program Python. Tugas-tugas ini sebagian besar adalah latihan buku teks, kompetisi pemrograman, dan jenis literatur (mengejutkan) tentang bagaimana melakukannya dengan baik dalam pengkodean wawancara kerja. Sebagian besar tugas dapat diselesaikan hanya dengan beberapa baris kode. Contoh: Hitung jumlah vokal dalam kata tertentu, tentukan apakah bilangan bulat adalah prima atau komposit.

Tim Profesor Chen juga memberikan beberapa pemikiran tentang kriteria untuk mendefinisikan keberhasilan dan kegagalan. Karena proses LLM adalah non-deterministik (pemilihan kata didasarkan pada probabilitas), model dapat menghasilkan program yang cacat pada upaya pertama, tetapi pada akhirnya akan menghasilkan respons yang benar jika upaya dibiarkan berlanjut. Parameter yang disebut suhu mengontrol tingkat ketidakpastian. Pada suhu nol, model selalu memilih kata yang paling mungkin di setiap langkah; Ketika suhu naik, keacakan diperkenalkan, memungkinkan pilihan kata-kata yang tidak mungkin. Chen dkk. Pertimbangkan kemungkinan perubahan ini dengan mengadopsi tiga tolok ukur keberhasilan:

pass@1: LLM menghasilkan program yang benar pada upaya pertama

pass@10: Setidaknya satu dari 10 program yang dihasilkan sudah benar

pass@100: Setidaknya satu dari 100 program yang dihasilkan sudah benar

Pass@1 tes dilakukan pada suhu nol, sehingga model selalu memberikan tebakan terbaik. Uji coba pass@10 dan pass@100 dilakukan pada suhu yang lebih tinggi, memungkinkan sistem untuk mengeksplorasi solusi potensial yang lebih luas.

Para penulis mengevaluasi beberapa versi Codex pada semua 164 tugas. Untuk versi Codex terbesar dan terkuat, tingkat pass@1 sekitar 29%, tingkat pass@10 adalah 47%, dan pass@100 mencapai 72%. Haruskah kita terkesan atau terkejut ketika kita melihat angka-angka ini? Apakah layak merayakan bahwa Codex benar pada upaya pertama hampir sepertiga dari waktu (ketika suhu diatur ke nol)? Atau jika Anda bersedia menyaring 100 rencana yang diusulkan untuk menemukan yang tepat, tingkat keberhasilannya naik menjadi hampir tiga perempat? Pendapat pribadi saya adalah ini: jika Anda melihat generasi LLM saat ini sebagai upaya perintis dalam program penelitian jangka panjang, hasilnya menggembirakan. Tetapi jika Anda berpikir teknologi dapat segera menggantikan perangkat lunak berkode tangan, ada sedikit harapan. Kami masih jauh dari tingkat keandalan yang diperlukan.

Penelitian lain telah menghasilkan hasil yang serupa secara luas. Fredrico Cassano dkk. Mengevaluasi kinerja beberapa LLM yang menghasilkan kode dalam berbagai bahasa pemrograman; Mereka melaporkan berbagai tingkat pass@1, tetapi hanya dua yang melebihi 50%. Alessio Buscemi menguji ChatGPT 3.5 pada 40 tugas pengkodean, membutuhkan program yang ditulis dalam 10 bahasa dan mengulangi setiap kueri 10 kali. Dari 4.000 percobaan, 1.833 menghasilkan kode yang dapat dikompilasi dan dieksekusi. Liu Zhijie dkk. Penilaian mereka terhadap ChatGPT didasarkan pada pertanyaan yang diposting di situs web Leetcode. Nilai hasilnya dengan mengirimkan kode yang dihasilkan ke proses penilaian Leetcode otomatis. Tingkat penerimaan rata-rata untuk semua pertanyaan berkisar dari 31% untuk program yang ditulis dalam C hingga 50% untuk program Python. Liu dkk. Pengamatan menarik lainnya: ChatGPT mendapat skor jauh lebih buruk pada pertanyaan yang diterbitkan setelah September 2021 (batas waktu untuk set pelatihan GPT). Mereka berspekulasi bahwa robot mungkin lebih mampu memecahkan masalah sebelumnya karena telah melihat solusi selama pelatihan.

Sebuah makalah baru-baru ini yang diterbitkan oleh Li Zhong dan Zilong Wang melampaui pertanyaan dasar tentang kebenaran program dan mempertimbangkan ketahanan dan keandalan. Apakah program yang dihasilkan merespons dengan benar terhadap input yang salah bentuk atau kesalahan eksternal, seperti ketika mencoba membuka file yang tidak ada? Meskipun prompt LLM menyertakan contoh yang menunjukkan cara menangani masalah seperti itu dengan benar, Zhong dan Wang menemukan bahwa kode yang dihasilkan gagal melakukannya 30 hingga 50 persen dari waktu.

Selain hasil yang membuat frustrasi ini, saya sendiri memiliki lebih banyak keraguan. Hampir semua pengujian dilakukan melalui cuplikan kode pendek. LLM yang mengalami kesulitan menulis program 10-baris mungkin memiliki kesulitan yang lebih besar menulis program 100-baris atau 1.000-baris. Juga, peringkat lulus / gagal sederhana adalah ukuran kualitas kode yang sangat kasar. Pertimbangkan tes primalitas di rangkaian benchmark grup Chen. Ini adalah salah satu program yang ditulis dalam Codex:

Kode ini dinilai benar – harus benar karena tidak pernah salah mengklasifikasikan bilangan prima sebagai bilangan komposit dan sebaliknya. Namun, ketika n besar, Anda mungkin tidak memiliki kesabaran atau kehidupan untuk menunggu putusan. Algoritma mencoba membagi n dengan setiap bilangan bulat antara 2 dan n−1.

LLM kepraktisan tidak konvensional

Ini masih hari-hari awal untuk model bahasa besar. ChatGPT dirilis kurang dari setahun yang lalu; Teknologi yang mendasarinya baru berusia sekitar enam tahun. Meskipun saya cukup yakin saya mengklaim LLM belum siap untuk menaklukkan dunia pengkodean, saya tidak dapat memprediksi dengan keyakinan bahwa mereka tidak akan pernah melakukannya. Model-model ini pasti akan meningkat dan kami akan menggunakannya dengan lebih baik. Sudah ada industri baru yang menawarkan panduan "rekayasa tepat waktu" sebagai cara untuk mendapatkan hasil maksimal dari setiap permintaan.

Cara lain untuk meningkatkan kinerja LLM mungkin untuk membentuk hibrida dengan sistem komputasi lain yang dilengkapi dengan logika dan alat penalaran daripada alat analisis bahasa murni. Menjelang kematiannya baru-baru ini, Doug Lenat mengusulkan menggabungkan LLM dengan Cyc, database besar akal sehat yang ia habiskan empat dekade bekerja untuk membangunnya. Stephen Wolfram sedang berupaya mengintegrasikan ChatGPT ke Wolfram|Dalam Alpha, Wolfram |Alpha adalah kumpulan online data dan algoritma yang dikuratori.

Namun, beberapa rintangan yang menghambat generasi kursus LLM tampaknya sulit untuk diatasi.

Model bahasa melakukan keajaiban mereka dengan cara yang sederhana: dalam proses penulisan kalimat atau paragraf, LLM memilih kata berikutnya berdasarkan kata sebelumnya. Ini seperti menulis pesan teks di ponsel Anda: Anda mengetik "Sampai jumpa ..." dan perangkat lunak menyarankan kelanjutan alternatif: "besok," "segera," "nanti." Dalam LLM, setiap kandidat diberi probabilitas, yang dihitung berdasarkan analisis semua teks dalam set pelatihan model.

Lebih dari seabad yang lalu, matematikawan Rusia A. A. Markov pertama kali mengeksplorasi gagasan menghasilkan teks dari analisis statistik ini. Prosesnya sekarang dikenal sebagai model n-gram, di mana n adalah jumlah kata (atau karakter atau simbol lain) yang perlu dipertimbangkan ketika memilih elemen urutan berikutnya. Saya sudah lama terpesona oleh proses n-gram, meskipun sebagian besar karena kemungkinan komedinya. (Dalam sebuah artikel yang diterbitkan 40 tahun yang lalu, saya menyebutnya "seni mengubah sastra menjadi omong kosong.") ")

Tentu saja, ChatGPT dan LLM terbaru lainnya lebih dari n-metamodels. Jaringan saraf mereka menangkap fitur statistik linguistik jauh melampaui urutan n simbol berturut-turut. Yang paling penting adalah mekanisme perhatian, yang melacak ketergantungan antara simbol-simbol yang dipilih pada jarak yang sewenang-wenang. Dalam bahasa alami, cara ini berguna untuk menjaga konsistensi subjek dan kata kerja, atau untuk mengaitkan kata ganti dengan objek yang mereka rujuk. Dalam bahasa pemrograman, mekanisme perhatian memastikan integritas struktur sintaks multipart, seperti... kemudian... lain, dan itu membuat tanda kurung dipasangkan dan ditumpuk dengan benar.

Namun, bahkan dengan perbaikan ini, LLM pada dasarnya adalah alat untuk membangun teks baru berdasarkan probabilitas kata-kata yang muncul dalam teks yang ada. Dalam cara berpikir saya, itu bukan berpikir. Ini adalah sesuatu yang lebih dangkal, berfokus pada kata-kata daripada ide. Mengingat mekanisme kasar ini, saya terkejut sekaligus bingung dengan seberapa banyak LLM yang dapat dicapai.

Selama beberapa dekade, arsitek AI percaya bahwa kecerdasan sejati, baik alami maupun buatan, membutuhkan model mental dunia. Untuk memahami apa yang terjadi di sekitar Anda (dan di dalam diri Anda), Anda perlu memiliki intuisi tentang bagaimana segala sesuatu bekerja, bagaimana mereka cocok bersama, apa yang terjadi selanjutnya, sebab dan akibat. Lynant menegaskan bahwa pengetahuan yang paling penting adalah pengetahuan yang Anda peroleh jauh sebelum Anda mulai membaca. Anda belajar gravitasi dengan jatuh. Ketika Anda menemukan bahwa menara blok bangunan mudah dirobohkan tetapi sulit untuk dibangun kembali, Anda memahami entropi. Sebelum bahasa mulai berakar, Anda akan belajar tentang rasa sakit, ketakutan, kelaparan, dan cinta pada masa bayi. Otak di dalam kotak tidak dapat mengakses pengalaman ini karena tidak dapat secara langsung mengakses alam semesta fisik atau sosial.

Dua ratus lima puluh tahun yang lalu, pembuat jam Swiss Pierre Jacquet-Droz membangun robot mekanis yang bisa menulis dengan pena bulu. Perangkat jarum jam ini memiliki ratusan kamera dan roda gigi dan berpakaian seperti anak kecil yang duduk di bangku. Setelah aktivasi, bocah itu mencelupkan pena ke dalam tinta dan menulis pesan singkat - terutama pepatah Cartesian "Saya pikir, karena itu saya". Lucu sekali! Tetapi bahkan di abad ke-18, tidak ada yang percaya bahwa boneka grafiti benar-benar berpikir. Skeptis LLM menempatkan ChatGPT dalam kategori yang sama.

Saya akan memberi tahu Anda mana dari teori mentalitas LLM yang kontras ini yang benar? Aku tidak. Tidak ada pilihan yang menarik bagi saya. Jika Bender dan yang lainnya benar, maka kita harus menghadapi kenyataan bahwa gadget tanpa kemampuan untuk bernalar atau merasakan, tidak ada pengalaman alam semesta fisik atau interaksi sosial, tidak ada kesadaran diri, menulis makalah perguruan tinggi, menulis lagu rap, memberikan saran kepada kekasih. Pengetahuan, logika, emosi tidak berharga; Lidah licin adalah segalanya. Ini adalah proposisi subversif. Jika ChatGPT dapat membodohi kita dengan pertunjukan bawah sadar ini, mungkin kita juga pembohong, dan suara serta kemarahan mereka tidak ada artinya.

Di sisi lain, jika Sutskever benar, maka banyak pengalaman manusia yang kita pegang teguh — rasa kepribadian yang perlahan berkembang saat kita tumbuh dan hidup — dapat dipelajari dengan membaca kata-kata ini di internet. Jika itu masalahnya, maka saya sebenarnya tidak harus menanggung rasa sakit yang tak terkatakan di sekolah menengah pertama, saya tidak harus membuat semua kesalahan bodoh yang menyebabkan sakit hati dan kesulitan seperti itu; Tidak perlu melukai harga diri saya dengan bertabrakan dengan dunia. Saya bisa membaca semua ini dari kenyamanan kursi berlengan saya; Kata-kata yang adil dapat membawa saya ke keadaan dewasa dengan pikiran jernih tanpa mengalami semua batu sandungan dan rasa sakit di lembah yang membentuk jiwa saya.

Saya masih memiliki dua pendapat (atau mungkin lebih dari dua!) tentang status dan dampak model bahasa besar pada ilmu komputer. )。 Penggemar AI mungkin benar. Model-model ini dapat mengambil alih pemrograman serta banyak jenis pekerjaan dan pembelajaran lainnya. Atau mereka mungkin gagal, seperti inovasi AI menjanjikan lainnya. Saya tidak berpikir kita harus menunggu terlalu lama untuk mendapatkan jawaban.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)