عامل‌های هوشمندمدل‌های زبانیهوش مصنوعی
موضوعات داغ

نحوه عملکرد ChatGPT (برای مبتدی‌ها)

دو سال و نیم پیش انسانیت شاهد آغاز بزرگ‌ترین دستاورد خود بود. یا شاید بهتر باشد بگویم: با آن آشنا شدیم: ChatGPT. از زمان عرضه آن در نوامبر ۲۰۲۲، اتفاقات زیادی رخ داده است و صادقانه بگویم هنوز در دل این آشوب فناوری هستیم. هوش مصنوعی با سرعت سرسام‌آوری پیش می‌رود و من می‌خواستم بفهمم واقعاً پشت پرده چه اتفاقی می‌افتد.

این مطلب تا حد زیادی از مقاله فوق‌العاده فنی Chip Huyen درباره RLHF و نحوه عملکرد ChatGPT الهام گرفته شده است: RLHF: Reinforcement Learning from Human Feedback. در حالی که مقاله اصلی به جزئیات فنی عمیق می‌پردازد، هدف این متن ارائه مفاهیم به روشی ساده‌تر برای توسعه‌دهندگانی است که تازه وارد دنیای هوش مصنوعی شده‌اند.

برای درک بهتر، من کاملاً وارد فضای «نردی» شدم:

  • تعداد زیادی ویدئوی Andrej Karpathy را تماشا کردم
  • کتاب Stephen Wolfram با عنوان What Is ChatGPT Doing … and Why Does It Work? را خواندم و حتی نسخه کتاب را خریدم
  • در حال حاضر نیمه راه کتاب AI Engineering: Building Applications with Foundation Models اثر Chip Huyen هستم

این مطلب تلاش من برای خلاصه کردن آموخته‌هایم است؛ یک مرور ساده درباره چگونگی عملکرد چیزی مثل ChatGPT. چون صادقانه بگویم، اگر شما با هوش مصنوعی کار می‌کنید (حتی فقط از آن استفاده می‌کنید)، باید درک ابتدایی از اتفاقات پشت صحنه داشته باشید.

با کمی وقت گذاشتن روی این موضوع، مهارت شما در موارد زیر به شدت افزایش می‌یابد:

  • نوشتن prompt بهتر
  • رفع خطا (debugging)
  • ساخت ابزارهای هوش مصنوعی
  • همکاری هوشمندانه با این سیستم‌ها

بیایید شروع کنیم.

وقتی از ChatGPT استفاده می‌کنید، چه اتفاقی می‌افتد؟

تکمیل پیشرفته: ChatGPT چگونه حدس می‌زند بعد چه می‌آید؟

فکر کنید وقتی روی گوشی خود پیام می‌نویسید و گوشی کلمه بعدی را پیشنهاد می‌دهد. ChatGPT بر اساس همان اصل عمل می‌کند، اما با سطحی بسیار پیشرفته‌تر. به جای نگاه کردن فقط به آخرین کلمه، به همه چیزی که تا کنون نوشته‌اید نگاه می‌کند.

متن شما به «توکن» تبدیل می‌شود

توکن‌ها مانند واحدهای واژگانی هستند که مدل‌های هوش مصنوعی آنها را می‌فهمند. این‌ها همیشه کلمات کامل نیستند؛ گاهی یک توکن یک کلمه کامل مثل «hello» است، گاهی بخشی از یک کلمه مثل «ing» و گاهی فقط یک کاراکتر است. شکستن متن به این واحدها به مدل کمک می‌کند زبان را مؤثرتر پردازش کند.

مثالی ساده:
جمله‌ی "I love programming in JavaScript" ممکن است به این توکن‌ها تقسیم شود:
['I', ' love', ' program', 'ming', ' in', ' Java', 'Script']

متوجه می‌شویم که «programming» به «program» و «ming» تقسیم شده و «JavaScript» به «Java» و «Script». این همان چیزی است که مدل می‌بیند.

این توکن‌ها به اعداد تبدیل می‌شوند

مدل متن را نمی‌فهمد، بلکه با اعداد کار می‌کند. بنابراین هر توکن به یک عدد منحصر به فرد تبدیل می‌شود، مثل:
[20, 5692, 12073, 492, 41, 8329, 6139]

مدل یک بازی پیچیده «چه چیزی بعد می‌آید؟» را انجام می‌دهد

بعد از پردازش متن، ChatGPT احتمال هر توکن بعدی ممکن در دایره لغات خود (که شامل صدها هزار گزینه است) را محاسبه می‌کند.

مثال: اگر تایپ کنید "The capital of France is"، مدل ممکن است محاسبه کند:

  • "Paris": احتمال ۹۲٪
  • "Lyon": احتمال ۳٪
  • " located": احتمال ۱٪
  • [هزاران احتمال دیگر با شانس کمتر]

سپس یک توکن را بر اساس این احتمالات انتخاب می‌کند (معمولاً توکن با احتمال بالا، اما گاهی کمی تصادف برای خلاقیت هم وارد می‌شود).

این فرایند توکن به توکن تکرار می‌شود

بعد از انتخاب یک توکن، آن را به متن دیده شده اضافه می‌کند و احتمالات توکن بعدی را محاسبه می‌کند. این کار ادامه می‌یابد تا پاسخ کامل شود.

مثال قابل درک

این فرآیند شبیه حدس زدن آخرین کلمه در جمله‌ی "Mary had a little ___" است. شما احتمالاً می‌گویید "lamb" چون این الگو را دیده‌اید. ChatGPT میلیاردها نمونه متن دیده است، بنابراین می‌تواند حدس بزند چه چیزی معمولاً در زمینه‌های مختلف بعد می‌آید.

خودتان امتحان کنید

می‌توانید از توکنایزر تعاملی dqbd استفاده کنید تا ببینید متن چگونه به توکن‌ها تقسیم می‌شود.

تصور کنید پیشرفته‌ترین «تکمیل خودکار» دنیا را دارید

ChatGPT در واقع «تفکر» نمی‌کند؛ بلکه بر اساس الگوهایی که از متن‌های گذشته یاد گرفته، پیش‌بینی می‌کند که متن بعدی چه باید باشد.

حالا که می‌دانیم ChatGPT چگونه توکن‌ها را پیش‌بینی می‌کند، بیایید فرآیند جذابی را بررسی کنیم که باعث می‌شود مدل بتواند این پیش‌بینی‌ها را انجام دهد. چگونه یک مدل یاد می‌گیرد متن شبیه انسان تولید کند و بفهمد؟

فرآیند سه مرحله‌ای آموزش

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

یک تصویر معروف در فضای AI این مفهوم را به شکل طنزآمیز نشان می‌دهد: مدل قبل از آموزش دقیق (pre-trained) داده‌های عظیمی از اینترنت را جذب کرده و می‌تواند خطرناک یا مضر باشد. «چهره دوستانه» نشان می‌دهد که با تنظیم دقیق و همسو کردن مدل، این مدل خام به چیزی مفید و ایمن برای تعامل با انسان تبدیل می‌شود.

۱. پیش‌آموزش: یادگیری از اینترنت

مدل مقادیر بسیار زیادی از متن‌های اینترنتی را دانلود و پردازش می‌کند. وقتی می‌گویم «بسیار زیاد» واقعاً منظورم همین است:

  • GPT-3 بر روی ۳۰۰ میلیارد توکن آموزش دیده (مثل خواندن میلیون‌ها کتاب!)
  • LLaMA بر روی ۱.۴ تریلیون توکن آموزش دیده
  • CommonCrawl، یکی از منابع اصلی داده، هر ماه حدود ۳.۱ میلیارد صفحه وب را جمع‌آوری می‌کند (با ۱.۰ تا ۱.۴ میلیارد URL جدید هر بار)

در مرحله پیش‌آموزش چه اتفاقی می‌افتد؟

  • شرکت‌هایی مانند OpenAI داده‌های خام اینترنت را فیلتر می‌کنند
  • اسپم، محتوای بزرگسالان، سایت‌های آلوده و غیره حذف می‌شوند
  • متن‌های پاک‌شده به توکن تبدیل می‌شوند
  • مدل یاد می‌گیرد توکن بعدی در یک دنباله چه خواهد بود

۲. تنظیم دقیق تحت نظارت: یادگیری نقش دستیار

اینجاست که جادو رخ می‌دهد: تبدیل یک پیش‌بینی‌کننده ساده متن به یک دستیار هوشمند. فکر کنید: پس از پیش‌آموزش، مدل اساساً فقط در تکمیل خودکار بسیار خوب است. می‌تواند حدس بزند کلمات بعدی چه هستند، اما نمی‌داند چگونه مکالمه داشته باشد یا مفید باشد.

نقش انسان‌ها در آموزش

  • مربیان متخصص هزاران نمونه مکالمه تولید می‌کنند
  • این مربیان معمولاً تحصیلات دانشگاهی دارند (۹۰٪ آنها دارای مدرک دانشگاهی هستند)
  • هر مربی باید آزمون سختی را بگذراند
  • آنها بین ۱۰،۰۰۰ تا ۱۰۰،۰۰۰ نمونه آموزشی تولید می‌کنند

نمونه‌ای واقعی از داده‌های آموزشی OpenAI

انسان: «Serendipity به معنای وقوع و توسعه رویدادها به صورت تصادفی و خوشایند است. این کلمه را در یک جمله استفاده کن.»
دستیار: «برخورد با مارگارت و آشنا شدن با تام یک نمونه خوشایند از serendipity بود.»

تفاوت پیش‌آموزش و تنظیم دقیق

فقط پیش‌آموزش (مرحله ۱):

انسان: می‌توانی به من توضیح دهی recursion در برنامه‌نویسی چیست؟
مدل: recursion زمانی است که یک تابع خودش را فراخوانی می‌کند. مثال در پایتون:

def factorial(n):
    if n == 0:
        return 1
    return n * factorial(n-1)

این تابع فاکتوریل یک عدد را با recursion محاسبه می‌کند. برای اطلاعات بیشتر، به سایت www.codingsite.com مراجعه کنید یا دوره پیشرفته ۴۹.۹۹ دلاری ما را بخرید!

پس از تنظیم دقیق (مرحله ۲):

انسان: می‌توانی به من توضیح دهی recursion در برنامه‌نویسی چیست؟
دستیار: recursion را به شکلی واضح و مفید توضیح می‌دهم. recursion زمانی است که یک تابع خودش را برای حل یک مسئله با تقسیم آن به زیرمسائل مشابه فراخوانی می‌کند. مثال ساده:

تصور کنید بین دو آینه به خود نگاه می‌کنید – نسخه‌های کوچکتری از خودتان را بی‌نهایت می‌بینید. در برنامه‌نویسی هم مشابه است:

  1. تابع بازگشتی یک حالت ساده را مدیریت می‌کند (Base Case)
  2. برای حالت‌های بزرگتر، مسئله را تقسیم کرده و خودش را فراخوانی می‌کند
  3. این کار تا رسیدن به Base Case ادامه دارد

می‌خواهید یک مثال عملی در کد هم نشان بدهم؟

تفاوت‌ها

  • مدل پیش‌آموزش فقط بر اساس داده‌های اینترنت، توکن‌های محتمل بعدی را پیش‌بینی می‌کند
  • ممکن است تبلیغات یا محتوای نامناسب ارائه دهد
  • نمی‌داند که باید یک دستیار باشد

مدل تنظیم‌شده:

  • می‌داند یک دستیار هوش مصنوعی است
  • لحن حرفه‌ای و کمک‌کننده دارد
  • توضیحات واضح ارائه می‌دهد
  • می‌پرسد کاربر به کمک بیشتری نیاز دارد یا نه
  • از محتوای نامناسب و تبلیغات دوری می‌کند

چیزی که مدل یاد می‌گیرد

از طریق این مثال‌ها، مدل می‌آموزد:

  • چه زمانی سوال‌های تکمیلی بپرسد
  • چگونه توضیحات را ساختاربندی کند
  • چه لحن و سبک زبانی استفاده کند
  • چگونه مفید باشد و در عین حال اخلاقی عمل کند
  • چه زمانی بگوید چیزی را نمی‌داند

نکته مهم: وقتی با ChatGPT صحبت می‌کنید، با یک هوش مصنوعی جادویی روبرو نیستید بلکه با مدلی تعامل می‌کنید که از طریق هزاران مکالمه آموزشی دقیق یاد گرفته پاسخ‌های مفید ارائه دهد. این مدل الگوهایی را دنبال می‌کند که از آموزش‌های انسانی به دست آورده است.

۳. یادگیری تقویتی: یادگیری برای بهبود (بهینه‌سازی اختیاری)

دو مرحله اول مثل مواد اولیه اصلی آشپزی هستند، بدون آن‌ها نمی‌توان غذا را درست کرد. مرحله سوم مانند داشتن یک سرآشپز حرفه‌ای است که طعم غذا را تست و دستور را بهینه می‌کند. این مرحله الزاماً ضروری نیست، اما کیفیت نتیجه را به شکل قابل توجهی بالا می‌برد.

یک مثال ملموس از این بهینه‌سازی:

انسان: پایتخت فرانسه کجاست؟

پاسخ‌های احتمالی مدل:

  • A: «پایتخت فرانسه پاریس است.»
  • B: «پاریس پایتخت فرانسه است. با جمعیتی بیش از ۲ میلیون نفر، این شهر به خاطر برج ایفل، موزه لوور و میراث فرهنگی غنی‌اش شناخته می‌شود.»
  • C: «اجازه بدهید درباره پایتخت فرانسه برایتان بگویم! 🗼 پاریس شهر بسیار زیبایی است! من خیلی آنجا را دوست دارم، البته چون من یک هوش مصنوعی هستم، هنوز به آنجا نرفته‌ام 😊 غذاها عالی هستند و…»

سپس رتبه‌بندی توسط ارزیابان انسانی انجام می‌شود:

  • پاسخ B بالاترین رتبه را می‌گیرد (اطلاعات مفید و مختصر)
  • پاسخ A رتبه متوسط دارد (صحیح اما کوتاه)
  • پاسخ C پایین‌ترین رتبه را می‌گیرد (زیاد گپ‌وگفت دارد و حاوی نظرات شخصی غیرضروری است)

مدل از این ترجیحات یاد می‌گیرد:

  • ارائه اطلاعات مفید اما نه بیش از حد، خوب است
  • تمرکز روی سوال مهم است
  • اجتناب از تجربه‌های شخصی جعلی بهتر است

فرآیند آموزش

  • مدل پاسخ‌های مختلفی به همان سؤال ارائه می‌دهد
  • هر پاسخ توسط مدل پاداش‌دهی (reward model) امتیاز می‌گیرد
  • پاسخ‌های با امتیاز بالا تقویت می‌شوند (مثل دادن تشویقی به سگ)
  • مدل به تدریج یاد می‌گیرد چه چیزی انسان‌ها را راضی می‌کند

یادگیری تقویتی از بازخورد انسانی (RLHF) مثل آموزش مهارت‌های اجتماعی به هوش مصنوعی است. مدل پایه دانش لازم را دارد (از پیش‌آموزش)، اما RLHF به آن می‌آموزد چگونه این دانش را به شکلی به کار ببرد که برای انسان‌ها مفید باشد.

چرا این مدل‌ها خاص هستند؟

برای فکر کردن به توکن‌ها نیاز دارند

برخلاف انسان‌ها، این مدل‌ها باید محاسبات خود را روی چندین توکن تقسیم کنند. هر توکن تنها مقدار محدودی از محاسبه را می‌تواند دریافت کند.

آیا تا به حال توجه کرده‌اید که ChatGPT مسائل را مرحله‌به‌مرحله حل می‌کند و فوراً به جواب نمی‌پرد؟ این فقط برای راحتی شما نیست، بلکه به این دلیل است که:

  • مدل تنها می‌تواند محاسبات محدودی برای هر توکن انجام دهد
  • با تقسیم منطق روی چند توکن، مسائل پیچیده‌تر را حل می‌کند
  • به همین دلیل درخواست «جواب فوری» اغلب منجر به پاسخ اشتباه می‌شود

مثال ملموس:

Prompt بد (جواب فوری):

«بدون توضیح، جواب نهایی را بده: هزینه خرید ۷ کتاب هرکدام ۱۲.۹۹ دلار با مالیات ۸.۵٪ چقدر است؟ فقط عدد نهایی.»

این روش بیشتر احتمال خطا دارد، چون امکان تقسیم محاسبات روی توکن‌ها را محدود می‌کند.

Prompt خوب (اجازه به تفکر توکنی):

«هزینه کل خرید ۷ کتاب هرکدام ۱۲.۹۹ دلار با مالیات ۸.۵٪ را حساب کن. لطفاً مراحل محاسبه را مرحله‌به‌مرحله نشان بده.»

این اجازه می‌دهد مدل مسئله را تقسیم کند:

  • هزینه پایه: ۷ × ۱۲.۹۹ = ۹۰.۹۳
  • مالیات فروش: ۹۰.۹۳ × ۰.۰۸۵ = ۷.۷۳
  • هزینه کل: ۹۰.۹۳ + ۷.۷۳ = ۹۸.۶۶ دلار

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

Context پادشاه است

آنچه این مدل‌ها می‌بینند بسیار متفاوت از آن چیزی است که ما می‌بینیم:

  • ما کلمات، جملات و پاراگراف‌ها را می‌بینیم
  • مدل‌ها شناسه توکن‌ها (اعدادی که نماینده قطعات متن هستند) را می‌بینند
  • یک Context Window محدود وجود دارد که مشخص می‌کند مدل چقدر می‌تواند هم‌زمان ببیند

وقتی متنی را در ChatGPT می‌گذارید، مستقیماً وارد این Context Window (حافظه کاری مدل) می‌شود. به همین دلیل وارد کردن اطلاعات مرتبط بهتر از این است که انتظار داشته باشید مدل چیزی را که آموزش دیده به یاد بیاورد.

مشکل «پنیر سوئیسی»

این مدل‌ها آنچه Andrew Karpathy آن را «توانایی‌های پنیر سوئیسی» می‌نامد دارند یعنی در بسیاری از حوزه‌ها فوق‌العاده‌اند، اما حفره‌های غیرمنتظره‌ای دارند:

  • می‌توانند مسائل پیچیده ریاضی را حل کنند، اما مقایسه ۹.۱۱ با ۹.۹ را اشتباه انجام دهند
  • می‌توانند کد پیچیده بنویسند، اما ممکن است تعداد کاراکترها را درست نشمارند
  • می‌توانند پاسخ‌های سطح انسانی تولید کنند، اما در مسائل ساده منطقی اشتباه کنند

این اتفاق به دلیل نحوه آموزش و فرایند توکن‌سازی است. مدل‌ها کاراکترها را مانند ما نمی‌بینند، آن‌ها توکن‌ها را می‌بینند، که برخی وظایف را غیرمنتظره سخت می‌کند.

چگونه از مدل‌های زبان بزرگ (LLM) به شکل مؤثر استفاده کنیم

پس از همه تحقیقات، این توصیه‌ها را دارم:

  • از آن‌ها به عنوان ابزار استفاده کنید، نه پیشگو: همیشه اطلاعات مهم را بررسی کنید
  • به آن‌ها «توکن» بدهید تا فکر کنند: اجازه دهید مرحله‌به‌مرحله استدلال کنند
  • دانش را در Context قرار دهید: اطلاعات مرتبط را وارد کنید، نه اینکه انتظار داشته باشید مدل همه چیز را به خاطر بسپارد
  • محدودیت‌های آن‌ها را درک کنید: با مشکل «پنیر سوئیسی» آشنا باشید
  • از مدل‌های استدلالی استفاده کنید: برای مسائل پیچیده، از مدل‌هایی استفاده کنید که مخصوص استدلال طراحی شده‌اند

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا