- fast.ai mengamati kurva loss yang tampak menunjukkan bahwa LLM mengingat contoh dataset setelah melihatnya sekali saat melakukan fine-tuning model untuk Kaggle LLM Science Exam
- Jaringan saraf biasa sering belajar secara bertahap selama beberapa epoch, tetapi dalam eksperimen ini training loss turun tajam seperti tangga di batas epoch, berbeda dari pengalaman sebelumnya
- Pola serupa muncul terlepas dari penggunaan Hugging Face
Trainer, LoRA, atau full fine-tuning, sehingga sulit menganggapnya sekadar bug library - Dalam eksperimen cyclical learning rate dan 1cycle, perubahan training loss, validation loss, dan MAP@3 secara umum cocok dengan hipotesis penghafalan, dan memburuknya validation loss tidak langsung berarti akurasi turun
- Jika LLM pralatih belajar sangat cepat, maka strategi fine-tuning seperti catastrophic forgetting, augmentasi data, pencampuran data, dan dropout perlu ditinjau ulang
Kurva loss yang berbeda dari pembelajaran jaringan saraf pada umumnya
- Klasifikator jaringan saraf menyesuaikan probabilitas output dengan berulang kali melihat input dan label jawaban yang benar
- Proses melewati seluruh data pelatihan satu kali disebut epoch
- Loss menunjukkan seberapa salah model, dan memberikan penalti lebih besar untuk prediksi yang salah namun sangat yakin
- Biasanya pada awal pelatihan training loss turun cepat lalu makin melambat, sedangkan validation loss membaik lebih lambat
- Hanya dari grafik loss saja, awal dan akhir epoch biasanya tidak terlihat jelas
- Secara empiris, jaringan saraf sering membutuhkan beberapa epoch untuk benar-benar mempelajari gambar tertentu
- fast.ai menemukan pola berbeda saat melatih model untuk menjawab soal sains pilihan ganda di Kaggle LLM Science Exam
- Model dilatih selama 3 epoch menggunakan dataset big questions buatan Radek Osmulski
- Di akhir setiap epoch muncul penurunan bertingkat saat training loss tiba-tiba turun
Dari dugaan bug ke hipotesis penghafalan
- Pada awalnya, mereka mencurigai ada bug dalam proses pelatihan
- Misalnya, jika model terus belajar saat evaluasi validation set, maka model bisa tampak tiba-tiba membaik setelah validasi
- Kemungkinan masalah pada Hugging Face
Traineryang sedang dipakai lebih dulu diperiksa
- Pengembang open source di Alignment Lab AI Discord juga menjawab bahwa mereka pernah melihat kurva loss serupa
- Karena para responden awal semuanya memakai
Trainer, hipotesis bug library sempat terlihat masuk akal - Belakangan dibagikan juga kasus yang menunjukkan kurva sama pada loop pelatihan kustom
- Karena para responden awal semuanya memakai
- Mereka juga memeriksa apakah ini hanya fenomena khusus LoRA, tetapi pola yang sama muncul juga pada full fine-tuning
- Di komunitas fine-tuning LLM, kurva loss seperti ini tampaknya sudah cukup umum
Pola penghafalan cepat yang terlihat dalam eksperimen Kaggle
- Interpretasi yang diajukan rekan-rekan open source adalah bahwa kurva loss tersebut menunjukkan overfitting
- Artinya model belajar sampai tingkat bisa mengenali input hanya setelah melihatnya sekali atau dua kali, yang awalnya terasa mustahil
- Pada grafik pertama, loss turun dari 0,8 ke 0,5 setelah epoch pertama, lalu dari 0,5 ke di bawah 0,2 setelah epoch kedua
- Di pertengahan epoch kedua dan ketiga, hampir tidak terlihat pembelajaran baru
- Jika interpretasi ini benar, berarti model hampir menghafal training set hanya dengan melihat tiap baris sebanyak 3 kali
- Sinyal yang diterima model pada tiap soal hanyalah perbandingan antara label jawaban benar dan pilihannya sendiri
- Meski begitu, training loss tetap turun besar
Perubahan loss dilihat lewat cyclical learning rate
- Model Kaggle dilatih selama 2 epoch dengan jadwal cyclical learning rate berdasarkan paper Leslie Smith tahun 2015, Cyclical Learning Rates for Training Neural Networks
- Kurva pada epoch pertama mirip dengan pola pembelajaran umum
- Learning rate di-warm-up selama 10% awal
- Setelah itu learning rate diturunkan mengikuti jadwal cosine
- Setelah learning rate cukup naik, training loss dan validation loss turun cepat lalu melambat
- Pada epoch kedua, dataset tidak diacak ulang, sehingga batch awal muncul lagi pada learning rate rendah
- Batch-batch ini pada epoch pertama juga hanya terekspos pada learning rate rendah, sehingga model belum banyak belajar darinya
- Menjelang akhir 10% pertama, batch yang pernah dilihat pada learning rate tinggi di epoch pertama muncul lagi, dan training loss turun tajam
- Pada rentang yang sama, validation loss justru memburuk
- Ini bisa dilihat bukan sebagai generalisasi yang lebih baik, melainkan keadaan saat model menghafal data pelatihan dan menjadi sangat yakin pada jawabannya
- Karena fungsi loss memberi penalti lebih besar pada jawaban salah yang sangat yakin, validation loss menjadi lebih buruk
- Di bagian akhir kurva, training loss kembali memburuk
- Memburuknya training loss pada learning rate yang masuk akal bukan fenomena umum
- Dalam hipotesis penghafalan, ini ditafsirkan sebagai akibat model belum mampu menghafal secara efektif batch yang sebelumnya hanya dilihat pada learning rate rendah, sementara keyakinan berlebihan dari batch sebelumnya masih terbawa
- Setelah itu model menyesuaikan ulang ke tingkat keyakinan yang lebih masuk akal, sehingga validation loss turun lagi
Eksperimen 1cycle dan perbedaan metrik evaluasi
- Pada eksperimen berikutnya, mereka memakai 1cycle training selama 3 epoch
- Learning rate di-warm-up hanya sekali pada 10% batch awal pelatihan
- Pada sisa batch, learning rate diturunkan dengan jadwal cosine
- Tidak seperti eksperimen sebelumnya, warm-up dan decay terpisah tidak diulang di setiap epoch
- Rank LoRA dinaikkan untuk memperlambat kecepatan belajar
- Kurva hasilnya secara umum sesuai dengan interpretasi sebelumnya, tetapi kenaikan validation loss muncul pada epoch 3, bukan epoch 2
- Pada eksperimen sebelumnya, training loss turun hingga sekitar 0,2 pada epoch kedua sehingga prediksi yang sangat yakin menjadi mungkin
- Pada eksperimen 1cycle, tingkat keyakinan seperti itu baru tercapai pada epoch ketiga, dan kenaikan validation loss juga muncul saat itu
- Memburuknya loss validasi tidak selalu berarti overfitting yang nyata
- Metrik leaderboard Kaggle adalah Mean Average Precision @ 3, yaitu akurasi berbasis peringkat untuk 3 prediksi pilihan ganda teratas
- Validation MAP@3 per batch pada pelatihan 1cycle terus membaik di epoch terakhir meski validation loss memburuk
- Log tambahan dan notebook reproduksi bisa dilihat di laporan milik Johno
Mengapa pembelajaran dari satu contoh mungkin bisa terjadi
- Tidak ada hukum dasar yang menyatakan jaringan saraf tidak bisa mengenali input dari satu contoh saja
- Para peneliti dan praktisi hanya selama ini secara empiris menganggap jaringan saraf memerlukan banyak contoh
- Jika permukaan loss yang dijelajahi stochastic gradient descent (SGD) bergelombang, pergeseran besar dalam satu langkah memang sulit terjadi
- Sudah diketahui ada faktor-faktor yang membuat permukaan loss lebih mulus
- Visualizing the Loss Landscape of Neural Nets oleh Li et al. 2018 membahas hubungan antara residual connection dan permukaan loss
- LLM pralatih bisa saja memiliki permukaan loss yang sangat mulus di area yang dekat dengan minimum loss
- Banyak pekerjaan fine-tuning di komunitas open source mungkin berlangsung di area seperti ini
- Ini sejalan dengan premis paper ULMFiT tahun 2018
- Gagasan dasar ULMFiT adalah bahwa model yang mahir melakukan language modeling akan membangun abstraksi internal yang kaya dan lapisan kemampuan bertingkat
- Lapisan-lapisan itu kemudian bisa diterapkan ke tugas lain hanya dengan sedikit fine-tuning
- LLM masa kini jauh lebih besar daripada model yang dibahas dalam ULMFiT, sehingga bisa memiliki lapisan abstraksi yang lebih kaya
- Fine-tuning pada soal sains pilihan ganda mungkin lebih mirip proses memunculkan kemampuan dan pengetahuan yang sebenarnya sudah ada di dalam model
- Penyesuaian bobot yang dibutuhkan mungkin tidak banyak
- Model bahasa pralatih dengan classification head acak kecil bisa berada pada posisi yang memungkinkan pergerakan mulus menuju konfigurasi bobot yang baik
- Pada optimizer Adam, gradien yang konsisten dan mulus bisa memperbesar effective dynamic learning rate dan menghasilkan langkah yang lebih besar
Pertanyaan baru untuk strategi fine-tuning
- Jika model belajar sangat cepat, asumsi dasar dalam cara pelatihan yang ada bisa terguncang
- Model yang belajar lambat bisa melihat beragam data selama banyak epoch dan secara bertahap mengekstrak informasi yang dapat digeneralisasi
- Model yang belajar cepat bisa langsung mengingat contoh yang dilihat dan memunculkan fenomena lain
- Catastrophic forgetting bisa menjadi lebih menonjol
- Setelah melihat 10 contoh relasi yang sangat umum lalu 1 contoh tandingan yang lebih jarang, model bisa mengingat contoh tandingan itu sambil sedikit menurunkan ingatan terhadap 10 contoh sebelumnya
- Efek pencegahan overfitting dari augmentasi data juga bisa melemah
- Jika LLM mampu mengekstrak representasi informasi input dengan baik, maka pencampuran melalui paraphrasing atau back-translation bisa jadi tetap memberi informasi yang pada dasarnya sama
- Kandidat langkah mitigasi mencakup dropout dan stochastic depth
- Dropout sudah sedikit dipakai dalam teknik fine-tuning seperti LoRA
- Stochastic depth tampaknya belum digunakan secara berarti di NLP
- Cara lain adalah mempertahankan pencampuran dataset yang kaya sepanjang pelatihan
- Llama Code mengalami catastrophic forgetting ketika performa coding meningkat tetapi kemampuan lain memburuk cukup besar
- Saat itu proporsi data non-code adalah 10%
- Dengan campuran yang mendekati 50/50, mungkin saja performa coding bisa didapat tanpa kehilangan kemampuan yang sudah ada
1 komentar
Pendapat Hacker News
Terima kasih sudah memposting tulisan ini ke HN. Saya salah satu rekan penulis tulisan ini, dan proses menggali fenomena aneh penghafalan cepat oleh LLM bersama Johno benar-benar menarik
Saya sudah bekerja dengan jaringan saraf selama 30 tahun dan melakukan fine-tuning model bahasa sejak 2017, tetapi perilaku ini sangat mengejutkan. Orang lain juga pernah melihat fenomena serupa pada LLM, tetapi saya belum melihat analisis seperti ini, dan mungkin saja ada sesuatu yang kami lewatkan
Model 12B mengalami penurunan performa rata-rata -87,3%, 84B -61,6%, sedangkan 562B hanya -3,9%. Rasanya seperti hampir mencapai suatu wawasan, dan saya penasaran apakah menghindari catastrophic forgetting mungkin sekadar masalah skala
Saya bukan peneliti, tetapi jelas bahwa tidak semua LLM punya arsitektur yang sama, dan bahkan arsitektur yang mirip pun bisa berevolusi sehingga berperilaku cukup berbeda secara fungsional pada input yang sama. Namun banyak tulisan tampaknya memperlakukan LLM seolah-olah hanya ada satu arsitektur dan satu model
no_grad, sepertinya kita bisa menghitung secara tepat seberapa banyak model belajar dalam satu langkahJika selisih antara loss pertama dan loss kedua diplot pada level batch atau observasi/pertanyaan, hasilnya mungkin menarik
transformers, dan saat itu juga penghafalan dianggap sebagai alasan yang kuat. Senang melihat pihak lain mencapai kesimpulan yang samahttps://github.com/huggingface/transformers/issues/18730
Saya tidak tahu apakah orang benar-benar memakai istilah “over confident” dalam arti seperti ini. Istilah itu cukup menyesatkan, dan yang terjadi di sini lebih tepat disebut overfitting
Jika data dianggap sebagai titik-titik, model yang melakukan generalisasi dengan baik akan berusaha membuat fungsi paling sederhana yang cukup pas dengan titik-titik data latih. Namun jika pelatihan terus berlanjut, parameternya bisa menjadi sangat besar, dan kurva fungsi dapat berosilasi besar jauh di luar rentang data nyata demi melewati data latih secara tepat
Jadi secara teknis ia lebih cocok dengan data latih, tetapi menjadi fungsi aneh yang menghasilkan output ekstrem pada data baru sehingga generalisasinya hampir seburuk mungkin. Namun overfitting tidak sama dengan penghafalan. Model besar dapat menghafal dataset kecil tanpa overfitting, dan karena parameternya sangat banyak, hanya perlu sedikit perubahan untuk mencocokkan data latih. Dalam kasus ini pelatihan berhenti tetapi generalisasi tidak terjadi, dan kondisi semacam ini disebut underdetermined
Ada juga model yang mengeluarkan output sekaligus tingkat keyakinan, sehingga “overconfidence” juga bisa berarti model secara keliru memprediksi keyakinan tinggi, yakni deviasi kesalahan yang rendah
argmaxpada probabilitas output dipandang sebagai sebuah fungsi, ini sama sekali bukan overfitting. Akurasi klasifikasi pada data yang belum dilihat, yaitu set validasi, terus membaikIntinya di sini adalah masalah kalibrasi: https://en.m.wikipedia.org/wiki/Calibration_(statistics). Artinya probabilitas output jaringan saraf tidak mencerminkan probabilitas observasi sebenarnya. Jika probabilitas secara sistematis diperkirakan terlalu rendah, itu disebut “underconfidence”; jika terlalu tinggi, “overconfidence”
Dalam kasus ini, meskipun kalibrasi memburuk sehingga loss validasi naik, classifier untuk data yang belum dilihat masih bisa terus membaik
Di sini akurasi data validasi terus membaik, tetapi ketika salah, model salah dengan keyakinan yang lebih tinggi daripada sebelumnya. Misalnya dulu ia salah sambil 60% yakin jawabannya X, sekarang ia tetap salah menjawab X tetapi dengan keyakinan lebih tinggi seperti 70%. Jadi ini bentuk overfitting yang aneh, dan istilah yang lebih spesifik, “overconfidence”, tampaknya cukup tepat
Saya bukan ahli LLM, tetapi dari sudut pandang machine learning umum, ini tidak terlalu mengejutkan
Sudah ada model generatif dengan puluhan miliar parameter yang memberikan sejumlah massa probabilitas pada sampel fine-tuning. Lalu kita menghitung gradien yang menaikkan massa probabilitas itu dan bergerak satu langkah ke arah tersebut. Pada akhirnya, penulis tampaknya terkejut bahwa satu langkah itu dapat sangat menaikkan massa probabilitas sampel
Namun model generatif sangat overparameterized, dan sudah memberikan sejumlah massa probabilitas pada sampel fine-tuning. Justru akan lebih mengejutkan jika di dalam ruang parameter berdimensi puluhan miliar tidak ada arah yang dapat dengan cepat menaikkan probabilitas sejumlah sampel yang relatif sedikit
Bukankah ini sudah cukup jelas mengikuti fakta bahwa sebagian besar LLM saat ini dilatih hanya satu epoch?
Jika hanya dilatih satu epoch, itu berarti sekadar melewati data untuk kedua kalinya saja sudah menimbulkan kekhawatiran overfitting. Namun ini tampaknya agak bertentangan dengan hasil makalah ini [0], yang menemukan bahwa data lama tetap sama baiknya dengan data baru hingga setidaknya 4 epoch
[0]: https://arxiv.org/abs/2305.16264
Mungkin tidak terkait, tetapi saya pernah meminta ChatGPT menulis kode untuk mengontrol detail filter kolom spreadsheet Excel secara terprogram di PowerShell.
Semua yang dicoba tidak berhasil; sudah hampir sekali, tetapi tetap tidak berfungsi. Pada akhirnya saya menemukan kode C# yang memperbaiki masalahnya, menempelkannya ke ChatGPT dan memintanya membaca lalu memperbaiki masalah itu di PowerShell. Ia mengatakan memahami solusinya, memodifikasi skripnya, dan hasilnya bekerja sempurna.
Entah kenapa perilaku ini terasa cukup membuka mata. Ketika saya memberikan materi yang belum dipelajarinya di dalam pertanyaan, ia bisa menyelesaikannya. Dari sudut pandang pembelajaran bahasa saya paham bagaimana itu mungkin, tetapi rasanya benar-benar keren bahwa LLM bisa melakukan hal seperti itu.
Kemampuan hal-hal ini untuk berbicara dan menjelaskan begitu baik sehingga mudah dipersonifikasikan. Saking bagusnya, kita jadi menerima pencapaian besar yang terasa seperti sihir dari rekayasa statistik itu sebagai blok dasar yang sepele. Padahal blok itu adalah batu bata dari emas.
Menerjemahkan, mengedit, merangkum, memperluas, dan mengekstrapolasi dari bahasa alami ke kode, dari teks ke audio, dari gambar ke gambar, dari satu bahasa alami ke bahasa alami lain—itulah yang dilakukan model-model ini. “Pengetahuan” yang melekat hanyalah konteks.
Saya melihat embedding vektor agak berbeda: itu semacam pengatalogan semantik seperti Dewey decimal, yang memungkinkan pencarian. Namun mengambil data langsung dari model seperti “siapa presiden AS pada 1984” secara pribadi tidak terlalu menarik bagi saya.
Saya penasaran apakah LLM pernah digunakan untuk memperkaya data pelatihannya sendiri.
Saya bertanya-tanya apa yang akan terjadi jika LLM dilatih dengan sedikit input, lalu menghasilkan banyak input sintetis dan menambahkannya ke data pelatihan. Saya membayangkannya seperti semacam “bermimpi”. Mungkin itu hanya akan menambahkan noise, tetapi karena LLM bisa memperkaya konteksnya sendiri dan memperbaiki keluarannya lewat “berpikir keras”, mungkin hal yang sama bisa dilakukan pada data pelatihan?
Namun membuat data pelatihan sintetis dengan model besar untuk melatih model lain yang lebih kecil adalah hal umum. Dengan cara ini, pengetahuan satu model bisa dipindahkan ke model lain.
Saya merasa judulnya menyesatkan.
Dalam konteks pembelajaran, belajar dari satu contoh itu justru diinginkan, sedangkan menghafal tidak, bukan? Yang pertama adalah tujuan yang dikejar agar sesuai dengan cara hewan belajar, sementara yang kedua adalah mode kegagalan yang sering terjadi. Tulisan itu tampaknya menunjukkan contoh hafalan yang tidak dijelaskan, bukan pembelajaran.
Saat melatih ViT dari awal, saya melihat kurva loss yang mirip, dan itu selalu mengganggu saya, tetapi ada kekhawatiran yang lebih besar sehingga saya tidak menyelaminya lebih jauh.
Bedanya, loss pelatihan naik selama tiap epoch. Penurunan tajam di antara epoch cukup besar sehingga secara keseluruhan loss pelatihan turun, dan loss validasi juga terus turun. Modelnya menjadi cukup dekat dengan state-of-the-art, jadi tampaknya “normal”.
Saya belum pernah melatih jaringan saraf konvolusional pada skala ini, jadi tidak tahu apakah fenomena serupa juga terlihat di sana, tetapi kalau memang ada, rasanya seseorang pasti sudah menyebutkannya. Jadi saya berpikir kurva loss yang aneh seperti ini mungkin merupakan ciri khusus model berbasis Transformer.
Model cukup lama hampir tidak bergerak ke mana-mana dan tampak sama sekali tidak berguna, lalu pada suatu titik setelah beberapa siklus pelatihan, ketika bobot menemukan semacam minimum pada permukaan error, tiba-tiba ia mulai bekerja dengan benar. Itu karena Transformer telah mempelajari abstraksi yang bekerja pada semua data input dari sudut pandang mekanisme perhatian. Bayangkan cara Anda memindai kalimat saat membaca. Saya menjelaskannya dari ingatan tentang tulisan yang pernah saya lihat di HN, jadi ini bukan penjelasan yang sempurna.
Sekarang saya bertanya-tanya apakah ini berarti secara komputasi efisien untuk membuat informasi seperti konteks chat saat ini dipelajari atau dihafal secara langsung sebagai bagian dari bobot model.
Encoding one-shot yang sangat dikuasai hippocampus memungkinkan pengalaman menjadi memori yang dapat dicari dan terhubung dengan konsep semantik yang telah dipelajari sebelumnya. Bahkan, kemampuan ini membaik dari masa kanak-kanak ke dewasa seiring semakin kayanya konseptualisasi semantik atas peristiwa.
Jika penghafalan peristiwa pada LLM dipercepat oleh kerangka semantik yang mendalam seperti ini, bisakah ini menyediakan jalur menuju jendela konteks panjang?
Untuk model lokal yang lebih kecil daripada GPT-3.5/4, mungkin bisa dilakukan. Selain itu, perlu diputuskan apa yang disimpan sebagai memori jangka panjang dan apa yang disimpan sebagai memori jangka pendek.
Jika ini benar, hal itu mendukung gagasan bahwa nilai dataset yang dikurasi manusia yang jauh lebih kecil jauh lebih tinggi daripada dataset sintetis yang dihasilkan LLM
Contohnya Apple Sim. Ini adalah repositori model 3D interior; dengan mengendalikan renderer, kita bisa menghasilkan informasi pada berbagai lapisan, lalu menggunakannya pada foto nyata. Karena pendekatan seperti ini digunakan di seluruh ranah gambar, ruang vektor terasa cukup alami untuk embedding. Secara aljabar, tidak perlu menambahkan banyak struktur
Jika domainnya sangat bersifat aljabar, contoh yang benar juga bisa dibuat secara acak, dan saya ingin merekomendasikan situasi seperti itu kepada siapa pun
Namun, saya pikir suatu saat prinsip tidak ada makan siang gratis akan berlaku, dan data sintetis juga tidak selalu memperhatikan proses pembentukan data untuk outlier
ChatGPT 4 sudah digunakan sebagai model oracle untuk melatih model AI sehari-hari. Model oracle yang benar-benar raksasa akan membuat sebagian besar hal tidak diperlukan, kecuali input manusia yang sangat kecil