یادگیری برای پرامپت‌دادن: بهینه‌سازی، پرامپت نرم و کاهش طول پرامپت

یادگیری برای پرامپت‌دادن: بهینه‌سازی، پرامپت نرم و کاهش طول پرامپت

توسط admin | گروه هوش مصنوعی | 1405/05/18

نظرات 0

یادگیری برای پرامپت‌دادن: بهینه‌سازی، پرامپت نرم و کاهش طول پرامپت

عنوان اصلی کتاب: Foundations of Large Language Models

نویسندگان: Tong Xiao و Jingbo Zhu

سازمان: NLP Lab, Northeastern University & NiuTrans Research

زبان اصلی: انگلیسی

بازهٔ منبع: صفحات PDF 145 تا 161

مجوز منبع: Creative Commons Attribution-NonCommercial 4.0 (CC BY-NC 4.0)

تاریخ ترجمه: 1405/05/18 / 2026-08-09

اعتبار ترجمه: ترجمه با کمک هوش مصنوعی

ادامهٔ ۳.۲.۵ — استفاده از ابزار

کتاب در ادامهٔ مثال tool use، حل یک مسئلهٔ ریاضی را نشان می‌دهد:

Problem:
یک استخر باید با آب پر شود. طول استخر 10 متر، عرض 4 متر و عمق 2 متر است. حجم استخر را بر حسب متر مکعب و سپس تعداد لیتر آب لازم را محاسبه کن؛ هر متر مکعب 1000 لیتر است.

Solution:
ابتدا حجم منشور مستطیلی محاسبه می‌شود: Length × Width × Depth.
10 × 4 × 2 = {tool: calculator, expression: 10 * 4 * 2} m³.
سپس حجم بر حسب لیتر: 80 × 1000 = {tool: calculator, expression: 80*1000} liters.

رشتهٔ {tool: calculator, expression: 10 * 4 * 2} فراخوانی یک مفسر ریاضی را برای محاسبهٔ عبارت فعال می‌کند. نتیجه، یعنی ۸۰، جای marker را می‌گیرد و در token predictionهای بعدی قابل استفاده است؛ به همین دلیل در گام آخر مسئله، عدد ۸۰ در محاسبهٔ تبدیل واحد به کار می‌رود.

تفاوت کلیدی tool use با RAG این است که در tool use، external function می‌تواند در حین inference فراخوانی شود، اما در RAG متن‌های retrievalشده پیش از آغاز prediction در اختیار مدل قرار می‌گیرند. از دید language modeling، هر دو اساساً یک کار انجام می‌دهند: پیش از تولید نتیجهٔ نهایی، به‌صورت دستی یا خودکار از external tool برای ساخت context کافی و مرتبط استفاده می‌شود. در سطح بالا می‌توان گفت هر دو به یک «agent» نیاز دارند که تعیین کند کجا و چگونه تابع خارجی فراخوانی شود.

یکی از مسائل tool use این است که LLM اصلی برای تولید markerهای لازم آموزش ندیده است. بنابراین باید آن را برای این taskها fine-tune کرد [Schick et al., 2024]. به‌طور خلاصه، داده annotation می‌شود: در هر نمونهٔ fine-tuning، بخش‌هایی از output که نیازمند ابزار خارجی‌اند با command یا marker ازپیش‌تعریف‌شده جایگزین می‌شوند؛ سپس مدل روی دادهٔ برچسب‌خورده fine-tune می‌شود. در نتیجه LLM توان تولید command فراخوانی ابزار را به دست می‌آورد و در inference این commandها اجرا می‌شوند.

۳.۳ یادگیری برای پرامپت‌دادن (Learning to Prompt)

تا اینجا راهبردهای پایه و refinementهای مختلف prompting بررسی شد، اما همهٔ promptها دستی طراحی شده بودند. طراحی دستی چند مشکل دارد. نخست، ساخت prompt باکیفیت ذاتاً دشوار و پرهزینه است و اغلب آزمایش گستردهٔ promptهای مختلف لازم می‌شود؛ ضمن آنکه LLMهای متفاوت ممکن است به promptهای متفاوتی بهتر پاسخ دهند. دوم، طراحی دستی به تخصص انسان وابسته است و می‌تواند diversity راه‌حل‌ها را محدود کند یا promptهای مؤثری را که برای انسان بدیهی نیستند از دست بدهد. سوم، promptهای انسانی ممکن است پیچیده و redundant باشند و ورودی طولانی و هزینهٔ computation بیشتری ایجاد کنند.

این بخش روش‌های automated prompting را بررسی می‌کند؛ روش‌هایی برای ساخت، optimize و represent کردن خودکار promptها تا downstream task مؤثرتر و کارآمدتر حل شود. سه پرسش اصلی:

  • فرایند طراحی و optimization prompt چگونه خودکار شود؟
  • آیا غیر از string، شکل‌های دیگری برای بازنمایی prompt وجود دارد و چگونه می‌توان آن‌ها را یاد گرفت؟
  • چگونه prompt را concise و compact کنیم تا complexity و length کاهش یابد؟

این مسائل را می‌توان در settingهای مختلف بررسی کرد: prompt برای LLM خاص optimize شود یا مستقل از مدل توسعه یابد. این settingها روش‌ها و کاربردهای متفاوتی ایجاد می‌کنند، هرچند بین روش‌ها هم‌پوشانی نیز وجود دارد.

۳.۳.۱ بهینه‌سازی پرامپت

چون طراحی prompt دشوار و labor-intensive است، مطلوب است machine learning برای یافتن prompt بهینهٔ یک task به کار رود؛ رویکردی که automatic prompt design یا prompt optimization نامیده می‌شود. از نگاه گسترده، این موضوع نمونه‌ای از AutoML است که هدفش کاهش طراحی دستی expert-driven در machine learning است. promptها ساختارهای discrete هستند و طراحی آن‌ها شبیه طراحی architectureهای discrete است. حوزهٔ نزدیک، Neural Architecture Search (NAS) است که در آن با کاوش space شبکه‌های ممکن، architecture بهینه پیدا می‌شود [Zoph and Le, 2016; Elsken et al., 2019].

اگر prompt optimization را search process بدانیم، framework عمومی سه جزء دارد:

  • Prompt Search Space: همهٔ promptهای قابل کاوش؛ مثلاً ویرایش seed prompt برای ساخت candidateهای متنوع.
  • Performance Estimation: ارزیابی prompt انتخاب‌شده؛ مثلاً دادن prompt به LLM و سنجش performance روی validation set.
  • Search Strategy: کاوش مجموعه‌ای از promptهای امیدوارکننده، ارزیابی آن‌ها و ادامهٔ search تا stopping criterion؛ خروجی بهترین prompt دیده‌شده تا زمان توقف است.

یک رویکرد پرکاربرد، استفاده از LLM برای ساخت اجزای این framework است. ابتدا چند prompt اولیه داریم؛ سپس چرخهٔ زیر تکرار می‌شود: ۱) evaluation روی validation set؛ ۲) نگهداری candidate pool با promptهای امیدوارکننده؛ ۳) generation promptهای جدید با LLM از candidate pool. مزیت آن است که می‌توان از LLM آماده استفاده کرد و نیاز به توسعهٔ سامانهٔ پیچیده را کاهش داد.

روش Zhou et al. [2023c] نمونه‌ای از LLM-based prompt optimization است:

Initialization

فرض کنید C pool candidate promptها باشد. ابتدا promptهای اولیه وارد C می‌شوند. می‌توان آن‌ها را دستی ساخت، اما اگر دانش انسانی دربارهٔ prompt مؤثر کم باشد، LLM می‌تواند prompt تولید کند:

یک task با LLM باید انجام شود. لطفاً promptی برای هدایت LLM بنویس.
{∗task-description∗}

این روش هنوز task description انسانی نیاز دارد. جایگزین، infer کردن instruction از نمونه‌های input-output است:

چند input-output pair از یک task در اختیار توست. instruction انجام این task را بنویس.
Input: {∗input1∗} Output: {∗output1∗}
Input: {∗input2∗} Output: {∗output2∗}
...

Evaluation

هر prompt در C به LLM داده می‌شود و output روی downstream task با metric ازپیش‌تعریف‌شده ارزیابی می‌گردد؛ یا log-likelihood output به‌عنوان معیار کیفیت prompt استفاده می‌شود.

Pruning

اگر C بزرگ باشد promptهای کم‌امید حذف می‌شوند تا بار computational مراحل بعدی کاهش یابد. روش ساده نگه‌داشتن درصد مشخصی از promptها بر اساس evaluation score و حذف باقی‌مانده است.

Expansion

Expansion عملیات اصلی search برای حرکت به stateهای جدید است:

C′ = Expand(C,f)    (3.10)

C′ مجموعهٔ promptهای جدید ساخته‌شده از C با مدل f است. اگر f یک LLM باشد:

در زیر یک prompt برای LLM آمده است. چند prompt جدید برای انجام همان task ارائه کن.
Input: {∗prompt∗}

سپس C با C′ جایگزین می‌شود و evaluation، pruning و expansion تکرار می‌شوند تا فضای بزرگ‌تری از promptها به‌تدریج کاوش شود.

Expansion تعیین می‌کند search space چگونه کاوش شود و هدف، یافتن نتیجهٔ بهینه با کمترین effort است. یک بهبود، صورت‌بندی prompt generation به‌عنوان paraphrasing است؛ می‌توان از paraphraser آماده، LLM یا مدل دیگر، برای تبدیل prompt به فرم‌های semantic-equivalent استفاده کرد [Jiang et al., 2020]. یا edit operationهایی مانند insertion و modification برای هر token تعریف و prompt با این عملیات به candidateهای جدید تبدیل شود [Prasad et al., 2023]. سپس evaluation و pruning برای حذف promptهای کم‌کیفیت اعمال می‌شوند.

راه دیگر، بهبود prompt در expansion با feedback است [Pryzant et al., 2023]؛ مشابه self-refinement. LLM روی prompt ورودی feedback تولید می‌کند و prompt بر اساس آن revision می‌شود. این چرخه تا convergence یا رسیدن به outcome مطلوب تکرار می‌شود.

همچنین می‌توان prompt optimization را با optimization کلاسیک حل کرد؛ مثلاً evolutionary computation که promptها candidateهایی هستند که نسل‌به‌نسل evolve می‌شوند [Guo et al., 2024]. الگوریتم‌های قدرتمند optimization حوزه‌های مرتبط نیز قابل استفاده‌اند.

استفادهٔ مستقیم از LLM API برای این مراحل شدیداً به inference و in-context learning مدل وابسته است. اگر LLM ضعیف باشد، search با خطاهایی مانند تولید prompt نادرست در expansion آلوده می‌شود. در این حالت بهتر است مدل مخصوص task آموزش داده شود. reinforcement learning یکی از جهت‌های پژوهشی است. Deng et al. [2022] با افزودن adaptor مبتنی بر FFN به LLM، prompt generator ساختند. generator مانند policy network آموزش می‌بیند، اما فقط parameterهای adaptor update می‌شوند و باقی مدل ثابت است. reward با آزمون prompt تولیدی روی LLM دیگری به دست می‌آید؛ پس از training، generator prompt جدید تولید می‌کند.

در این بحث prompt را صرفاً token sequence دیدیم، اما در معنای دقیق، prompt ساختار پیچیده‌ای با fieldهایی مانند user input، instruction و demonstration دارد. بخش بزرگی از prompt optimization روی یادگیری instruction بهتر تمرکز کرده است. مفهوم را می‌توان به اجزای دیگر نیز گسترش داد؛ مثلاً selection یا generation demonstration در CoT [Liu et al., 2022; Rubin et al., 2022; Zhang et al., 2023b]. تولید demonstration با LLM نسبتاً آسان است و مسئله بیشتر sampling مناسب از candidate pool است، در حالی که یادگیری instruction دشوارتر است، چون LLM پیش‌آموخته برای پیش‌بینی کیفیت instruction مناسب نیست و آزمایش instruction روی downstream task computationally expensive است.

۳.۳.۲ پرامپت‌های نرم (Soft Prompts)

Natural-language prompt، چه دستی و چه خودکار، سرراست و پرکاربرد است اما مشکلاتی دارد. ممکن است طولانی و پیچیده باشد و هنگام پردازش با LLM computation زیادی مصرف کند؛ در taskهای تکراری، ارسال مکرر همان prompt بلند ناکارآمد است. همچنین hard prompt به‌صورت token sequence گسسته وارد LLM می‌شود، ولی خود مدل آن را به بردارهای real-valued کم‌بعد کدگذاری می‌کند. این پرسش پیش می‌آید که آیا می‌توان prompt را فشرده‌تر و کارآمدتر نمایش داد.

Soft prompt بازنمایی پنهان و توزیع‌شدهٔ prompt است. hard prompt متن صریح و ازپیش‌تعریف‌شده‌ای است که انسان مستقیماً وارد می‌کند؛ soft prompt الگویی implicit و adaptable در فضای بازنمایی مدل است و بیشتر برای model قابل فهم است تا انسان. مثال:

Translate the sentence into Chinese.
Consider it done!

instruction “Translate the sentence into Chinese” را hard prompt با tokenهای c₁...c₅ در نظر بگیرید. LLM آن‌ها را به بردارهای h₁...h₅ تبدیل می‌کند. این hidden representationها را می‌توان تقریباً soft prompt دانست.

شکل 3.3تصویر درون‌خطی شکل 3.3 از کتاب Foundations of Large Language Models؛ توضیح فارسی در زیر شکل آمده است.
شکل ۳.۳ — hard prompt و soft prompt. instruction متنی وارد Transformer می‌شود و بازنمایی‌های میانی متناظر با instruction را می‌توان گونه‌ای soft prompt در نظر گرفت.

soft prompt لزوماً correspondence مستقیم با متن meaningful ندارد؛ می‌تواند صرفاً hidden stateهای LLM باشد که مانند model parameter از طریق continuous optimization یاد گرفته می‌شود. این دید، prompting فراتر از متن را ممکن می‌کند. soft prompt همچنین dense، low-dimensional و learnable است و می‌تواند راهنمای generation را با هزینهٔ کمتر از پردازش hard prompt بلند کدگذاری کند؛ به‌خصوص وقتی prompt یکسان بارها در inference استفاده می‌شود.

۳.۳.۲.۱ سازگارکردن LLM با پرامپت کمتر

راه آشکار adaptation یک LLM برای task خاص، fine-tuning با labeled data است. در alignmentهایی مانند supervised fine-tuning، parameterهای مدل با supervision signal طوری update می‌شوند که response به prompt صحیح باشد. LLM fine-tuned بخشی از اطلاعات task را در parameterهای خود embed می‌کند، بنابراین با promptهای مشابه می‌تواند درست پاسخ دهد.

اگر این ایده را ادامه دهیم، می‌خواهیم مدل در fine-tuning تا حد امکان دانش prompting task را جذب کند تا در inference با prompt کوتاه‌تر نیز task را انجام دهد. prompt ساده را شامل instruction c و user input z می‌نویسیم:

x = (c,z)    (3.11)

برای dataset زوج prompt-response یعنی D={(x,y)}، fine-tuning با بیشینه‌سازی log-likelihood انجام می‌شود:

θ̂ = arg maxθ Σ(x,y)∈D log Prθ(y|x) = arg maxθ Σ log Prθ(y|c,z)    (3.12)

در عمل θ با parameterهای pre-training مقداردهی اولیه و سپس به‌اندازه‌ای moderate تنظیم می‌شود تا output بعد از fine-tuning بیش از حد از مدل پیش‌آموخته منحرف نشود.

instruction هر نمونه معمولاً باید روشن و دقیق باشد، اما معادله شکل instruction را محدود نمی‌کند. برای task ترجمهٔ انگلیسی به چینی می‌توان instruction را از «Translate the following sentence from English to Chinese.» به «Translate this into Chinese.» و حتی «Translate!» ساده کرد. با fine-tuning کافی، LLM می‌تواند هرکدام را دنبال کند. از دید efficient prompting، instruction کوتاه inference را ارزان‌تر می‌کند؛ اما simplification بیش از حد ممکن است information loss و overfitting به fine-tuning data ایجاد کند و generalization را کاهش دهد.

جایگزین، knowledge distillation است. در context distillation [Snell et al., 2022] هدف یادگیری student model است که instruction ساده را با کمک teacher model instruction-following خوب درک کند.

شکل 3.4تصویر درون‌خطی شکل 3.4 از کتاب Foundations of Large Language Models؛ توضیح فارسی در زیر شکل آمده است.
شکل ۳.۴ — Context distillation. teacher با full context و user input prediction تولید می‌کند؛ student با simplified context و همان user input prediction می‌دهد و با کمینه‌کردن loss میان outputهای دو مدل آموزش می‌بیند.

Teacher با fine-tuning معمول روی دادهٔ instruction، user input و response صحیح ساخته می‌شود. برای student، dataset جدید D′ شامل tuple x′=(c,c′,z) ساخته می‌شود که در آن c′ instruction ساده‌شده است. distillation:

θ̂ = arg minθ Σx′∈D′ Loss(Prt(·|·), Pr(·|·), x′)    (3.13)

یکی از lossهای sequence-level:

Loss = Σy Prt(y|c,z) log Pr(y|c′,z)    (3.14)

محاسبهٔ دقیق آن به دلیل تعداد نمایی outputها infeasible است. یک variant، تولید target با teacher است: ŷ=argmax_y log Pr_t(y|c,z) و سپس:

Loss = log Pr(ŷ|c′,z)    (3.15)

یا فاصلهٔ distributionها با KL divergence کمینه می‌شود [Askell et al., 2021]:

Loss = KL(P_t || P_{sθ})    (3.16)
P_t=Pr_t(·|c,z)    (3.17)     P_{sθ}=Pr_{sθ}(·|c′,z)    (3.18)

این روش به instruction محدود نیست. دانش prompting در output teacher می‌تواند به parameterهای student distill شود؛ از این رو distilled model را می‌توان حامل نوعی soft prompt دانست. همین ایده در compress کردن long context و یادگیری soft prompt به‌عنوان component مشخص LLM نیز کاربرد دارد.

۳.۳.۲.۲ یادگیری Soft Prompt برای Parameter-efficient Fine-tuning

به‌روزرسانی همهٔ parameterها راه رایج adaptation است. هرچند fine-tuning ارزان‌تر از pre-training است، در عمل همچنان پرهزینه است؛ به همین دلیل parameter-efficient fine-tuning توسعه یافته تا تعداد parameterهای updateشونده کم شود.

در prefix fine-tuning [Li and Liang, 2021] مجموعه‌ای از بردارهای trainable یا prefix به ابتدای input هر Transformer layer افزوده می‌شود. prefixها soft promptهایی هستند که context اضافی task را حمل می‌کنند و فقط همین prefixها در fine-tuning یاد گرفته می‌شوند.

اگر input لایهٔ عمق l را H^l=[h₀^l h₁^l ... h_m^l] بنامیم:

H^{l+1}=Layer(H^l)    (3.19)

در prefix fine-tuning چند بردار p₀^l...p_n^l اضافه می‌شود:

H^l=[p₀^l p₁^l ... p_n^l h₀^l h₁^l ... h_m^l]    (3.20)

output لایه فقط آخرین m+1 representation است:

H^{l+1}=Layer(H^l)[−m−1:] = [h₀^{l+1} h₁^{l+1} ... h_m^{l+1}]    (3.21)

و input لایهٔ بعد دوباره با prefix همان لایه ساخته می‌شود:

H^{l+1}=[p₀^{l+1} p₁^{l+1} ... p_n^{l+1} h₀^{l+1} ... h_m^{l+1}]    (3.22)

هر p_i∈R^d learnable parameter است؛ prefixها train می‌شوند و parameterهای Transformer اصلی ثابت می‌مانند.

شکل 3.5تصویر درون‌خطی شکل 3.5 از کتاب Foundations of Large Language Models؛ توضیح فارسی در زیر شکل آمده است.
شکل ۳.۵ — Prefix fine-tuning در task ترجمهٔ Look out! → 小心!. در ابتدای هر layer دو prefix اضافه می‌شود. فقط prefixها از error gradient خروجی update می‌شوند؛ در inference همان prefixهای optimizeشده task را بدون hard prompt صریح فعال می‌کنند. تعداد parameter اضافی L×n×d است که بسیار کمتر از کل parameterهای LLM است.

Prefix fine-tuning هنوز نیازمند modification در LLM است. اگر soft prompt از مدل جدا باشد architecture اصلی حفظ می‌شود و deployment چند task آسان‌تر است. روش prompt tuning [Lester et al., 2021] نیز بردارهای trainable دارد، اما فقط embedding layer را تغییر می‌دهد. هر token ورودی z_i با embedding e_i نمایش داده می‌شود و چند pseudo embedding p₀...p_n در ابتدای token embedding sequence قرار می‌گیرند:

p₀ p₁ ... p_n e₀ e₁ ... e_m

Pseudo embedding لازم نیست متناظر با token طبیعی باشد؛ soft prompt embedding است که LLM را condition می‌کند. با task-specific data، این embeddingها interaction مناسب با e₀...e_m را یاد می‌گیرند و رفتار LLM را هدایت می‌کنند، بدون تغییر parameterهای اصلی مدل.

شکل 3.6تصویر درون‌خطی شکل 3.6 از کتاب Foundations of Large Language Models؛ توضیح فارسی در زیر شکل آمده است.
شکل ۳.۶ — Prompt tuning در task ترجمهٔ Look out! → 小心!. soft promptهای learnable در ابتدای embedding sequence قرار می‌گیرند و فقط آن‌ها fine-tune می‌شوند.

چون p₀...p_n خود یک sequence است، می‌توان sequence model مانند Transformer را برای encode کردن آن به کار برد؛ یعنی مدل اضافی برای soft prompt encoding ساخت. همچنین soft و hard prompt را می‌توان ترکیب کرد [Liu et al., 2023b] و در embedding sequence در patternهای مختلف کنار هم یا intersperse قرار داد.

جزئیات training soft prompt در اینجا تکرار نمی‌شود و standard supervised learning، یعنی بیشینه‌کردن likelihood output صحیح با توجه به input، فرض شده است. یادگیری soft prompt با مسائل مختلف fine-tuning مرتبط است. Mu et al. [2024] promptها را به چند pseudo token فشرده می‌کنند و embedding آن‌ها را طوری optimize می‌کنند که prediction مدل standard-prompted تقلید شود؛ دانش prompting از teacher به pseudo tokenها distill می‌شود.

به‌طور گسترده‌تر، بسیاری از parameter-efficient fine-tuning methodها را می‌توان نوعی soft prompt learning دانست [Lialin et al., 2023]. Fine-tune کردن یک بخش از LLM یعنی تزریق prompting information و task-related information در همان بخش. افزودن adaptor layer میان layerهای موجود نیز نمونهٔ رایج است: فقط adaptor fine-tune می‌شود و می‌توان آن را soft prompt component دانست که با LLM اصلی interaction می‌کند.

شکل 3.7تصویر درون‌خطی شکل 3.7 از کتاب Foundations of Large Language Models؛ توضیح فارسی در زیر شکل آمده است.
شکل ۳.۷ — چهار شیوهٔ استفاده از soft prompt در LLM: (a) prefixهای افزوده‌شده به هر layer؛ (b) soft prompt به‌عنوان input embedding؛ (c) fine-tuning بخشی از خود model؛ (d) fine-tuning adaptor. بخش‌های قابل تنظیم در شکل اصلی آبی و parameterهای ثابت خاکستری‌اند.

۳.۳.۲.۳ یادگیری Soft Prompt با فشرده‌سازی

رویکرد دیگر، نگاه از perspective compression است. فرض کنید user input برابر z و context طولانی آن، شامل instruction و demonstration، برابر c باشد. می‌خواهیم بازنمایی فشردهٔ context یعنی σ را طوری بسازیم که prediction با z,σ تا حد ممکن نزدیک prediction با z,c باشد [Wingate et al., 2022]:

σ̂ = arg minσ s(ŷ, ŷ_σ)    (3.23)

که ŷ=argmax_y Pr(y|c,z) و ŷ_σ=argmax_{y_σ}Pr(y|σ,z) هستند. s(·,·) loss یا similarity measure برای کاهش اختلاف predictionهای full و compressed context است.

knowledge distillation framework عمومی این کار است؛ full-context model teacher و compressed-context model student. objective ساده:

σ̂ = arg maxσ log Pr(ŷ|σ,z)    (3.24)

یا کمینه‌کردن KL:

σ̂ = arg minσ KL(Pr(·|c,z) || Pr(·|σ,z))    (3.25)

تفاوت اصلی با context distillation قبلی این است که compressed context اینجا real-valued vector یا prompt embedding است نه normal token. Teacher و student حتی لازم نیست architecture یا setting یکسان داشته باشند؛ معمولاً teacher قوی‌تر و student کوچک‌تر و efficientتر انتخاب می‌شود.

فشرده‌کردن full context در continuous representation سرراست است، اما teacher باید long input را پردازش کند و برای context بسیار بلند ممکن است پرهزینه یا ناممکن باشد. این مسئله با efficient long-context modeling مرتبط است؛ مانند fixed-size KV cache و معماری‌های efficient Transformer که در فصل ۲ بررسی شدند.

روش‌هایی نیز مخصوص compression context بلند به soft prompt وجود دارند. نمونهٔ Chevalier et al. [2023] soft prompt را به‌تدریج با انباشتن representation ثابت‌اندازهٔ context یاد می‌گیرد. context بلند به segmentهای z₁,...,z_K تقسیم می‌شود. segmentها sequential پردازش می‌شوند و در هر گام representation زمینهٔ پردازش‌شده تا آن نقطه، σ^{<i+1}، تولید می‌شود. چند summary token ⟨g₁⟩,...,⟨g_κ⟩ معرفی می‌گردند. در step i، segment z_i=[z₁^i...z_{m_i}^i] همراه با memory قبلی σ^{<i} و summary tokenها وارد LLM می‌شود و hidden representation آخرین Transformer layer متناظر با summary tokenها به memory جدید تبدیل می‌شود.

شکل 3.8تصویر درون‌خطی شکل 3.8 از کتاب Foundations of Large Language Models؛ توضیح فارسی در زیر شکل آمده است.
شکل ۳.۸ — فشرده‌کردن یک context segment به soft prompt با κ=2 و m_i=4. input شامل soft promptهای گام قبل، tokenهای segment و summary tokenهاست؛ outputهای آخرین layer متناظر با summary tokenها، soft prompt انباشته‌شده تا این segment هستند.

σ^{<i} عملاً memory است و model مانند RNN عمل می‌کند: هر segment را می‌گیرد و memory را با encode کردن state قبلی و segment update می‌کند. memory حاصل از آخرین segment representation کل context است. Transformer می‌تواند LLM استاندارد باشد، اما برای task context representation باید fine-tune شود.

در این بحث prompt و context تا حدی مشابه در نظر گرفته شده‌اند، هرچند دقیقاً یکسان نیستند. اگر prompt را نوعی context بدانیم، روش‌های یادشده به text compression عمومی نیز قابل تعمیم‌اند.

۳.۳.۳ کاهش طول پرامپت

soft prompt بازنمایی dense و hidden فراهم می‌کند، اما مستقیماً interpretable نیست. نبود interpretability می‌تواند مانعی برای فهم اثر input بر output باشد. همچنین soft prompt با وجود efficiency، انعطاف‌پذیری کمی دارد و تغییر آن بدون fine-tuning یا modification دشوار است؛ در محیط‌های dynamic که prompt مرتب عوض می‌شود این محدودیت مهم است.

راه جایگزین برای efficient prompt، ساده‌سازی خود متن است. مثال منبع promptی برای question answering در healthcare و finance دارد:

وظیفه شامل توسعهٔ language modelی است که بتواند queryهای کاربران را در domainهای مختلف، با تأکید ویژه بر healthcare و finance، بفهمد و پاسخ دهد. با توجه به گسترهٔ queryها، از جزئیات diagnosis پزشکی تا ظرافت regulation مالی، مدل باید فهم جامع و پاسخ دقیق تضمین کند.
Question:
What are the best practices for using artificial intelligence in diagnosing cardiovascular diseases?

می‌توان بخش‌های کم‌اهمیت را حذف و task description را کوتاه کرد، یا آن را paraphrase کرد:

وظیفه توسعهٔ language modelی متمرکز بر healthcare و finance است که بتواند طیف گسترده‌ای از queryهای کاربر را بفهمد و دقیق پاسخ دهد.

این مسئله را می‌توان همان text simplification کلاسیک NLP دانست. روش ساده، heuristic برای تشخیص واژه‌های redundant و حذف tokenهایی است که contribution کمی به معنی دارند [Li et al., 2023c; Jiang et al., 2023b]. روش دیگر صورت‌بندی sequence-to-sequence و آموزش encoder-decoder روی labeled simplification data است. همچنین بسیاری از LLMهای aligned خود قادر به text simplification هستند؛ می‌توان از آن‌ها خواست متن را با constraintهایی مانند حد طول ساده کنند.

۳.۴ جمع‌بندی

این فصل مجموعه‌ای از مسائل prompting در LLM را بررسی کرد و عمدتاً بر دو جنبه متمرکز بود:

  • چگونه prompt پایه طراحی و سپس برای problem-solving مؤثرتر و efficientتر refine شود؟
  • چگونه طراحی و representation prompt خودکار شود؟

راه‌حل‌ها هم general prompt design و هم روش‌های پیشرفته مانند CoT و prompt learning را در بر می‌گیرند.

در NLP، prompting را می‌توان فناوری‌ای دانست که همراه با LLM تکامل یافته و راه کاربرد عملی مدل‌ها در دامنه‌های فراوان را باز کرده است. اگر مفهوم prompt را گسترده‌تر بگیریم، ریشه‌های آن تا machine learning و NLP قدیمی‌تر می‌رسد؛ مثلاً feature و template دست‌ساز برای «prompt» کردن task خاص. نمونه، feature رسمی/غیررسمی برای condition کردن machine translation بر نوع متن ورودی است.

کاربرد گستردهٔ مفهوم مدرن prompt با ظهور large pre-trained modelها آغاز شد. ابتدا مدل‌هایی مانند BERT عمدتاً با fine-tuning برای downstream task سازگار می‌شدند. سپس پژوهشگران دریافتند با افزودن واژه یا جملهٔ خاص به input می‌توان model را برای task خاص فعال کرد بدون fine-tuning گسترده. این کشف توسعهٔ foundation model عمومی را تقویت کرد که با promptهای مختلف taskهای مختلف را انجام می‌دهند بدون تغییر architecture یا pre-training procedure.

Prompting ابتدا با مدل‌های کوچک‌تر آزموده شد و سپس با مدل‌های بزرگی مانند GPT-3 توان چشمگیری نشان داد که با prompt ساده در taskهای متنوع متن باکیفیت تولید می‌کرد. با تکامل این فناوری، prompt engineering حوزهٔ مهمی شد که هم prompt دستی و هم prompt خودکار را برای بیشینه‌کردن performance بررسی می‌کند. پژوهش‌های جدید few-shot، zero-shot و CoT reasoning را توسعه داده‌اند. برای موضوعات پیشرفته‌تر، surveyهای in-context learning [Li, 2023; Dong et al., 2022]، CoT [Chu et al., 2023; Yu et al., 2023; Zhang et al., 2023a]، efficient prompting [Chang et al., 2024] و prompt engineering عمومی [Liu et al., 2023c; Chen et al., 2023a] معرفی شده‌اند.

در حالت ایده‌آل می‌خواهیم prompting عمومی بدون تغییر architecture یا parameter مدل توسعه یابد، اما نتیجهٔ prompting به quality و size خود LLM وابسته است. در مدل‌های قوی مانند LLMهای آنلاین تجاری، prompt ساده ممکن است برای task کافی باشد و prompt engineering نسبتاً آسان‌تر شود؛ هرچند همچنان effort لازم است. اگر LLM به‌اندازهٔ کافی قدرتمند نباشد، prompt باید با دقت بیشتری طراحی شود و در بسیاری موارد fine-tuning برای strategyهای prompting پیچیده همچنان ضروری است.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620