راه
۵ کیو· متوسط رو به بالامتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت

توجه ضرب‌داخلی مقیاس‌شده

لایه‌ی توجه (attention) برای هر جای دنباله، میانگینی وزن‌دار از اطلاعات همه‌ی جاها می‌سازد. هر جا سه بردار دارد: پرسش qq، کلید kk و مقدار vv. وزن جای jj برای جای ii از شباهت پرسش ii با کلید jj می‌آید:

S=QK⊤dA=softmax(S) (روی هر سطر)خروجی=A VS = \frac{QK^\top}{\sqrt{d}} \qquad A = \text{softmax}(S)\ \text{(روی هر سطر)} \qquad \text{خروجی} = A\,V

با QQ و KK به شکل n×dn \times d و VV به شکل n×dvn \times d_v. تقسیم بر d\sqrt{d} نمی‌گذارد ضرب‌های داخلی با بزرگ شدن dd آن‌قدر بزرگ شوند که softmax تقریباً یک‌داغ شود.

در توجه علّی (causal) — مثل مدل‌های زبانی که کلمه‌ی بعد را پیش‌بینی می‌کنند — جای ii فقط جاهای j≤ij \le i را می‌بیند: پیش از softmax، SijS_{ij} برای j>ij > i برابر −∞-\infty می‌شود (وزنش صفر).

تابع attention(Q, K, V, causal) خروجی n×dvn \times d_v را برمی‌گرداند؛ causal یک یا صفر است. softmax را پایدار حساب کنید: بیشینه‌ی هر سطر را پیش از نمایی کردن کم کنید.

نمونه‌ها

ورودی نمونه ۱
[[[0.35, 0.82], [0.33, -1.3], [0.91, 0.45]], [[-0.54, 0.58], [0.36, 0.29], [0.03, 0.55]], [[-0.74, -0.16], [-0.48, 0.6], [0.04, -0.29]], 0]
خروجی نمونه ۱
[[-0.377, 0.0456], [-0.3874, 0.1231], [-0.3609, 0.099]]

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود