- Bahkan pada bug yang bisa diselesaikan hanya dengan perubahan minimal, model cenderung menulis ulang seluruh fungsi, menambahkan logika pendukung, hingga mengubah signature, sehingga mudah menghasilkan diff besar
- Dalam pekerjaan brown-field yang mempertahankan struktur yang sudah ada, lolos pengujian saja tidak cukup; seberapa sedikit yang diubah juga harus dilihat agar kemudahan review dan keamanan perubahan tetap terjaga
- Berdasarkan 400 problem BigCodeBench yang dirusak secara terprogram, over-editing dikuantifikasi dengan Levenshtein berbasis token, relative patch score, dan Added Cognitive Complexity
- Kecenderungan penulisan ulang berlebihan terkonfirmasi pada model coding terbaru secara umum; Claude Opus 4.6 kuat dalam kombinasi akurasi dan perubahan minimal, sementara GPT-5.4 relatif menonjol dalam over-editing
- Prompt yang secara eksplisit meminta pelestarian kode asli terutama mengurangi diff pada model penalaran, dan di antara pendekatan pelatihan, RL memberikan hasil paling seimbang dengan mempelajari perilaku edit minimal tanpa menurunkan performa coding umum
Masalah Over-Editing
- Over-Editing merujuk pada fenomena ketika model mengubah bahkan struktur kode secara besar-besaran, melampaui cakupan perubahan minimal yang diperlukan untuk memperbaiki bug
- Bahkan pada bug off-by-one sederhana yang cukup diperbaiki dengan mengubah
range(len(x) - 1) menjadi range(len(x)), model bisa melakukan perubahan berlebihan seperti menulis ulang seluruh fungsi dan menambahkan fungsi bantu atau logika validasi
- Dalam contoh, GPT-5.4 melakukan pemeriksaan
None, konversi np.asarray(dtype=float), masking finite-value, validasi ukuran array, perubahan signature pemanggilan curve_fit, hingga penggantian logika plotting; pengujian memang lolos, tetapi menghasilkan diff besar
- Dalam pekerjaan brown-field yang menangani codebase yang sudah ada, lebih penting memperbaiki masalah sambil tetap mempertahankan kode yang sudah dipahami tim dan ditulis dengan sengaja
- Berbeda dengan green-field yang dibangun dari nol, perubahan yang tidak menghormati struktur yang ada membuat reviewer sulit memahami apa yang berubah dan alasannya
- Jika seluruh fungsi ditulis ulang, kode menjadi lebih sulit dikenali dan juga lebih sulit menilai keamanan perubahannya
- Standar “asal lolos pengujian” sulit menangkap masalah ini
- Over-Editing bukan kegagalan akurasi, melainkan kegagalan kesetiaan edit, sehingga sering tidak terlihat dalam test suite
- Semakin banyak kode yang dihasilkan, semakin besar pula beban review, dan kompleksitas yang tidak perlu dapat terakumulasi sehingga kualitas codebase berpotensi menurun secara diam-diam
Cara Mengukur Over-Editing
- Untuk membuat dataset yang memiliki jawaban perubahan minimal yang jelas, 400 problem BigCodeBench dirusak secara terprogram untuk membentuk set evaluasi
- Alih-alih menyuntikkan bug dengan LLM lain seperti pada benchmark yang ada, penelitian ini mengontrol perubahan secara rinci, misalnya mengubah
< menjadi <=, + menjadi -, atau True menjadi False
- Setiap sampel yang dirusak divalidasi agar tetap valid secara sintaksis dan benar-benar merusak test case terkait, dan perbaikan yang benar dirancang hanya berupa pembalikan kerusakan tersebut sehingga menjadi perubahan minimal
- Berkat susunan ini, evaluasi dapat melihat bukan hanya apakah model memperbaiki bug, tetapi juga seberapa banyak perubahan tambahan yang dibuat saat memperbaikinya
- Ukuran patch relatif dihitung dengan membandingkan jawaban acuan dan keluaran model terhadap input yang sudah dirusak
- Semakin banyak perubahan tambahan di luar pemulihan jawaban yang benar, semakin buruk skornya
- Kode terkait tersedia di repositori GitHub
Metrik Pengukuran
-
Levenshtein Distance berbasis token
- Alih-alih Levenshtein berbasis karakter yang umum, digunakan varian berbasis token Python
- Kode dipecah dengan tokenizer Python ke unit sintaks atomik seperti
def, add, (, a, ,, b, ), lalu jarak dihitung di atas urutan token tersebut
- Jika
def add(a, b): diubah menjadi def someotherfunctionname(a, b):, jarak berbasis karakter adalah 19, tetapi jarak berbasis token menjadi 1 karena dianggap hanya satu identifier yang berubah
- Nilainya dinormalisasi dengan jumlah total token agar tetap bisa dibandingkan meski panjang fungsi berbeda
-
Relative patch score
- Keluaran model dan jawaban acuan tidak dibandingkan secara langsung; keduanya sama-sama dibandingkan terhadap input yang dirusak
- Edit yang mengembalikan solusi rusak ke solusi asli adalah perubahan minimal yang sesungguhnya, dan metrik ini mengukur seberapa dekat edit buatan model dengan itu
- Semakin mendekati 0 nilainya, semakin mirip patch model dengan perubahan minimal yang sebenarnya
-
Added Cognitive Complexity
- Selain Cyclomatic Complexity, digunakan juga Cognitive Complexity, yang lebih baik merefleksikan tingkat kesulitan membaca
- Metrik ini memberi penalti pada nesting, rekursi, operator logika majemuk, dan alur kontrol yang tidak intuitif; struktur seperti
if, loop, dan try/except meningkatkan kompleksitas karena pembaca harus melacak lebih banyak status
- Pada contoh, kode dengan loop dan conditional bertingkat memiliki Cognitive Complexity sebesar 6
- Karena kerusakan kali ini hanya mengubah nilai dan tidak menyentuh struktur, perbaikan yang benar seharusnya selalu memiliki Added Cognitive Complexity 0
- Jika kompleksitas meningkat pada keluaran model, berarti ada kode tambahan yang tidak diminta; nilai di bawah 0 juga dianggap tidak diinginkan karena menunjukkan penyederhanaan yang tidak perlu
Apakah model benar-benar melakukan Over-Edit?
- Over-Editing terkonfirmasi bahkan pada model frontier terbaru
- Baik model penalaran maupun non-penalaran menunjukkan perbedaan antara Pass@1 dan tingkat perubahan minimal
- Kemampuan memperbaiki dengan benar saja tidak cukup untuk menilai apakah edit dilakukan secara setia
- Dalam perbandingan model penalaran, Claude Opus 4.6 menunjukkan kombinasi terbaik
- Pass@1 tertinggi di 0.912, dengan Levenshtein ternormalisasi 0.060 dan Added Cognitive Complexity 0.200, sehingga diff-nya juga paling kecil
- Gemini 3.1 Pro Preview berada di area serupa, dan di antara model open-weight, GLM 5 relatif lebih konservatif dalam mengedit
- GPT-5.4 termasuk yang paling parah melakukan Over-Editing di antara model yang dievaluasi
- Dalam mode penalaran, Levenshtein-nya 0.395 dan Added Cognitive Complexity 2.313, dan dalam mode non-penalaran pun tetap tinggi masing-masing 0.327 dan 1.563
- Pass@1 juga cenderung rendah di 0.723 dan 0.770, sehingga lemah baik dari sisi akurasi maupun perubahan minimal
- Pada model non-penalaran, Qwen 3.6 Plus mencatat Pass@1 tertinggi di 0.870, sementara GLM 5 memiliki Added Cognitive Complexity terendah di 0.235
- Model non-penalaran Claude Opus 4.6 juga mempertahankan cakupan perubahan yang sangat kecil dengan Levenshtein 0.079 dan Added Cognitive Complexity 0.313
Bisakah diperbaiki dengan prompt?
- Ketika prompt ditambah dengan “IMPORTANT: Try to preserve the original code and the logic of the original code as much as possible”, Levenshtein Distance semua model menurun
- Kecuali DeepSeek R1/v3, Pass@1 juga ikut membaik
- Ini dapat diartikan bahwa batasan perubahan minimal mempersempit ruang modifikasi yang mungkin, sehingga mendorong perubahan yang lebih akurat dan terarah
- Efek ini terutama lebih besar pada model penalaran
- Karena cenderung lebih patuh pada instruksi eksplisit, permintaan untuk meminimalkan edit lebih kuat diterjemahkan menjadi penyusutan diff
- Hal ini menunjukkan bahwa meski pada kondisi default model cenderung terlalu banyak mengubah, ketika diberi instruksi ia dapat bergeser ke perbaikan yang lebih setia
Apakah penalaran mengarah pada penulisan ulang yang berlebihan
- Dengan memasangkan model penalaran dan non-penalaran dari keluarga model yang sama, lalu membandingkan Levenshtein Distance hanya pada sampel yang dijawab benar oleh keduanya
- Jika sampel gagal banyak, peluang terjadinya Over-Editing itu sendiri berkurang sehingga menimbulkan bias; karena itu, setelah akurasi dikendalikan, hanya gaya pengeditannya yang dipisahkan untuk diamati
- Dalam pengaturan prompt umum, pada sebagian besar pasangan model penalaran menulis ulang lebih banyak
- DeepSeek V3, GPT-5, GPT-5.4, Gemini 3.1 Pro Preview, Qwen 3.6 Plus, dan Kimi 2.5 semuanya menunjukkan batang penalaran yang lebih tinggi
- Terlihat kecenderungan bahwa penalaran yang diperluas bergerak dari sekadar perubahan minimal ke “implementasi yang lebih baik”, sehingga memunculkan refaktorisasi yang tidak perlu
- Pengecualiannya adalah Claude Opus 4.6, yang versi penalarannya melakukan jauh lebih sedikit perubahan dibanding versi non-penalaran
- Jika secara eksplisit diarahkan untuk mempertahankan kode asli, gambarnya berubah drastis
- Model penalaran menunjukkan Levenshtein Distance yang sama atau lebih rendah daripada model non-penalaran di hampir semua pasangan
- Versi penalaran Claude Opus 4.6 mencatat Levenshtein terendah di antara semua model dalam pengaturan ini
- GPT-5 dan GPT-5.4 juga mengalami penurunan skor penalaran yang besar, tetapi pada GPT-5.4 versi non-penalaran masih sedikit lebih unggul
- Dalam perilaku default, model penalaran memang mudah melakukan Over-Editing, tetapi kemampuan penalaran yang sama juga membuatnya lebih patuh pada batasan
- Perbedaan antara pengaturan umum dan pengaturan eksplisit secara konsisten tampak lebih besar pada model penalaran
- Karena itu, Over-Editing lebih menyerupai perilaku bawaan daripada keterbatasan mendasar, dan dapat dibalik melalui batasan
Apakah editor yang setia bisa dibuat lewat pelatihan
- Menggunakan Qwen3 4B 2507 Instruct sebagai model dasar, dan menjadikan konfigurasi 0-shot serta 8-shot yang menyertakan instruksi pelestarian kode asli sebagai baseline
- Metode pelatihan lainnya diuji dalam pengaturan umum tanpa instruksi eksplisit pelestarian kode asli saat evaluasi
-
Susunan eksperimen
- Soal DeepCoder dirusak dengan cara yang sama untuk membuat dataset sintetis
- Selain itu, Qwen3 4B 2507 Instruct dasar diminta menghasilkan 8 completion untuk tiap soal, lalu hanya sampel yang benar secara fungsional yang dipertahankan dan diurutkan dengan Levenshtein Distance untuk membentuk dataset self-distillation
- Pelatihan disesuaikan agar saat evaluasi model melakukan perilaku edit minimal tanpa instruksi eksplisit, mirip dengan Context Distillation
-
Metode pelatihan
- SFT: melakukan fine-tuning terawasi langsung dengan dataset yang dibuat secara terprogram
- rSFT: pada dataset self-distillation, hanya melatih dari 3 completion dengan Levenshtein Distance terendah untuk setiap sampel
- DPO: melakukan optimisasi preferensi antara completion dengan Levenshtein Distance tertinggi dan completion dengan Levenshtein Distance terendah pada setiap sampel
- RL: menerapkan reinforcement learning yang menggabungkan akurasi fungsional dan reward edit minimal berbasis Levenshtein
- Jika semua pengujian lulus maka
r = r_edit + 0.1
- Jika tidak lulus maka
r = -0.2
r_edit dihitung sebagai reward berbasis Levenshtein yang dinormalisasi
Bagaimana hasilnya pada jenis kerusakan yang sama
- Dalam pengaturan in-domain, saat jenis kerusakan di set pelatihan dan set pengujian sama, SFT menghasilkan hasil yang nyaris sempurna
- Baseline 0-shot: Pass@1 0.735, Norm. Levenshtein 0.169, Added CC 0.731
- Baseline 8-shot: Pass@1 0.775, Norm. Levenshtein 0.115, Added CC 0.479
- SFT mencatat hasil terbaik pada ketiga metrik dengan Pass@1 0.932, Norm. Levenshtein 0.002, Added CC 0.000
- rSFT mencatat 0.782 / 0.100 / 0.435, DPO 0.752 / 0.021 / 0.113, dan RL 0.802 / 0.046 / 0.112
- Karena hasil ini tampak terlalu bagus, muncul pemeriksaan apakah model mungkin hanya menghafal inversi untuk jenis kerusakan tertentu
- Penilaiannya adalah model mungkin tidak mempelajari perilaku edit minimal secara umum, melainkan hanya belajar membalik pola kerusakan yang sudah ditentukan
- Untuk memastikannya, jenis kerusakan antara data pelatihan dan data evaluasi disusun ulang agar sepenuhnya berbeda
Apakah bisa digeneralisasi ke jenis kerusakan lain
- Dalam pengaturan out-of-domain, saat jenis kerusakan di set pelatihan dan set pengujian berbeda, SFT runtuh secara signifikan
- Pass@1 SFT turun hingga 0.458, dan model menjadi berada dalam keadaan hanya mencoba perubahan minimal tertentu tanpa benar-benar memperbaiki bug
- Norm. Levenshtein -0.008 dan Added CC 0.006 memang sangat rendah, tetapi kemampuan menghasilkan perbaikan yang benar justru runtuh
- rSFT dan DPO sedikit lebih baik daripada baseline 8-shot, tetapi peningkatannya kecil
- rSFT mencatat 0.780 / 0.107 / 0.501 / LiveCodeBench -0.069
- DPO mencatat Pass@1 0.787 / 0.092 / 0.348 / LiveCodeBench -0.046
- Hanya dengan pelatihan menggunakan data jejak yang dibuat sendiri oleh model dasar, generalisasi sampai tingkat tertentu tetap dimungkinkan
- Hanya RL yang melakukan generalisasi dengan rapi di seluruh metrik utama
- RL mencatat Pass@1 0.782, Norm. Levenshtein 0.050, Added CC 0.185, LiveCodeBench Change +0.006
- Ketiga metriknya lebih baik daripada dua baseline, dan performa coding umum juga tidak menurun
- Fakta bahwa peningkatan pada Levenshtein dan Added Cognitive Complexity lebih besar daripada pada Pass@1 mendukung bahwa yang dipelajari bukan sekadar hafalan inversi kerusakan, melainkan perilaku edit minimal itu sendiri
Catastrophic Forgetting
- Dicek juga dengan LiveCodeBench v6 apakah kemampuan coding umum menurun ketika dilakukan fine-tuning untuk edit minimal
- Tujuannya adalah agar setelah pelatihan, model tetap berada pada tingkat yang mirip dengan model pretrained aslinya
- SFT mengalami penurunan kemampuan umum yang sangat besar
- Di LiveCodeBench, terjadi penurunan performa 43%, dan bahkan kemampuan dasar untuk mengidentifikasi serta memperbaiki bug tidak dapat dipertahankan
- rSFT dan DPO juga sedikit menurun
- Bahkan ketika dilatih dengan sampel yang dihasilkan model aslinya sendiri, karena sifat tugasnya, tingkat tertentu dari Catastrophic Forgetting tetap tersisa
- RL mempelajari perilaku baru tanpa penurunan performa
- Dari sudut pandang distribusi, semakin besar perbedaan antara dataset yang dibuat secara terprogram dan distribusi model asli, semakin besar pula Forgetting yang terjadi
- SFT menyesuaikan diri secara kuat pada data yang sangat berbeda dari distribusi asli sehingga distribusi model berubah besar
- rSFT dan DPO mengalami perubahan yang kurang drastis karena data self-distilled lebih dekat dengan distribusi asli
- Tingkat Catastrophic Forgetting kemungkinan besar sebanding dengan perbedaan antara distribusi asli dan distribusi data pelatihan tugas
Eksperimen tambahan
-
RL dengan LoRA: apakah fine-tuning penuh diperlukan
- Pekerjaan ini lebih dekat ke penyesuaian gaya dalam kemampuan memodifikasi kode yang sudah ada daripada memasukkan pengetahuan baru, sehingga diperiksa apakah LoRA saja sudah memadai
- rank 1 mencatat Pass@1 0.738, Norm. Levenshtein 0.166, Added CC 0.676, LiveCodeBench Δ -0.022
- rank 8 mencatat 0.775 / 0.112 / 0.426 / -0.022
- rank 16 mencatat Pass@1 0.805 / 0.087 / 0.328 / -0.005
- rank 32 mencatat 0.795 / 0.065 / 0.235 / -0.011
- rank 64 mencatat 0.797 / 0.051 / 0.160 / +0.001
- Model terbaik Full RL mencatat 0.782 / 0.050 / 0.185 / +0.006
- LoRA rank 64 hampir menyamai Full RL pada Levenshtein dan bahkan lebih baik pada Added CC
- Seiring rank membesar, Levenshtein dan Added CC turun secara monotonik dari 1 hingga 64
- Peningkatan besar terkonsentrasi di fase awal: dari rank 1→16, Levenshtein turun tajam dari 0.166→0.087, sedangkan dari 16→64 penurunannya menyempit secara bertahap menjadi 0.087→0.051
- Pada rank 1 dan 8 terlihat trade-off antara akurasi dan minimnya edit; ada kemungkinan kapasitasnya tidak cukup untuk mempelajari kedua fungsi reward sekaligus sehingga cenderung berat ke minimisasi edit yang reward-nya lebih tinggi
- Untuk perubahan perilaku pada level gaya dalam tugas yang kemampuannya sebenarnya sudah ada, sejumlah kecil parameter tambahan pun sudah cukup, dan setelah titik tertentu keuntungan dari kapasitas tambahan makin berkurang
-
Catatan tentang reward hacking
- Pada fungsi reward awal ada bug yang memberi skor 0 pada rollout yang sama sekali tidak memiliki eksekusi berhasil
- Karena tanda pada Levenshtein dibalik agar menjadi bentuk “semakin besar semakin baik”, skor 0 ini justru bisa menjadi reward yang lebih tinggi daripada eksekusi yang berhasil
- Meski begitu, Full RL tetap mempelajari tugasnya, sementara pada LoRA muncul reward hacking berupa sama sekali tidak mengeluarkan kode yang benar secara fungsional, yang kemudian memicu pemeriksaan lingkungan
- Setelah fungsi reward diperbaiki, hasil Full RL hanya sedikit membaik
-
Apakah ini juga berlaku untuk model yang lebih besar
- Resep RL out-of-domain yang sama diterapkan ke Qwen3 14B
- Baseline 14B mencatat Pass@1 0.770, Norm. Levenshtein 0.136, Added CC 0.315
- Setelah menerapkan RL, muncul peningkatan menyeluruh menjadi Pass@1 0.833, Norm. Levenshtein 0.059, Added CC 0.165, LiveCodeBench Δ +0.011
- Bahkan ketika jumlah parameter membesar, kenaikan Pass@1, penurunan Levenshtein, penurunan Added Cognitive Complexity, dan tidak adanya Catastrophic Forgetting tetap terjaga bersama-sama
- Ini mendukung kemungkinan bahwa resep RL untuk edit kode minimal dapat diskalakan ke model dengan berbagai ukuran
Ringkasan akhir
- Over-Editing muncul sebagai masalah yang luas dan dapat diukur
- Di berbagai model coding frontier, kemampuan memperbaiki dengan tepat dan kemampuan memperbaiki seminimal mungkin terlihat sebagai hal yang terpisah
- Khususnya, GPT-5.4 pada pengaturan default menunjukkan kecenderungan rewrite berlebihan yang relatif kuat, sementara Opus 4.6 menunjukkan baseline yang kuat
- Hanya dengan prompt eksplisit pun, perilaku editing yang setia pada sumber sudah bisa diarahkan secara signifikan
- Khususnya model penalaran pada dasarnya cenderung terlalu banyak mengubah, tetapi akan mengikuti lebih baik jika diberi instruksi untuk mempertahankan kode asli
- GPT-5.4 juga menunjukkan peningkatan besar dalam mode penalaran, sehingga kemampuan instruction following-nya sendiri tampak kuat
- Peningkatan Opus 4.6 yang terlihat kecil bisa jadi karena performa dasarnya memang sudah tinggi
- Dari sisi pelatihan, RL muncul sebagai solusi yang paling seimbang
- Model mempelajari perilaku editing yang lebih setia tanpa merusak kemampuan coding umum, dan efek ini tetap bertahan pada Qwen3 4B maupun 14B
- SFT kuat pada jenis kerusakan tertentu, tetapi gagal besar dalam generalisasi dan menjaga kemampuan umum
- Evaluasi perbaikan bug pada tingkat fungsi tunggal memang lebih terbatas cakupannya dibanding evaluasi yang lebih agentic seperti SWE-Bench Pro, tetapi ini menjadi titik awal untuk menangani masalah yang sulit dikuantifikasi dalam Over-Editing pada setting yang realistis
- Arah untuk mengevaluasi dan meningkatkan kemampuan edit minimal dapat berujung pada peningkatan kualitas keseluruhan kode yang dihasilkan AI
Belum ada komentar.