فصل ۱ — پیشآموزش
توسعهٔ مدلهای دنبالهای عصبی، مانند Transformerها [Vaswani et al., 2017]، همراه با پیشرفت یادگیری خودنظارتی (Self-supervised Learning) در مقیاس بزرگ، راه را برای درک و تولید عمومی زبان گشوده است. نیروی محرک اصلی این دستاورد، پیشآموزش (Pre-training) است: مؤلفههای مشترک را از سامانههای متعدد مبتنی بر شبکهٔ عصبی جدا میکنیم و سپس آنها را با استفاده از خودنظارتی روی حجم عظیمی از دادههای بدونبرچسب آموزش میدهیم. این مدلهای پیشآموخته بهعنوان مدلهای پایه (Foundation Models) عمل میکنند و میتوان آنها را با ریزتنظیم (Fine-tuning) یا پرامپتدهی (Prompting) بهسادگی برای وظایف گوناگون سازگار کرد. در نتیجه، الگوی رایج در پردازش زبان طبیعی (NLP) بهشدت دگرگون شده است. در بسیاری از موارد دیگر لازم نیست برای هر وظیفه، یادگیری نظارتشده را در مقیاس بزرگ از ابتدا انجام دهیم؛ کافی است یک مدل پایهٔ پیشآموخته را برای آن وظیفه سازگار کنیم.
اگرچه پیشآموزش در پژوهشهای جدید NLP محبوب شده است، این مفهوم به چند دهه پیش و سالهای آغازین یادگیری عمیق بازمیگردد. نمونههایی از تلاشهای اولیه برای پیشآموزش سامانههای یادگیری عمیق عبارتاند از یادگیری بدوننظارت برای شبکههای عصبی بازگشتی (RNN)، شبکههای عمیق پیشخور، خودرمزگذارها و روشهای دیگر [Schmidhuber, 2015]. در دورهٔ مدرن یادگیری عمیق، پیشآموزش دوباره رونق گرفت؛ بخشی از این رونق ناشی از یادگیری بدوننظارت در مقیاس بزرگ برای مدلهای مختلف تعبیهٔ واژه بود [Mikolov et al., 2013b; Pennington et al., 2014]. در همان دوره، پیشآموزش در بینایی ماشین نیز توجه زیادی جلب کرد؛ مدلهای ستونفقرات (Backbone) روی مجموعهدادههای برچسبخورده و نسبتاً بزرگی مانند ImageNet آموزش میدیدند و سپس برای وظایف پاییندستی مختلف به کار گرفته میشدند [He et al., 2019; Zoph et al., 2020].
پژوهش گسترده دربارهٔ پیشآموزش در NLP با توسعهٔ مدلهای زبانی مبتنی بر یادگیری خودنظارتی آغاز شد. این خانواده شامل نمونههای شناختهشدهای مانند BERT [Devlin et al., 2019] و GPT [Brown et al., 2020] است. ایدهٔ مشترک آنها این است که میتوان با آموزش مدل برای پیشبینی واژههای پوشاندهشده یا توکنهای متن در حجم عظیمی از داده، توانایی عمومی درک و تولید زبان را به دست آورد. با وجود سادگی ظاهری این رویکرد، مدلهای حاصل توانایی چشمگیری در مدلسازی ساختار زبانی نشان میدهند، هرچند بهطور صریح برای یادگیری چنین ساختاری آموزش داده نشدهاند. عمومیبودن وظایف پیشآموزش باعث میشود این سامانهها در طیف گستردهای از مسائل NLP عملکرد قدرتمندی داشته باشند و حتی از سامانههای نظارتشدهای که پیشتر با دقت طراحی شده بودند بهتر عمل کنند. در سالهای اخیر، مدلهای زبانی بزرگ پیشآموخته موفقیت بیشتری به دست آوردهاند و چشمانداز هیجانانگیزی برای دستیابی به هوش مصنوعی عمومیتر نشان دادهاند [Bubeck et al., 2023].
این فصل مفهوم پیشآموزش را در بستر NLP بررسی میکند. ابتدا مروری عمومی بر روشهای پیشآموزش و کاربردهای آنها ارائه میشود. سپس BERT بهعنوان نمونه به کار میرود تا نشان داده شود چگونه یک مدل دنبالهای از طریق یک وظیفهٔ خودنظارتی به نام مدلسازی زبانی ماسکشده (Masked Language Modeling) آموزش میبیند. پس از آن، روشهای سازگارکردن مدلهای دنبالهای پیشآموخته با وظایف مختلف NLP بررسی میشوند. توجه کنید که تمرکز این فصل عمدتاً بر الگوی پیشآموزش در NLP است؛ بنابراین جزئیات مدلهای زبانی بزرگ مولد در این فصل پوشش داده نمیشود و بحث کاملتر دربارهٔ آنها به فصلهای بعد موکول شده است.
۱.۱ مدلهای NLP پیشآموخته
بحث پیشآموزش در NLP معمولاً دو نوع مسئله را در بر میگیرد: مدلسازی دنباله (یا کدگذاری دنباله) و تولید دنباله. با وجود تفاوت شکل این مسائل، برای سادگی هر دو را با یک مدل واحد توصیف میکنیم.
o = g(x0, x1, ..., xm; θ) = gθ(x0, x1, ..., xm) (1.1)
در این رابطه، {x0, x1, ..., xm} دنبالهای از توکنهای ورودی است؛ x0 یک نماد ویژه مانند ⟨s⟩ یا [CLS] است که به ابتدای دنباله افزوده میشود؛ g(·; θ) ــ که بهصورت gθ(·) نیز نوشته میشود ــ یک شبکهٔ عصبی با پارامترهای θ است و o خروجی شبکهٔ عصبی را نشان میدهد. شکل خروجی o در مسائل مختلف متفاوت است. برای نمونه، در مسئلهٔ پیشبینی توکن (مانند مدلسازی زبان)، o یک توزیع روی واژگان است؛ در مسئلهٔ کدگذاری دنباله، o بازنمایی دنبالهٔ ورودی است که اغلب بهصورت دنبالهای از بردارهای حقیقی بیان میشود.
در اینجا دو مسئلهٔ بنیادی وجود دارد:
- بهینهسازی θ روی یک وظیفهٔ پیشآموزش. برخلاف مسائل استاندارد یادگیری در NLP، در پیشآموزش فرض نمیشود که از ابتدا وظیفههای پاییندستی مشخصی برای کاربرد مدل در اختیار داریم. هدف، آموزش مدلی است که بتواند در مجموعهای از وظایف مختلف تعمیم پیدا کند.
- بهکارگیری مدل پیشآموختهٔ gθ̂(·) برای وظایف پاییندستی. برای سازگارکردن مدل با این وظایف، باید پارامترهای θ̂ را با مقدار اندکی دادهٔ برچسبخورده تنظیم کنیم یا مدل را با توصیف وظیفه پرامپت کنیم.
در ادامه، ایدههای پایه برای حل این دو مسئله را بررسی میکنیم.
۱.۱.۱ پیشآموزش بدوننظارت، نظارتشده و خودنظارتی
در یادگیری عمیق، پیشآموزش به فرایند بهینهسازی یک شبکهٔ عصبی پیش از آموزش/تنظیم بیشتر و استفاده از آن در وظایف موردنظر گفته میشود. این رویکرد بر این فرض استوار است که مدلی که روی یک وظیفه پیشآموزش دیده، میتواند برای انجام وظیفهای دیگر سازگار شود. در نتیجه، لازم نیست برای وظایفی که دادهٔ برچسبخوردهٔ محدودی دارند، یک شبکهٔ عصبی عمیق و پیچیده را از صفر آموزش دهیم. در عوض میتوان از وظایفی استفاده کرد که سیگنال نظارتی در آنها آسانتر به دست میآید. به این ترتیب وابستگی به دادهٔ برچسبخوردهٔ خاص هر وظیفه کاهش مییابد و امکان ساخت مدلهای عمومیتری فراهم میشود که به یک مسئلهٔ خاص محدود نیستند.
در دورهای که شبکههای عصبی با ظهور یادگیری عمیق دوباره رونق گرفتند، بسیاری از تلاشهای اولیه برای پیشآموزش بر یادگیری بدوننظارت متمرکز بودند. در این روشها، پارامترهای شبکهٔ عصبی با معیاری بهینه میشوند که مستقیماً به وظیفهٔ نهایی خاصی مربوط نیست. برای مثال میتوان آنتروپی متقاطع بازسازیِ بردار ورودی را برای هر لایه کمینه کرد [Bengio et al., 2006]. پیشآموزش بدوننظارت معمولاً بهعنوان مرحلهای مقدماتی پیش از یادگیری نظارتشده استفاده میشود و مزایایی مانند کمک به یافتن کمینههای محلی بهتر و افزودن اثر منظمسازی به فرایند آموزش دارد [Erhan et al., 2010]. این مزایا مرحلهٔ بعدی یادگیری نظارتشده را آسانتر و پایدارتر میکنند.
رویکرد دوم این است که شبکهٔ عصبی را روی وظایف یادگیری نظارتشده پیشآموزش دهیم. برای نمونه، یک مدل دنباله را در نظر بگیرید که ورودی را به نوعی بازنمایی کد میکند.
در مرحلهٔ پیشآموزش، این مدل با یک لایهٔ طبقهبندی ترکیب میشود تا یک سامانهٔ طبقهبندی بسازد. سپس سامانه روی یک وظیفهٔ پیشآموزش، مثلاً طبقهبندی جمله بر اساس احساس (برای مثال تشخیص مثبت یا منفی بودن یک جمله)، آموزش داده میشود. بعد از آن مدل دنباله را برای یک وظیفهٔ پاییندستی سازگار میکنیم: سامانهٔ طبقهبندی تازهای میسازیم که از همان مدل دنبالهٔ پیشآموخته و یک لایهٔ طبقهبندی جدید استفاده میکند؛ برای نمونه، تشخیص اینکه یک دنباله ذهنی (Subjective) است یا عینی (Objective). معمولاً لازم است پارامترهای مدل جدید را با دادهٔ برچسبخوردهٔ ویژهٔ وظیفه ریزتنظیم کنیم تا مدل برای این نوع داده بهشکل بهینه تنظیم شود. سپس مدل ریزتنظیمشده برای طبقهبندی دنبالههای جدید در همان وظیفه به کار میرود.
مزیت پیشآموزش نظارتشده این است که فرایند آموزش، چه در مرحلهٔ پیشآموزش و چه در مرحلهٔ ریزتنظیم، سرراست است و از الگوی عمومی و خوبمطالعهشدهٔ یادگیری نظارتشده در یادگیری ماشین پیروی میکند. با این حال، هرچه پیچیدگی شبکهٔ عصبی افزایش یابد، نیاز به دادهٔ برچسبخورده نیز بیشتر میشود. این مسئله وظیفهٔ پیشآموزش را دشوارتر میکند، بهویژه زمانی که دادهٔ برچسبخورده در مقیاس بزرگ در دسترس نباشد.
رویکرد سوم، یادگیری خودنظارتی است. در این رویکرد، شبکهٔ عصبی بهجای سیگنالهای نظارتی تولیدشده توسط انسان، با سیگنالهای نظارتیای آموزش میبیند که از خود داده یا فرایند یادگیری استخراج میشوند. این کار معمولاً با ساخت وظایف آموزشی مستقیماً از دادهٔ بدونبرچسب انجام میشود؛ برای مثال، سامانه میتواند شبهبرچسب (Pseudo-label) تولید کند. هرچند یادگیری خودنظارتی در سالهای اخیر به روشی بسیار محبوب در NLP تبدیل شده است، مفهوم تازهای نیست. در یادگیری ماشین، مفهوم مرتبطی به نام خودآموزی (Self-training) وجود دارد که در آن مدل با یادگیری تکرارشونده از شبهبرچسبهای تخصیصیافته به یک مجموعهداده بهبود مییابد. برای این کار، ابتدا به مقداری دادهٔ بذر نیاز داریم تا مدل اولیه ساخته شود. مدل اولیه برای دادهٔ بدونبرچسب شبهبرچسب تولید میکند و سپس این شبهبرچسبها برای اصلاح تکرارشونده و تقویت خود مدل استفاده میشوند. چنین روشی در حوزههای مختلف NLP، از جمله ابهامزدایی معنای واژه [Yarowsky, 1995] و طبقهبندی سند [Blum and Mitchell, 1998]، با موفقیت به کار رفته است.
برخلاف روش استاندارد خودآموزی، پیشآموزش خودنظارتی در NLP برای برچسبگذاری داده به یک مدل اولیه متکی نیست. در عوض، همهٔ سیگنالهای نظارتی مستقیماً از متن ساخته میشوند و کل مدل از صفر آموزش میبیند. نمونهٔ شناختهشدهٔ این رویکرد، آموزش مدلهای دنبالهای با پیشبینی پیاپی یک واژهٔ ماسکشده بر اساس واژههای پیشین یا پیرامونی آن است. این روش امکان یادگیری خودنظارتی در مقیاس بزرگ را برای شبکههای عصبی عمیق فراهم میکند و به موفقیت پیشآموزش در بسیاری از وظایف درک، نگارش و استدلال منجر شده است.
شکل ۱.۱ این سه رویکرد پیشآموزش را مقایسه میکند. پیشآموزش خودنظارتی چنان موفق بوده است که بیشتر مدلهای پیشرفتهٔ امروزی NLP بر همین الگو تکیه دارند. ازاینرو، در این فصل و در سراسر کتاب، تمرکز ما بر پیشآموزش خودنظارتی خواهد بود. نشان خواهیم داد مدلهای دنبالهای چگونه با خودنظارتی پیشآموزش میبینند و مدلهای پیشآموخته چگونه به کار گرفته میشوند.
۱.۱.۲ سازگارکردن مدلهای پیشآموخته
همانطور که گفته شد، در پیشآموزش NLP دو نوع اصلی مدل کاربرد گستردهای دارند:
- مدلهای کدگذاری دنباله (Sequence Encoding Models). با دریافت دنبالهای از واژهها یا توکنها، مدل کدگذاری دنباله آن را به یک بردار حقیقی یا دنبالهای از بردارها تبدیل میکند و یک بازنمایی از دنباله به دست میآورد. این بازنمایی معمولاً ورودی مدل دیگری، مانند سامانهٔ طبقهبندی جمله، قرار میگیرد.
شکل ۱.۱ — نمایش پیشآموزش بدوننظارت، نظارتشده و خودنظارتی. در پیشآموزش بدوننظارت، پیشآموزش روی دادهٔ بدونبرچسب در مقیاس بزرگ انجام میشود. میتوان آن را مرحلهای مقدماتی برای رسیدن به نقطهٔ شروع مناسب در فرایند بهینهسازی بعدی دانست، هرچند پس از پیشآموزش همچنان تلاش قابلتوجهی برای آموزش بیشتر مدل با دادهٔ برچسبخورده لازم است. در پیشآموزش نظارتشده، فرض اصلی این است که وظایف مختلف یادگیری نظارتشده با یکدیگر مرتبطاند؛ بنابراین میتوان مدل را نخست روی یک وظیفه آموزش داد و سپس با مقداری آموزش یا تنظیم، مدل حاصل را به وظیفهای دیگر انتقال داد. در پیشآموزش خودنظارتی، مدل از طریق خودنظارتی روی دادهٔ بدونبرچسب در مقیاس بزرگ پیشآموزش میبیند. مدل به این شیوه میتواند بهخوبی آموزش ببیند و سپس با ریزتنظیم یا پرامپتدهی بهطور کارآمد با وظایف جدید سازگار شود.
ترجمهٔ برچسبهای شکل: Pre-training = پیشآموزش؛ Training = آموزش؛ Tuning = تنظیم؛ Unlabeled Data = دادهٔ بدونبرچسب؛ Labeled Data = دادهٔ برچسبخورده؛ Supervised = نظارتشده؛ Self-Supervised = خودنظارتی؛ Zero/Few Shot Learning = یادگیری صفر/کمنمونه؛ Prompting = پرامپتدهی؛ Task 1/2 = وظیفهٔ ۱/۲.
- مدلهای تولید دنباله (Sequence Generation Models). در NLP، تولید دنباله معمولاً به مسئلهٔ تولید دنبالهای از توکنها بر اساس یک «بافت» (Context) دادهشده اشاره دارد. معنای بافت در کاربردهای مختلف متفاوت است. در مدلسازی زبان، بافت به توکنهای پیشین اشاره میکند؛ در ترجمهٔ ماشینی، بافت میتواند دنبالهٔ زبان مبدأ باشد.۲
برای بهکارگیری این مدلها در وظایف پاییندستی پس از پیشآموزش، به فنون متفاوتی نیاز داریم. در اینجا دو روش مورد توجه ما هستند.
۱.۱.۲.۱ ریزتنظیم مدلهای پیشآموخته
برای پیشآموزش مدلهای کدگذاری دنباله، یکی از روشهای رایج سازگارکردن مدل پیشآموخته، ریزتنظیم است. فرض کنید Encodeθ(·) یک رمزگذار با پارامترهای θ باشد؛ برای مثال این رمزگذار میتواند یک رمزگذار استاندارد Transformer باشد. اگر این مدل را به روشی پیشآموزش داده و پارامترهای بهینهٔ θ̂ را به دست آورده باشیم، میتوانیم آن را برای مدلکردن هر دنباله و تولید بازنمایی متناظر به کار ببریم:
H = Encodeθ̂(x) (1.2)
در اینجا x دنبالهٔ ورودی {x0, x1, ..., xm} و H بازنمایی خروجی است که خود از دنبالهای از بردارهای حقیقی {h0, h1, ..., hm} تشکیل شده است. از آنجا که رمزگذار بهتنهایی یک سامانهٔ کامل NLP نیست، معمولاً بهعنوان مؤلفهای از یک سامانهٔ بزرگتر استفاده میشود. برای نمونه، مسئلهٔ طبقهبندی متنی را در نظر بگیرید که در آن قطبیت متن ــ مثبت، منفی یا خنثی ــ تشخیص داده میشود.
میتوان با قرار دادن یک طبقهبند روی رمزگذار، یک سامانهٔ طبقهبندی متن ساخت. فرض کنید Classifyω(·) یک شبکهٔ عصبی با پارامترهای ω باشد. در این صورت مدل طبقهبندی متن را میتوان به شکل زیر نوشت:
Prω,θ̂(·|x) = Classifyω(H) = Classifyω(Encodeθ̂(x)) (1.3)
Prω,θ̂(·|x) یک توزیع احتمال روی مجموعهٔ برچسبهای {positive, negative, neutral} است و برچسبی که بیشترین احتمال را دارد بهعنوان خروجی انتخاب میشود. برای ساده نگهداشتن نمادگذاری، از Fω,θ̂(·) برای نمایش Classifyω(Encodeθ̂(·)) استفاده میکنیم.
از آنجا که پارامترهای ω و θ̂ برای وظیفهٔ طبقهبندی بهینه نشدهاند، نمیتوان این مدل را مستقیماً به کار برد. باید نسخهای از مدل را استفاده کنیم که با وظیفه سازگار شده باشد. روش رایج، ریزتنظیم مدل با برچسبگذاری صریح در وظیفهٔ پاییندستی است. میتوان Fω,θ̂(·) را روی یک مجموعهدادهٔ برچسبخورده، مانند یک مسئلهٔ معمول یادگیری نظارتشده، آموزش داد. حاصل ریزتنظیم پارامترهای بهینهشدهتر ω̃ و θ̃ است. گزینهٔ دیگر این است که پارامترهای رمزگذار θ̂ را منجمد کنیم تا وضعیت پیشآموختهٔ آن حفظ شود و فقط ω را بهینه کنیم. در این حالت، طبقهبند میتواند با هزینهٔ کمتر برای همکاری با رمزگذار پیشآموخته سازگار شود.
پس از دستیابی به مدل ریزتنظیمشده، میتوان از آن برای طبقهبندی متن جدید استفاده کرد. فرض کنید در یک وبسایت سفر این نظر ثبت شده باشد:
I love the food here. It’s amazing!
ابتدا متن را به توکنها تقسیم میکنیم۳ و دنبالهٔ توکن xnew را به مدل ریزتنظیمشدهٔ Fω̃,θ̃(·) میدهیم. مدل توزیع کلاسها را بهصورت زیر تولید میکند:
Fω̃,θ̃(xnew) = [ Pr(positive|xnew) Pr(negative|xnew) Pr(neutral|xnew) ] (1.4)
سپس برچسب مربوط به درایهای که بیشترین مقدار را دارد بهعنوان خروجی انتخاب میشود. در این مثال، خروجی positive است.
بهطور کلی حجم دادهٔ برچسبخوردهای که در ریزتنظیم استفاده میشود، در مقایسه با دادهٔ پیشآموزش کم است؛ بنابراین ریزتنظیم از نظر محاسباتی ارزانتر است. همین موضوع سازگارکردن مدلهای پیشآموخته را در عمل بسیار کارآمد میکند: وقتی یک مدل پیشآموخته و یک وظیفهٔ پاییندستی در اختیار داریم، کافی است مقداری دادهٔ برچسبخورده جمعآوری کنیم و پارامترهای مدل را اندکی روی آن داده تنظیم کنیم. بحث کاملتر دربارهٔ ریزتنظیم در بخش ۱.۴ آمده است.
۱.۱.۲.۲ پرامپتدهی به مدلهای پیشآموخته
برخلاف مدلهای کدگذاری دنباله، مدلهای تولید دنباله اغلب برای حل مسائل تولید زبان ــ مانند پاسخگویی به پرسش و ترجمهٔ ماشینی ــ بهصورت مستقل و بدون نیاز به ماژولهای افزوده به کار میروند. بنابراین ریزتنظیم این مدلها بهعنوان یک سامانهٔ کامل برای وظایف پاییندستی سرراست است.
برای مثال، میتوان یک مدل چندزبانهٔ رمزگذار–رمزگشا را که از قبل آموزش دیده است، روی مقداری دادهٔ دوزبانه ریزتنظیم کرد تا عملکرد آن در یک وظیفهٔ ترجمهٔ مشخص بهتر شود.
در میان انواع مدلهای تولید دنباله، یکی از نمونههای برجسته مدلهای زبانی بزرگی هستند که روی حجم بسیار زیادی از داده آموزش دیدهاند. این مدلها صرفاً برای پیشبینی توکن بعدی با توجه به توکنهای پیشین آموزش داده میشوند. اگرچه پیشبینی توکن وظیفهای بسیار ساده است و مدتها صرفاً در محدودهٔ «مدلسازی زبان» در نظر گرفته میشد، مشخص شده است که تکرار این وظیفه در مقیاس بسیار بزرگ میتواند به یادگیری دانش عمومی زبانها منجر شود. نتیجه آن است که مدلهای زبانی بزرگ پیشآموخته توانایی بسیار خوبی در پیشبینی توکن به دست میآورند و میتوان با پرامپتدهی، بسیاری از مسائل NLP را به مسائل سادهٔ تولید متن تبدیل کرد.
برای نمونه، مسئلهٔ طبقهبندی متن بالا را میتوان به شکل یک مسئلهٔ تولید متن نوشت:
I love the food here. It’s amazing! I’m ____
فضای خالی نشاندهندهٔ واژه یا عبارتی است که میخواهیم مدل پیشبینی کند؛ به آن «تکمیل» (Completion) میگوییم. اگر واژهٔ پیشبینیشده happy، glad، satisfied یا واژهٔ مثبت مرتبط دیگری باشد، میتوان متن را مثبت طبقهبندی کرد. این مثال یک روش سادهٔ پرامپتدهی را نشان میدهد که در آن متن ورودی را با عبارت I’m الحاق میکنیم تا یک پرامپت ساخته شود. سپس تکمیل تولیدشده به تعیین برچسب متن اصلی کمک میکند.
با توجه به توان بالای مدلهای زبانی بزرگ در درک و تولید زبان، یک پرامپت میتواند مدل را برای انجام وظایف پیچیدهتر نیز راهنمایی کند. نمونهٔ زیر پرامپتی است که از LLM میخواهد با یک دستور، طبقهبندی قطبیت را انجام دهد:
Assume that the polarity of a text is a label chosen from {positive, negative,
neutral}. Identify the polarity of the input.
Input: I love the food here. It’s amazing!
Polarity:
دو جملهٔ نخست توصیف وظیفهاند. Input و Polarity بهترتیب نشانگر ورودی و خروجی هستند. انتظار داریم مدل ادامهٔ متن را تولید کند و همزمان برچسب درست قطبیت را ارائه دهد. با استفاده از پرامپتهای مبتنی بر دستور میتوان مدلهای زبانی بزرگ را بدون نیاز به آموزش اضافی برای حل مسائل NLP سازگار کرد.
این مثال همچنین توانایی یادگیری صفرنمونه (Zero-shot Learning) در مدلهای زبانی بزرگ را نشان میدهد؛ یعنی مدل میتواند وظایفی را انجام دهد که در مرحلهٔ آموزش مستقیماً مشاهده نکرده است. روش دیگری برای ایجاد تواناییهای جدید در یک شبکهٔ عصبی، یادگیری کمنمونه (Few-shot Learning) است. این روش معمولاً از طریق یادگیری درونمتنی (In-context Learning یا ICL) انجام میشود. بهطور مشخص، چند نمونه به پرامپت افزوده میشود تا نشان دهد هر ورودی چگونه به خروجی متناظر نگاشت میشود. این نمونهها که «نمایش» (Demonstration) نام دارند، برای آموزش مدل زبانی بزرگ در همان بافت استفاده میشوند. در ادامهٔ منبع، نمونهای شامل چنین نمایشهایی ارائه میشود.