آموزشترنسفورمرها

درس ۵۰ از ۶۲، هوش مصنوعی، حدود ۳۵ دقیقه خواندن

توجه پراکنده و پنجره‌ای

جواب کوتاه

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

یعنی چی

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

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

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

چهار تا الگو

جدول امتیازها رو تصور کنید؛ هر ردیف یه پرسش، هر ستون یه کلید. توی توجه معمولی همه‌ی خونه‌ها پرن. چهار الگوی پایه‌ی پراکندگی اینان:

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

پنجره

ساده‌ترین و پرکاربردترین الگو، پنجره‌ست. فکرش اینه که توی زبان، بیشتر رابطه‌ها نزدیکن؛ صفت کنار اسمش، فعل نزدیک فاعلش. پس اگه هر تکه فقط به، مثلا، ۵۱۲ تکه‌ی اطرافش نگاه کنه، بیشتر چیزهای مهم رو هنوز می‌بینه.

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

گام‌دار

پنجره فقط نزدیک‌ها رو می‌بینه. الگوی گام‌دار، که یه پژوهش ۲۰۱۹ معرفی کرد، می‌گه کنار پنجره، هر تکه به تکه‌هایی هم نگاه کنه که با یه گام ثابت ازش فاصله دارن. اگه گام صد باشه، تکه‌ی هزارم به تکه‌های ۹۰۰، ۸۰۰، ۷۰۰ و همین‌طور تا اول نگاه می‌کنه.

این الگو برای داده‌هایی که یه نظم تکراری دارن خیلی خوبه؛ مثلا تصویر، که اگه سطر به سطر خونده بشه، پیکسل بالایی هر پیکسل دقیقا یه سطر عقب‌تره. یا موسیقی، که ضرب‌ها تکرار می‌شن. همون پژوهش با همین الگوها، دنباله‌هایی به طول ده‌ها هزار رو مدل کرد؛ متن، عکس و صدای خام. اگه گام رو حدود ریشه‌ی طول متن بگیرن، هزینه‌ی هر تکه حدود دو برابر ریشه‌ی طول متن می‌شه، و کل هزینه، به‌جای مربع، حدود طول ضرب در ریشه‌ی طول.

سراسری

بعضی تکه‌ها یه نقش خاص دارن؛ مثلا تکه‌ای که اول متن برای «خلاصه‌ی کل متن» می‌ذارن، یا تکه‌های سوال توی یه کار پرسش و پاسخ. یه پژوهش ۲۰۲۰ گفت این چند تکه رو «سراسری» کنیم؛ هر کدوم به کل متن نگاه کنه، و کل متن هم به اون‌ها.

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

تصادفی

یه پژوهش دیگه‌ی ۲۰۲۰ یه چیز سوم هم اضافه کرد؛ هر تکه، کنار پنجره و سراسری‌ها، به چند تکه‌ی تصادفی هم نگاه کنه. شاید عجیب به نظر بیاد، ولی از نظریه‌ی شبکه‌ها میاد؛ توی یه شبکه که بیشتر پیوندها محلی‌ان، چند تا پیوند تصادفی دور، فاصله‌ی هر دو گره رو خیلی کوتاه می‌کنه. همون پدیده‌ای که بهش «دنیای کوچیک» می‌گن و می‌گه هر دو آدم روی زمین با چند واسطه به هم می‌رسن.

همون پژوهش نشون داد ترکیب پنجره و سراسری و تصادفی، از نظر نظری تقریبا هر کاری که توجه کامل می‌تونه یاد بگیره رو هم می‌تونه، و روی سندهای خیلی بلند، مثل پرسش و پاسخ روی یه مقاله‌ی کامل یا خلاصه کردن، بهتر از مدل‌های هم‌اندازه با پنجره‌ی کوتاه کار کرد.

ترکیب

توی عمل، تقریبا هیچ‌وقت فقط یکی از این الگوها به کار نمی‌ره. یه ترکیب رایج اینه:

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

میدان دید با هر لایه بزرگ می‌شه

شاید فکر کنید اگه هر تکه فقط ۵۱۲ همسایه رو ببینه، چیزی که دو هزار تکه دورتره رو هیچ‌وقت نمی‌فهمه. ولی ترنسفورمر چند لایه داره، و هر لایه روی خروجی لایه‌ی قبل کار می‌کنه:

توی لایه‌ی اول، هر تکه خبر ۵۱۲ همسایه‌ش رو جمع می‌کنه. توی لایه‌ی دوم، به همسایه‌هایی نگاه می‌کنه که خودشون خبر همسایه‌های خودشون رو دارن؛ پس عملا تا حدود هزار تکه دورتر رو می‌بینه. با ۳۲ لایه و پنجره‌ی ۵۱۲، میدان دید روی کاغذ به حدود ۱۶ هزار تکه می‌رسه. همون کاری که توی شبکه‌های تصویری، با لایه‌های پشت سر هم، پیش میاد.

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

هزینه، با عدد

بیاید برای یه متن ۶۵ هزار تکه‌ای حساب کنیم. توجه کامل حدود ۶۵ هزار ضرب در ۶۵ هزار جفت داره، یعنی حدود ۴٫۳ میلیارد. با پنجره‌ی ۵۱۲، هر تکه فقط ۵۱۲ جفت داره، یعنی روی هم حدود ۳۳ میلیون؛ ۱۲۸ برابر کمتر:

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

دسته‌بندی با درهم‌سازی

الگوهای بالا ثابتن؛ از پیش معلومه کی به کی نگاه کنه، بی‌توجه به معنی. یه پژوهش ۲۰۲۰ یه راه دیگه پیشنهاد داد؛ تکه‌هایی که پرسش و کلیدشون شبیهه، توی یه دسته بیفتن، و هر تکه فقط با هم‌دسته‌هاش توجه حساب کنه:

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

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

ماسک زدن کافی نیست

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

صرفه فقط وقتی هست که خونه‌های خالی اصلا حساب نشن. برای همین پژوهش‌های پراکنده کنار فکرشون، یه برنامه‌ی جدا برای کارت گرافیک هم نوشتن که فقط تکه‌های روشن رو بیاره و ضرب کنه. یه راه دیگه برای پنجره، اینه که متن رو به تکه‌های هم‌اندازه با پنجره ببریم و هر تکه فقط با خودش و تکه‌ی قبلی توجه حساب کنه؛ چند ضرب کوچیک ولی منظم، به جای یه ضرب بزرگ. پس وقتی یه جا می‌خونید یه مدل «پراکنده»‌ست، سوال درست اینه که پراکندگیش فقط توی جوابه، یا توی حساب هم هست.

هر سر، الگوی خودش

توی توجه چندسر دیدیم که هر سر یه نوع رابطه رو دنبال می‌کنه. توی توجه پراکنده هم لازم نیست همه‌ی سرها یه الگو داشته باشن. مثلا توی یه لایه، چند سر پنجره‌ی فشرده دارن و رابطه‌های خیلی نزدیک رو می‌گیرن، و چند سر پنجره‌ی گشاد، که با همون هزینه دورتر رو می‌بینن. پژوهش ۲۰۲۰ پنجره و سراسری دقیقا همین کار رو کرد و گشادی رو برای چند سر جدا گذاشت.

پژوهش ۲۰۱۹ هم یه کار مشابه کرد؛ توی هر لایه، یه گروه سرها الگوی پنجره داشت و یه گروه الگوی گام‌دار، و خروجی‌ها کنار هم گذاشته می‌شد. این‌طوری توی همون یه لایه، هم نزدیک‌ها دیده می‌شن و هم جاهای دور با فاصله‌ی ثابت، و برای رسیدن از هر جا به هر جای دیگه، فقط دو قدم لازمه.

چی از دست می‌ره

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

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

سخت‌افزار، تکه‌های پیوسته رو دوست داره

روی کاغذ، توجه پراکنده خیلی کمتر حساب داره. ولی توی عمل، خیلی از روش‌های پراکنده از توجه کامل تندتر نبودن. دلیلش همونیه که توی درس توجه سریع دیدیم؛ کارت گرافیک وقتی خوب کار می‌کنه که داده‌ی پیوسته رو یه‌جا برداره و ضرب‌های بزرگ انجام بده. خونه‌های پراکنده و بی‌نظم یعنی پرش‌های زیاد توی حافظه و ضرب‌های کوچیک و ناکارآمد.

برای همین بیشتر روش‌های موفق، پراکندگی رو تکه‌ای کردن؛ به‌جای خونه‌های تکی، تکه‌های مربعی مثلا ۶۴ در ۶۴ یا روشنن یا خاموش. هر تکه‌ی روشن یه ضرب کامل و کارآمده، و تکه‌های خاموش اصلا آورده نمی‌شن. همون نسخه‌ی تکه‌ای که پژوهش توجه سریع هم پیشنهاد داد. این یه درس کلی هم داره؛ یه روش، وقتی واقعا تندتره که با شکل سخت‌افزار جور باشه، نه فقط وقتی حسابش کمتره.

لنگر توجه

یه پدیده‌ی جالب که سال ۲۰۲۳ دیده شد؛ مدل‌های زبانی، توی خیلی از سرها، وزن زیادی روی چند تکه‌ی اول متن می‌ذارن، حتی وقتی اون تکه‌ها هیچ معنی خاصی ندارن. دلیلش اینه که سافت‌مکس مجبوره جمع وزن‌ها رو یک کنه؛ وقتی یه سر چیز مهمی برای دیدن پیدا نمی‌کنه، وزن اضافه رو یه جا خالی می‌کنه، و چند تکه‌ی اول، چون همه‌ی تکه‌ها اون‌ها رو می‌بینن، این جا شدن. اسمش رو گذاشتن «لنگر توجه».

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

پراکندگی موقع اجرا

تا این‌جا پراکندگی توی خود معماری بود و از روز اول آموزش با مدل بود. یه راه دیگه اینه که مدل با توجه کامل آموزش ببینه، ولی موقع اجرا، برای این‌که کش کلید و مقدار زیادی بزرگ نشه، بعضی کلیدها از کش بیرون انداخته بشن. یه پژوهش ۲۰۲۳ دید که توی هر لحظه، چند کلید کم بیشتر وزن رو می‌گیرن، و اگه فقط همون‌ها و چند تکه‌ی آخر نگه داشته بشن، کیفیت زیاد افت نمی‌کنه.

این‌جا پراکندگی وابسته به خود متنه، نه یه الگوی ثابت؛ و چون کلیدی که بیرون انداخته شده دیگه برنمی‌گرده، اگه بعدا لازم بشه، از دست رفته. برای همین این روش‌ها برای گفت‌وگوی معمولی خوبن، ولی برای کاری که یه جزئیات قدیمی رو بعدا دقیق لازم داره، مثل پیدا کردن یه شماره توی یه سند بلند، ریسک دارن.

توی تصویر

تصویر هم وقتی به تکه‌های کوچیک تبدیل بشه، تعداد تکه‌هاش زیاده. یه تصویر ۲۲۴ در ۲۲۴ با تکه‌های ۴ در ۴، می‌شه ۳۱۳۶ تکه، و توجه کامل روش نزدیک ده میلیون جفت. دو راه پراکنده این‌جا رایج شد. یکی، سال ۲۰۱۹، توجه محوری بود؛ هر تکه یه بار به کل سطر خودش نگاه می‌کنه و یه بار به کل ستون خودش. بعد از این دو قدم، هر تکه به همه رسیده، با هزینه‌ای خیلی کمتر.

دومی، سال ۲۰۲۱، پنجره‌های کوچیک مربعی بود؛ تصویر به پنجره‌های مثلا ۷ در ۷ تقسیم می‌شه و توجه فقط درون هر پنجره حساب می‌شه. برای این‌که پنجره‌ها از هم جدا نمونن، توی لایه‌ی بعد پنجره‌ها نیم‌پنجره جابه‌جا می‌شن، تا مرزهای قبلی وسط پنجره‌های تازه بیفتن. درباره‌ی ترنسفورمر برای تصویر، توی درس ترنسفورمر برای تصویر بیشتر می‌گیم.

اندازه‌ی پنجره رو چطور انتخاب کنن

اندازه‌ی پنجره یه بده‌بستونه. پنجره‌ی بزرگ‌تر یعنی رابطه‌های بیشتر مستقیم دیده می‌شن، ولی هزینه هم خطی با اون بالا می‌ره. یه قاعده‌ی سرانگشتی اینه که پنجره ضرب در تعداد لایه‌ها، دست‌کم به طول متنی که مدل باید بفهمه برسه؛ مثلا اگه متن‌ها ۳۲ هزار تکه‌ان و مدل ۳۲ لایه داره، پنجره‌ی هزار تکه دست‌کم روی کاغذ کل متن رو پوشش می‌ده.

ولی چون خبر دور از چند دست رد می‌شه، توی عمل پنجره رو بزرگ‌تر از این حداقل می‌گیرن، یا چند لایه‌ی کامل یا تکه‌ی سراسری اضافه می‌کنن. یه چیز دیگه هم هست؛ اندازه‌ی پنجره بهتره ضریبی از اندازه‌ی تکه‌هایی باشه که سخت‌افزار باهاش کار می‌کنه، مثلا ۶۴ یا ۱۲۸، تا تکه‌ی نیمه‌پر و هدررفته نداشته باشیم. معمولا لایه‌های پایین پنجره‌ی کوچیک‌تر دارن، چون بیشتر به رابطه‌های محلی مشغولن، و لایه‌های بالا بزرگ‌تر.

چطور بسنجیم کدوم بهتره

وقتی سال ۲۰۲۰ ده‌ها روش کارآمد اومد، هر کدوم روی یه آزمون خودش خوب بود و مقایسه سخت بود. یه پژوهش همون سال یه مجموعه‌ی مشترک ساخت؛ چند کار با دنباله‌های یک تا شانزده هزار تکه، مثل دسته‌بندی متن خیلی بلند، تشخیص این‌که دو سند بلند به هم ربط دارن، و پیدا کردن مسیر توی یه تصویر که پیکسل به پیکسل خونده شده. نتیجه این بود که هیچ روشی همه‌جا بهترین نبود، و بعضی روش‌های خیلی تند روی کاغذ، توی عمل تفاوت زیادی نداشتن.

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

لایه‌های یکی‌درمیون

یه راه ساده و پرکاربرد برای گرفتن خوبی هر دو، اینه که همه‌ی لایه‌ها پراکنده نباشن. یه مدل زبانی بزرگ سال ۲۰۲۰ لایه‌هاش رو یکی‌درمیون گذاشت؛ یه لایه توجه کامل، یه لایه توجه پنجره‌ای:

لایه‌های پنجره‌ای ارزون‌ان و رابطه‌های نزدیک رو می‌گیرن، و لایه‌های کامل، هر چند لایه یه بار، به همه‌ی متن یه نگاه مستقیم می‌ندازن. خیلی از مدل‌های امروزی همین فکر رو با نسبت‌های دیگه به کار می‌برن؛ مثلا چند لایه‌ی پنجره‌ای، یه لایه‌ی کامل. این‌طوری کش بیشتر لایه‌ها کوچیک می‌مونه، ولی مدل هنوز می‌تونه یه جزئیات دور رو مستقیم ببینه.

فرقش با توجه خطی

توجه پراکنده تنها راه کم کردن هزینه نیست. یه خانواده‌ی دیگه، به‌جای حساب نکردن بعضی خونه‌ها، کل جدول رو تقریب می‌زنن. یکی، سال ۲۰۲۰، فرض کرد جدول امتیازها «کم‌رتبه»‌ه، یعنی می‌شه کلیدها و مقدارها رو به یه تعداد کم و ثابت فشرده کرد، و هر پرسش فقط به این چند تا خلاصه نگاه کنه.

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

پراکندگی یادگرفته‌شده

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

یه پژوهش ۲۰۲۵ همین فکر رو با سخت‌افزار جور کرد؛ سه شاخه کنار هم، یکی خلاصه‌ی فشرده‌ی کل متن، یکی چند تکه‌ی انتخاب‌شده با جزئیات کامل، و یکی پنجره‌ی نزدیک، و مدل خودش یاد می‌گیره سهم هر کدوم چقدر باشه. مهم اینه که این پراکندگی از روز اول آموزش هست، نه این‌که بعدا به یه مدل کامل تحمیل بشه، و گزارش شد که روی متن‌های بلند هم از توجه کامل تندتره و هم کیفیتش کم نشده.

امروز کجاست

امروز توجه پراکنده بیشتر به دو شکل دیده می‌شه. اول، پنجره‌ای، توی بخشی از لایه‌ها، کنار لایه‌های کامل؛ به‌خصوص توی مدل‌هایی که پنجره‌ی متن خیلی بلند دارن، چون کش لایه‌های پنجره‌ای کوچیک می‌مونه. همون ترفندهای درس متن خیلی بلند.

دوم، پراکندگی تکه‌ای و یادگرفته‌شده، که کم‌کم داره جای الگوهای ثابت قدیمی رو می‌گیره. الگوهای تصادفی و درهم‌سازی، با همه‌ی زیبایی نظریشون، توی مدل‌های بزرگ امروز کمتر به کار می‌رن، چون با سخت‌افزار خوب جور نمی‌شن. بیرون از متن، توی تصویر و ویدیو هم پنجره‌ها رایجن؛ مثلا تصویر رو به پنجره‌های کوچیک تقسیم می‌کنن و توجه رو درون هر پنجره حساب می‌کنن.

از کجا اومد

از همون ۲۰۱۷ معلوم بود هزینه‌ی مربعی، طول متن رو محدود می‌کنه. سال ۲۰۱۹ الگوهای گام‌دار و ثابت اومدن و نشون دادن با پراکندگی می‌شه دنباله‌های ده‌ها هزاری رو مدل کرد. ۲۰۲۰ سال انفجار بود؛ پنجره و سراسری، پنجره و سراسری و تصادفی، دسته‌بندی با درهم‌سازی، خوشه‌بندی، کم‌رتبه و خطی، همه توی یه سال. اون‌قدر زیاد که پژوهش‌هایی هم فقط برای مقایسه‌ی منصفانه‌ی این‌ها نوشته شد.

بعد، سال ۲۰۲۲، توجه سریع اومد و توجه کامل رو اون‌قدر ارزون کرد که خیلی از این روش‌ها دیگه به‌صرفه نبودن. پراکندگی از بین نرفت، ولی شکلش عوض شد؛ ساده‌تر، تکه‌ای‌تر، و ترکیب‌شده با توجه کامل. از ۲۰۲۴ و ۲۰۲۵، با پنجره‌های خیلی بلند، پراکندگی یادگرفته‌شده دوباره مطرح شد.

اشتباه‌های رایج

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

سومی اینه که فکر کنن مدلی با پنجره‌ی ۵۱۲، هیچ‌چیز دورتر از ۵۱۲ تکه رو نمی‌بینه؛ با لایه‌های زیاد، دیدش خیلی بیشتره، فقط غیرمستقیم. و آخری اینه که فکر کنن می‌شه یه مدل آماده با توجه کامل رو، بی آموزش دوباره، پراکنده کرد؛ معمولا کیفیتش افت می‌کنه، مگه این‌که الگو خیلی نزدیک به چیزی باشه که مدل خودش یاد گرفته.

تمرین

این چهار تا رو اول خودتون جواب بدید. یک، متن ۱۶ هزار تکه‌ای با پنجره‌ی ۲۵۶؛ تعداد جفت‌ها چند برابر کمتر از کامله؟ دو، مدلی با ۲۴ لایه و پنجره‌ی ۱۰۲۴؛ میدان دید روی کاغذ حدودا چقدره؟ سه، با دو تکه‌ی سراسری، دو تکه‌ی خیلی دور از هم حداکثر با چند قدم به هم می‌رسن؟ چهار، چرا الگوی تصادفی به فاصله‌ها کمک می‌کنه؟

جواب‌ها. اولی، ۱۶ هزار تقسیم بر ۲۵۶، یعنی ۶۴ برابر. دومی، حدود ۲۴ ضرب در ۱۰۲۴، یعنی حدود ۲۴ هزار تکه. سومی، دو قدم؛ یکی به سراسری، یکی از سراسری. چهارمی، چون چند پیوند دور تصادفی، مثل شبکه‌های دنیای کوچیک، فاصله‌ی هر دو گره رو کوتاه می‌کنه.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

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

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد