چجوری مدل‌های زبانی خودشون رو قوی‌تر می‌کنن؟ بررسی مدل SOAR و برنامه‌نویسی تکاملی!

Fall Back

احتمالاً تا حالا شنیدی که مدل‌های زبانی (مثل ChatGPT) خیلی قوی شدن تو ساختن برنامه‌ها یا حتی جواب دادن به سوالای پیچیده‌ی برنامه‌نویسی. اما راستش هنوز هم جاهایی هست که این مدل‌ها کم میارن و نمی‌تونن همون دفعه‌ی اول مشکل رو حل کنن. مثلاً بعضی وقت‌ها یه وظیفه‌ی برنامه‌نویسی انقدر پیچیده میشه که حتی قوی‌ترین مدل‌ها هم نیاز به چند بار تلاش دارن.

اینجا بود که یه ایده جذاب اومد وسط: «اگه مدل‌های زبانی خودشون بتونن به مرور یاد بگیرن و قوی‌تر بشن چی؟» این مقاله دقیقاً داره درباره‌ی همین ایده صحبت می‌کنه و یه روش جدید به اسم SOAR رو معرفی می‌کنه. اسمش رو اگه بخوای بدونی، SOAR یعنی Self-imprOving lAnguage model foR program synthesis؛ یعنی «مدل زبانیِ خودش-بهبوددهنده برای ساختن برنامه». خیلی اسم خفنیه!

حالا سوال اینه: SOAR دقیقاً چی کار می‌کنه؟

بیخیال روش‌هایی که فقط یه بار سعی می‌کنن برنامه بنویسن! SOAR اومده از یه ایده‌ی قدیمی ولی باحال استفاده کرده: روش‌های تکاملی. این روش‌ها همون جوری که طبیعت موجودات رو تغییر میده و نسل به نسل قوی‌تر میشن، تو دنیای برنامه هم راه‌حل‌ها رو هی بهتر و بهتر می‌کنن. یعنی چند تا کاندید برنامه می‌ده بیرون، بعد هر سری روشون کار می‌کنه و اونا رو بهبود می‌ده یا با هم ترکیب‌شون می‌کنه تا یکی‌شون بشه جواب درست.

اما قضیه اینجا تموم نمیشه. SOAR یه مرحله‌ی «یادگیری از گذشته» هم داره. یعنی چی؟ یعنی مدل میاد تلاش‌هایی که کرده رو نگاه می‌کنه (چه درست بوده چه غلط) و اونها رو به عنوان داده‌ی آموزش به خودش میده تا دفعه‌ی بعد تو نمونه‌گیری و بهتر کردن برنامه‌ها، هوشمندانه‌تر عمل کنه. این به این میگن “hindsight learning” یا همون یادگیری از اتفاقاتی که قبلاً افتاده؛ یعنی مدل به عقب نگاه می‌کنه، درس می‌گیره و تو تلاشای بعدی حرفه‌ای تر میشه.

توی هر دور (iteration)، این مدل دو کار انجام میده:

  1. یه جست‌وجوی تکاملی راه می‌ندازه با کمک LLM (همون Large Language Model یا مدل زبان بزرگ)‌ خودش، کلی راه‌حل می‌سازه، یکی رو انتخاب می‌کنه، و بعد هی بهترش می‌کنه.
  2. بعدش میاد نتیجه‌ها رو بررسی می‌کنه و تبدیل‌شون می‌کنه به داده‌های آموزشی جدید برای خودش. اینطوری دفعه‌ی بعد که می‌خواد برنامه بسازه یا بهتر کنه، از تجربه‌هاش استفاده می‌کنه و احتمال موفقیتش میره بالا.

این کار باعث میشه مدل دیگه از حالتِ «مدل ثابت» خارج بشه – یعنی هر سری یه چیز تکراری تحویل نده! بلکه خودش هی از خودش یاد می‌گیره و قوی‌تر میشه. انگار داری یه ربات خودآموز می‌سازی که هر بار که امتحان میده و بازنده میشه، میره و درسشو می‌خونه و قوی‌تر برمی‌گرده!

تو این مقاله، SOAR رو روی یه آزمون خیلی سخت به اسم ARC-AGI امتحان کردن. حالا ARC-AGI چیه؟
— ARC-AGI در واقع یه مجموعه تست به شدت دشوار برای بررسی پیشرفت مدل‌هایی‌ه که قراره شبیه انسان فکر کنن و برنامه بنویسن. هر کی بتونه ARC-AGI رو خوب رد کنه، یعنی واقعاً فهم برنامه‌نویسی‌اش بالاست!

خب، SOAR تونسته تو این تست سخت کلی رکورد رو بترکونه. مثلاً تونسته ۵۲٪ از تست‌های عمومی ARC-AGI رو حل کنه. این عدد خیلی باحاله چون مدل‌های معمولی قبلاً کمتر از این عدد جواب می‌دادن. تازه این فقط برای یک سایز خاص مدل نیست – تو سایزهای مختلف مدل (یعنی مدل کوچیک تا بزرگ)، SOAR تونسته پیشرفت نشون بده.

یه نکته خیلی جذاب دیگه هم هست: این روش کمک کرده که مدل موقع تست شدن هم سریع‌تر خودشو سازگار کنه! یعنی اگه مدل رو بزاری سر یه وظیفه‌ی جدید، سریع‌تر و بهتر با شرایط جدید کنار میاد و برنامه‌ی درست می‌نویسه. این ویژگی خیلی مهمه تو دنیای هوش مصنوعی.

آخرش هم یه خبر خوب: بچه‌های تیم SOAR کد منبعش رو رایگان گذاشتن رو گیت‌هاب! اگه اهل این کارایی، می‌تونی از لینک زیر بری و خودت کشفش کنی یا حتی بهترش کنی:
https://github.com/flowersteam/SOAR

جمع‌بندی: اگر دوست داری بدونی آینده‌ی مدل‌های زبانی هوشمند و خودیادگیر چیه، SOAR یکی از جذاب‌ترین نمونه‌هاشه. هم از طبیعت الهام گرفته (تکامل)، هم از خودش یاد می‌گیره، هم تو تست‌های سخت حسابی خودشو نشون داده. حالا باید منتظر بمونیم ببینیم مرحله‌ی بعدی مدل‌های زبانی چیه و کِی می‌تونن همه‌ی تست‌ها رو حل کنن! 😎

منبع: +