کد رو نخون، تاریخچهشو بخون
خلاصهٔ کاملتر
این پست از وبلاگ ptidej با یه سؤال ساده شروع میشه: وقتی وارد یه پروژهٔ جدید میشی واقعاً چی کار میکنی؟ کد رو باز میکنی و میخونی و خیلی زود به چیزای عجیب میرسی؛ یه شرط بیربط، پارامتری که هیچکس پاسش نمیده، یا کامنتی که نوشته «پاکش نکن» و هیچ توضیحی هم کنارش نیست. به گفتهٔ نویسنده، خود کد نمیتونه بگه چرا اینا اونجان و فقط تاریخچه میتونه.
جرقهٔ پست، مصاحبهٔ مجلهٔ Quanta با Naomi Saphra بوده؛ پژوهشگر مؤسسهٔ Kempner هاروارد که روی interpretability کار میکنه (یعنی تلاش برای فهمیدن اینکه داخل یه مدل زبانی چه خبره). حرفش اینه که بیشتر پژوهشها مدل تمامشده رو وارسی میکنن، ولی جای درست برای نگاه کردن، خودِ فرایند آموزشه. جملهبندی خودش اینه: هیچچیز تو هوش مصنوعی معنا نداره مگه در پرتو stochastic gradient descent، همون الگوریتمی که موقع آموزش وزنهای مدل رو قدمبهقدم تنظیم میکنه.
نویسنده میگه این دقیقاً چیزیه که حوزهٔ mining software repositories بیست ساله میگه: از روی وضعیت فعلی یه کدبیس نمیشه فهمیدش. باید دید کدوم فایلها با هم تغییر میکنن، کدوم ماژول مدام دستکاری میشه و اون وصلهٔ عجیب کِی و سر چه خرابیای اضافه شده. به قول خودش git blame اصلاً برای همین ساخته شده، چون خودِ محصول توضیحی دربارهٔ خودش نمیده.
بهترین مثال Saphra نورونهای vestigial هست، یعنی تهموندهای که از قبل مونده ولی دیگه کاری نمیکنه. تو مدلهای دستهبندی تصویر بعضی نورونها فقط برای یه دستهٔ خاص مثل عکس گربه شلیک میکنن و انگار قلب ماجرا هستن. ولی وقتی موقع آموزش جلوی شکلگیریشون رو گرفتن، مدل بهتر شد. یعنی ساختاری که ضروری به نظر میرسید فقط یه تهماندهٔ اوایل آموزش بود و داشت جلوی مدل رو میگرفت. نویسنده میگه ما اسم خودمون رو براش داریم: کد مرده.
دو نکتهٔ دیگه هم از مصاحبه برداشته. اول اینکه Saphra مدل رو اول روی متن تمیز و ساختاریافته آموزش داده و بعد رفته سراغ متن شلخته، و نتیجه برعکس شده: مدل به راهحل آسون چسبیده و به جای یاد گرفتن قاعدهٔ کلی شروع کرده به حفظ کردن استثناها و دیگه هم جمع نشده، که نویسنده اینو همون بدهی فنی میدونه. دوم اینکه شرکتها معمولاً checkpointهای میانی آموزش رو به پژوهشگرها نمیدن، پس فقط حالت نهایی میمونه؛ چیزی شبیه دیباگ کردن یه کرش بدون هیچ لاگی.
نکات کلیدی:
- Naomi Saphra پژوهشگر مؤسسهٔ Kempner هاروارده و به جای مدل نهایی، خود فرایند آموزش رو مطالعه میکنه.
- جلوگیری از شکلگیری نورونهای تکدستهای موقع آموزش، به جای خراب کردن مدل، عملکردش رو بهتر کرد.
- آموزش مرحلهای از متن تمیز به متن شلخته باعث شد مدل استثناها رو حفظ کنه و نتونه جبران کنه.
- دو بار اجرای یه setup یکسان دو مدل متفاوت میده؛ Saphra این تصادفیبودن رو به جای نویز، ابزار سنجش شواهد میدونه.
- شرکتها checkpointهای میانی آموزش رو کم در اختیار پژوهشگرها میذارن، برخلاف تاریخچهٔ گیت که برای هر کدبیسی موجوده.




