برت (مدل زبانی)
الگو:Short description الگو:Infobox software بازنماییهای رمزگذار دوسویه از ترنسفورمرالگو:یادچپ الگو:اختصاری یک مدل زبانی است که در اکتبر ۲۰۱۸ توسط پژوهشگران Google معرفی شد.[۱][۲] این مدل برای نمایش متن بهصورت یک توالی از بردارها از یادگیری خودنظارتی استفاده میکند. و در این روش از معماری ترنسفورمر فقط رمزگذارالگو:یادچپ استفاده میکند. بهره گیری به عنوان نمونهای اولیه از یک مدل زبانی بزرگ، و همچنین بهبود چشمگیر عملکرد آن نسبت به مدلهای دیگر آنرا دارای اهمیت کرده است. الگو:As of، برت بهعنوان یک خطمبنای فراگیر در آزمایشهای پردازش زبانهای طبیعی مطرح است.[۳] برت با استفاده از دو تکنیک 1. پیشبینی توکن پوشیدهالگو:یادچپ و 2. پیشبینی جمله بعدی آموزش داده میشود. مشابه المو و جیپیتی ۲، برت در طول فرایند آموزش و در بطن خود، نمایشهای درونی و وابسته به متن را از روی توکنها فرا میگیرد.[۴] این مدل در بسیاری از وظایف پردازش زبان طبیعی، مانند تشخیص و رفع ابهام هممرجعالگو:یادچپ و رفع ابهام چندمعناییالگو:یادچپ، کاربرد پیدا کردهاست.[۵] این مدل گامی تکاملی نسبت به المو محسوب میشود و به پیدایش حوزهای موسوم به «برتولوژی»الگو:یادچپ انجامید که میکوشد فرابگیرد برت دقیقاً چه چیزهایی را یاد گرفته است.[۳]
برت در ابتدا برای زبان انگلیسی و در دو اندازه مدل، یعنی برت پایه (BERTBASE) با ۱۱۰ میلیون پارامتر و برت بزرگ (BERTLARGE) با ۳۴۰ میلیون پارامتر پیادهسازی شد. هر دوی آنها بر پایه پیکره کتاب تورنتوالگو:یادچپ [۶] (با ۸۰۰ میلیون واژه) و ویکیپدیای انگلیسی (با ۲٬۵۰۰ میلیون واژه) آموزش دیدهاند. وزنهای آموزشدادهشده نیز در گیتهاب منتشر شدند.[۷] در ۱۱ مارس ۲۰۲۰، ۲۴ مدل کوچکتر نیز منتشر شدند که مدل BERTTINY با ۴ میلیون پارامتر کوچکترین آنها بود.[۷]
معماری

برت یک معماری «ترنسفورمر فقط رمزگذار» است. در دید کلی، برت از چهار ماژول تشکیل شدهاست:
- توکنساز: این ماژول یک متن انگلیسی را به یک توالی از اعداد صحیح (توکنها) تبدیل میکند.
- دگرنماییالگو:یادچپ: این ماژول، توکنهای گسسته را به فضایی با ابعاد کمتر (با بردارهای حقیقی) مینگارد و نشاندهنده مرحله تبدیل انواع توکنهای گسسته به یک فضای اقلیدسی با بعد کمتر است.
- رمزگذار: پشتهای از بلوکهای ترنسفورمر دارای خود-آگاهیالگو:یادچپ است اما بدون پوشانندگی علّی (causal masking).
- سر وظیفهالگو:یادچپ: این ماژول، بردارهای نمایشِ نهایی را دوباره به توکنهای یک داغالگو:یادچپ نگاشت میکند و خروجی آن یک پیشبینی از توزیع احتمال بر روی انواع توکنها است. از این منظر میتوان آن را یک رمزگشا یا «لایه واگشایی»الگو:یادچپ در نظر گرفت.
گرچه سر وظیفه برای پیشآموزشالگو:یادچپ لازم است، اما غالباً در وظایف به اصطلاح «پاییندستی»الگو:یادچپ مانند پرسش و پاسخ یا عقیده کاوی به کار نمیآید. در این کاربردها، سر وظیفه حذف میشود و یک ماژولِ جدید که برای آن وظیفه مناسب است اضافه شده و سپس تنظیمدقیق بر روی مدل انجام میشود. به این ترتیب، بردارِ نمایش پنهان مدل به طور مستقیم وارد ماژول جدید شده و یک یادگیری انتقالی با کاراییِ نمونهای بالاالگو:یادچپ به دست میآید.[۱][۸]. امروزه با دیتاستهای به نسبت کوچک روی وظایف دلخواه پردازش زبانهای طبیعی هم میتوان به نتایج خوب با دقتهای بالایی رسید و به صورت محاسباتی هم هزینه کمتری دارند چراکه قبلا برت روی دادههای زیادی آموزش داده شده است.[۹]
دگرنمایی واژه
این بخش، دگرنمایی واژه بهکاررفته در BERTBASE را توصیف میکند. مدل BERTLARGE، مشابه همین است اما اندازه بزرگتری دارد.
ماژول توکنساز برت، وُردپیس است که یک راهکار زیرواژگانی همچون کدگذاری جفت بایت محسوب میشود. اندازه واژگان آن ۳۰٬۰۰۰ است و هر توکنی که در واژگان آن وجود نداشته باشد، با توکن [UNK] («ناشناس») جایگزین میشود.

لایه اول، لایه دگرنمایی واژهالگو:یادچپ است که از سه بخش تشکیل شدهاست: دگرنمایی نوع توکن، دگرنمایی جایگاه (موقعیت) و دگرنمایی نوع قطعه متن.
- نوع توکنالگو:یادچپ: این ماژول یک لایه دگرنمایی استاندارد است که بر اساس نوع توکن، یک بردار یک داغ را به یک بردار چگالالگو:یادچپ (فشرده) تبدیل میکند.
- جایگاهالگو:یادچپ: دگرنماییهای جایگاه بر اساس جایگاه توکن در توالی عمل میکنند. برت از دگرنمایی جایگاه مطلق استفاده میکندالگو:یادچپ. در این روش هر جایگاه در توالی به یک بردار حقیقی نگاشت میشود. هر بعد از این بردار یک موج سینوسی است که جایگاه توکن در توالی را به عنوان ورودی دریافت میکند.
- نوع قطعه الگو:یادچپ: با استفاده از یک مخزن واژگان صرفاً ۰ یا ۱، این لایه یک بردار چگال تولید میکند و عملاً نمایشی از تعلق توکن به بخش اول یا دوم متن ورودی است. بهعبارت دیگر، توکنهایی که پس از توکن ویژه
[SEP]قرار گرفتهاند همگی از نوع ۱ هستند و توکنهای پیش از آن از نوع ۰.
این سه بردار دگرنمایی با هم جمع میشوند تا نمایش اولیه توکن بورت تابعی از این سه دسته اطلاعات شکل بگیرد. پس از مرحله دگرنمایی، نمایش برداری با استفاده از عملیات LayerNorm[en] نرمالسازی میشود و یک بردار ۷۶۸-بعدی برای هر توکن ورودی بدست میآید. سپس، بردارهای نمایش از ۱۲ بلوک رمزگذارِ ترنسفورمر عبور میکنند و در انتها، با یک لایه تبدیل خطی سادهالگو:یادچپ به فضای واژگانی ۳۰٬۰۰۰-بعدی بازگشایی میشوند.
خانواده ساختار
پشته رمزگذار برت دو پارامتر آزاد دارد: (تعداد لایهها) و (اندازه پنهان). همیشه تعداد سرهای توجه خود برابر است و اندازه لایه میانیِ شبکه پیشخورالگو:یادچپ یا فیلتر همواره در نظر گرفته میشود. با تغییر این دو عدد، میتوان کل خانواده مدلهای برت را به دست آورد.[۱۰]
برای برت:
- «اندازه پیشخور» و «اندازه فیلتر» هممعنا هستند و هر دو اشاره به شمار ابعاد در لایه میانیِ شبکه پیشخور دارند.
- «اندازه پنهان» و «اندازه دگرنمایی» نیز هممعنا هستند و هر دو اشاره به تعداد اعداد حقیقی مورد استفاده برای نمایش یک توکن دارند.
نمایش پشته رمزگذار را بهشکل L/H مینویسند. بهعنوان نمونه، BERTBASE به صورت 12L/768H نوشته میشود، BERTLARGE بهشکل 24L/1024H، و BERTTINY نیز با 2L/128H نشان داده میشود.
آموزش
پیشآموزش
پیشآموزش برت بهصورت همزمان روی دو وظیفه انجام شده است.[۱۱]
مدلسازی زبانیِ پوشیدهالگو:یادچپ

در مدلسازی زبانیِ پوشیده، ۱۵٪ از توکنها بهصورت تصادفی برای وظیفه پیشبینی-توکن-پوشیده انتخاب میشدند و هدف آموزش این بود که توکن پوشیدهشده را بر اساس زمینه متن اطراف آن پیشبینی کند. با جزئیات بیشتر می توان این طور بیان کرد:
- با احتمال ۸۰٪ توکن انتخابی با
[MASK]جایگزین میشود. - با احتمال ۱۰٪ توکن انتخابی با یک واژه تصادفی جایگزین میشود.
- با احتمال ۱۰٪ هیچ تغییری اعمال نمیشود.
دلیل این که همه توکنهای انتخابی پوشیده نمیشوند، جلوگیری از مشکل جابهجایی توزیعالگو:یادچپ است. این مشکل زمانی پدید میآید که توزیع دادههای ورودی در مرحله آموزش بهطور چشمگیری با توزیع دادهها در مرحله استنتاجالگو:یادچپ متفاوت باشد. یک مدل برت آموزشدیده را میتوان برای نمایش واژگان (مشابه Word2Vec) استفاده کرد، بدین ترتیب این مدل به جای فعالیت بر روی یک توکن [MASK] شده، میتواند بر روی کل جمله اعمال میشود.[۱۲]
برای نمونه، جمله «سگ من بامزه است» در نظر بگیرید. ابتدا به توکنهای «سگ1 من2 بامزه3 است4» تقسیم میشود. سپس بهطور تصادفی یکی از توکنهای جمله انتخاب میگردد. فرض کنید توکن سوم «بامزه3» برگزیده شود. در مرحله بعد سه احتمال وجود دارد:
- با احتمال ۸۰٪ توکن انتخابی پوشیده میشود و نتیجه «سگ1 من2
[MASK]است4» خواهد بود. - با احتمال ۱۰٪ توکن انتخابی با یک توکن تصادفی مثل «خوشحال» جایگزین میشود، یعنی «سگ1 من2 خوشحال3 است4».
- با احتمال ۱۰٪ تغییری ایجاد نمیشود و جمله به همان صورت «سگ1 من2 بامزه3 است4» باقی میماند.
پس از پردازش متن ورودی، بردار خروجیِ چهارم مدل به لایه رمزگشای آن ارسال میشود که یک توزیع احتمالی را در فضای واژگان ۳۰٬۰۰۰-بعدیاش خروجی میدهد.
پیشبینی جمله بعدیالگو:یادچپ

با داشتن دو قطعه متن قبل و بعد، مدل پیشبینی میکند که آیا این دو قطعه در مجموعه داده بهصورت پشتسرهم ظاهر شدهاند یا نه و در نتیجه یکی از برچسبهای [IsNext] یا [NotNext] را خروجی میدهد. قطعه اول با توکن ویژه [CLS] (مخفف "classify") آغاز میشود و این دو قطعه با توکن ویژه [SEP] (مخفف "separate") از هم جدا میشوند. پس از پردازش این دو قطعه، بردار خروجیِ مرتبه ۱ (برداری که مربوط به [CLS] است) به یک شبکه عصبی جداگانه داده میشود تا طبقهبندی دودویی بهصورت [IsNext] یا [NotNext] انجام شود.
برای مثال، اگر ورودی بهصورت «[CLS] سگ من بامزه است [SEP] او بازی کردن را دوست دارد» باشد، مدل باید توکن [IsNext] را خروجی دهد.
اگر ورودی بهصورت «[CLS] سگ من بامزه است [SEP] آهنربا چگونه کار میکند» باشد، مدل باید توکن [NotNext] را خروجی دهد.
تنظیمدقیق
برت به عنوان مدلی پیشآموزشدیده، برای کاربریهای گوناگون در پردازش زبان طبیعی طراحی شده است. بدین صورت که پس از پیشآموزش، میتوان مدل برت را با منابع کمتر و روی مجموعهدادههای کوچکتر تنظیمدقیق کرد تا عملکردش را روی وظایف خاصی مانند استنباط زبان طبیعی، دستهبندی متن، و همچنین وظایف تولیدیِ مبتنی بر توالی به توالی مانند پرسش و پاسخ یا تولید پاسخ مکالمهای بهینه کند.[۱۳]
مقاله اولیه برت نتایجی را منتشر کرد که نشان میداد با مقدار کمی از تنظیمدقیق (برای مدل BERTLARGE، به میزان ۱ ساعت بر روی ۱ تیپییو ابری) به آن این امکان را میدهد که در شماری از وظایف درک زبان طبیعی جزو بهترینها باشد:[۱]
- مخزن داده GLUE (ارزیابی درک زبان عمومی) شامل ۹ وظیفه که مجموعهای از دیتاستهایی است که در پردازش زبانهای طبیعی به عنوان وظایف معروف به کار میروند.
- مخزن داده SQuAD (مجموعه داده سوال و پاسخ دانشگاه استنفورد) نسخه ۱٫۱ و ۲٫۰؛[۱۴]
- مخزن داده SWAG (موقعیتهای با تولید جملات تهاجمی) که موقعیتهایی از پردازش زبانهای طبیعی است که یک سازنده متخاصم آنها را درست کرده است.[۱۵]
در مقاله اصلی، همه پارامترهای برت تنظیمدقیق میشدند و توصیه شده بود که برای کاربردهای پاییندستی که متن را طبقهبندی میکنند، خروجی توکن در ورودیِ [CLS] وارد یک لایه خطی-سافتمکس شود تا برچسبها تولید شوند.[۱]
در کد منبع اولیه، لایه خطی نهایی «pooler layer» نامگذاری شده بود که شباهت زیادی با global pooling در بینایی ماشین داشت. هرچند عملاً همه توکنهای خروجی بجز توکن متناظر با [CLS] را کنار میگذاشت.[۱۶]
هزینه
برت بر روی پیکره کتاب تورنتو (با ۸۰۰ میلیون واژه) و نسخهای پالایششده از ویکیپدیای انگلیسی (با ۲٬۵۰۰ میلیون واژه) بدون فهرستها، جدولها و سرفصلها آموزش داده شد.
آموزش BERTBASE بر روی ۴ تیپییو ابری (در مجموع ۱۶ تراشه تیپییو) به مدت ۴ روز طول کشید و هزینه آن حدود ۵۰۰ دلار تخمین زده میشود.[۷]
آموزش BERTLARGE بر روی ۱۶ تیپییو ابری (در مجموع ۶۴ تراشه تیپییو) نیز ۴ روز زمان برد.[۱]
تفسیر
مدلهای زبانی مانند المو، جیپیتی ۲، و برت، به پیدایش حوزهای به نام «برتولوژی» منجر شدند که تلاش میکند دریابد این مدلها چه چیزهایی را میآموزند. عملکرد آنها در این وظایف درک زبان طبیعی هنوز بهخوبی درک نشدهاست.[۳][۱۷][۱۸] در سالهای ۲۰۱۸ و ۲۰۱۹، چندین پژوهش تلاش کردند تا رابطه بین ورودیهای انتخابشده و خروجیهای برت را بررسی کنند،[۱۹][۲۰] و بردارهای درونی (مدل فضای برداری) را با استفاده از کاوشگر طبقهبندیکننده الگو:یادچپ تحلیل کنند،[۲۱][۲۲] و بررسی کنند که وزنهای توجه چه رابطهای را بازنمایی میکنند.[۱۷][۱۸]
عملکرد بالای مدل برت ممکن است به این دلیل باشد که در فرایند آموزش بهصورت دوسویه آموزش داده میشود.[۲۳] به این معنی که برت، بر اساس معماری مدل ترنسفورمر، مکانیزم توجه خود را بهگونهای اعمال میکند که هم از متن سمت چپ و هم از متن سمت راست در طول آموزش اطلاعات بیاموزد و در نتیجه درک عمیقی از بافت متن به دست آورد. برای نمونه، واژه «fine» در جملههای انگلیسی «I feel fine today» و «She has fine blond hair» دو معنای متفاوت دارد که وابسته به بافت هستند. برت، واژگان پیرامون واژه «fine» را هم از چپ و هم از راست در نظر میگیرد.
البته این کار هزینههایی هم دارد: به دلیل معماری فقط رمزگذار که فاقد بخش رمزگشا است، برت نمیتواند مورد پرسش قرار بگیرد و قادر به تولید متن نیست. البته بطور کلی مدلهای دوسویه بدون داشتن اطلاعات از سمت راست چندان مؤثر عمل نمیکنند؛ بنابراین بهسختی میتوان از آنها بهعنوان مدلهای قابل پرسش استفاده کرد. برای نمونه، اگر بخواهید از برت برای ادامه جمله «امروز، رفته بودم» استفاده کنید، ممکن است آن را به «امروز، رفته بودم [MASK] [MASK] [MASK] ... [MASK]» تبدیل کنید که تعداد [MASK]ها برابر طول جمله مورد نظر برای ادامه است. اما این کار باعث تغییر توزیع داده میشود؛ چون در مرحله آموزش، برت هرگز جملاتی را ندیده است که در آن این تعداد توکن پوشیده ([MASK]) وجود دارد. در نتیجه عملکرد آن ضعیف میشود. روشهای پیچیدهتری برای تولید متن با برت وجود دارند اما هزینه محاسباتی بالایی دارند.[۲۴]
تاریخچه مدل
پیش از برت تاریخچه اینگونه مدلها به روشهای نیمهنظارتی یادگیری ماشین[۲۵] و مدلهایی دیگر نظیر ELMo[۲۶] و ULMFit[۲۷] برمیگردد. برخلاف مدلهای پیشین برت یک مدل دوطرفه (Bidirectional) بدون نظارت (Unsupervised) است که روی متن خام آموزش داده شده است. برخی از مدلهای دیگر نظیر Word2vec یا GloVe همگی به صورت مستقل از زمینه (Context free) هستند که برای هر کلمه مستقل از محتوا میتوانند یک نمایش (Embedding) ایجاد نمایند ولی برخلاف آنها برت با تمرکز روی زمینه (Context) میتواند بر اساس محتوا برای یک کلمه نمایشهای مختلفی داشته باشد و این ما را یک قدم به فهمیدن مفهوم یک کلمه در جمله فارز از معنی کلمه نزدیکتر میکند. به عنوان نمونه اگر دو جمله به صورت «He is running a comapny» و «He is running a marathon» داشته باشیم که در اولی «running» به معنای «اداره کردن» و در دومی «running» به معنای «دویدن» است برای این دو کلمه میتواند بر اساس محتوای جمله تفاوت قائل شود و آنها را به یک صورت نمیبیند ولی مدلهای پیشین که به صورت مستقل از محتوا عمل میکنند این مشکل را نمیتوانند حل نمایند.
در تاریخ ۲۵ اکتبر ۲۰۱۹ شرکت گوگل سرچ (Google Search) اعلام کرد که آنها شروع به استفاده از مدل زبانی برت برای جستجوهای انگلیسی کاربران آمریکایی شدهاند.[۲۸] همچنین در تاریخ ۹ دسامبر ۲۰۱۹ برت بر روی بیش از ۷۰ زبان زنده دنیا پیادهسازی شدهبود[۲۹] و در اکتبر ۲۰۲۰ هر جستجوی انگلیسی با استفاده از برت انجام میشد و بر روی آن برت پردازشی برای تشخیص مفهوم انجام میداد.[۳۰]
گونهها
مدلهای برت تأثیرگذار بودند و الهامبخش گونههای گوناگونی شدند.
RoBERTa[۳۱] (سال ۲۰۱۹) یک بهبود در زمینه مهندسی محسوب میشود. این مدل، معماری برت را دستنخورده حفظ میکند (با اندکی افزایش اندازه، یعنی ۳۵۵ میلیون پارامتر)، اما آموزش آن را بهبود میبخشد؛ بطوری که ابرپارامترهای کلیدی را تغییر میدهد، وظیفه «پیشبینی جمله بعدی» را حذف میکند و از اندازههای خیلی بزرگتر دسته کوچک استفاده میکند.
DistilBERT (سال ۲۰۱۹) با روش تقطیر، مدل BERTBASE را به مدلی با تنها ۶۰٪ از تعداد پارامترهای آن (۶۶ میلیون) تبدیل میکند، در حالی که ۹۵٪ از امتیازهای معیار آن حفظ میشود.[۳۲][۳۳] بهشکل مشابه، TinyBERT (۲۰۱۹)[۳۴] یک مدل تقطیرشده است که تنها ۲۸٪ از پارامترهای مدل اصلی را داراست.
ALBERT (سال ۲۰۱۹)[۳۵] از اشتراک پارامترها بین لایهها استفاده کرد و آزمایشی را ترتیب داد که در آن اندازه لایه پنهان و اندازه خروجی لایه دگرنمایی واژه را بهعنوان دو ابرپارامتر مستقل تغییر داد. همچنین بجای وظیفه «پیشبینی جمله بعدی» از وظیفه «پیشبینی ترتیب جملهها»الگو:یادچپ استفاده کردند که در آن مدل باید ترتیب درست دو قطعه متنی پیاپی را از ترتیب وارونشده آنها تشخیص دهد.
ELECTRA (سال ۲۰۲۰)[۳۶] ایده شبکههای مولد تخاصمی را به وظیفه MLM اعمال کرد. بجای پوشاندن توکنها، یک مدل زبانی کوچک دیگر، جایگزینهای ممکن و معقولی برای توکنهای اصلی تولید میکند و شبکه بزرگتر تشخیص میدهد کدام توکنها جایگزین شدهاند. مدل کوچک سعی میکند مدل بزرگ را فریب دهد.
DeBERTa
DeBERTa (سال ۲۰۲۰)[۳۷] یک گونه معماری مهم با مکانیزم توجه «تفکیکشده»الگو:یادچپ است. ایده کلیدی آن این است که نمایش موقعیت و نمایش توکن را در سراسر مکانیزم توجه بصورت جداگانه نگه میدارد. برخلاف برت که رمزگذاری موقعیت () و توکن () را با هم جمع میکند تا یک بردار ورودی تشکیل دهد ()، در DeBERTa این دو حالت بهصورت زوج مرتب نگهداری میشوند: . سپس در هر لایه توجه خود، DeBERTa بهجای تنها یک ماتریس توجه در BERT، سه ماتریس توجه متمایز محاسبه میکند.الگو:یادچپ
| انواع توجه | Query type | Key type | مثال |
|---|---|---|---|
| محتوا-به-محتوا | توکن | توکن | "اروپا"؛ "قاره", "اتحادیه" |
| محتوا-به-موقعیت | توکن | موقعیت | [صفت]؛ +1, +2, +3 |
| موقعیت-به-محتوا | موقعیت | توکن | -1؛ "خیلی", "نه" |
سه ماتریس توجه ذکر شده بهصورت درایه-به-درایهالگو:یادچپ با هم جمع میشوند، سپس وارد یک لایه softmax شده و در انتها در یک ماتریس projection ضرب میگردند.
رمزگذاری موقعیت مطلق در لایه نهاییِ توجه، خود بعنوان ورودی اضافی در نظر گرفته میشود.
مقاله برت
مقالهای که مدل زبانی برت را برای اولین بار معرفی نمود در سال ۲۰۱۹ جایزه بهترین بلندترین مقاله سال (Best Long Paper Award) را در قسمت آمریکای شمالی کنفرانس NAACL را برنده شد و به عنوان بهترین مقاله در این زمینه در سال ۲۰۱۹ شناخته شد.[۳۸]
یادداشتها
منابع
پیوند به بیرون
الگو:جعبه ناوبری هوش مصنوعی الگو:گوگلالگو:پردازش زبان طبیعی
- ↑ ۱٫۰ ۱٫۱ ۱٫۲ ۱٫۳ ۱٫۴ الگو:Cite arXiv
- ↑ الگو:Cite web
- ↑ ۳٫۰ ۳٫۱ ۳٫۲ الگو:Cite journal
- ↑ الگو:Citation
- ↑ الگو:Cite web
- ↑ name="bookcorpus"الگو:Cite arXiv
- ↑ ۷٫۰ ۷٫۱ ۷٫۲ الگو:Cite web
- ↑ الگو:Citation
- ↑ الگو:Cite web
- ↑ الگو:Citation
- ↑ الگو:Cite web
- ↑ الگو:Citation
- ↑ الگو:Cite book
- ↑ الگو:Cite arXiv
- ↑ الگو:Cite arXiv
- ↑ الگو:Cite web
- ↑ ۱۷٫۰ ۱۷٫۱ الگو:Cite book
- ↑ ۱۸٫۰ ۱۸٫۱ الگو:Cite journal
- ↑ الگو:Cite journal
- ↑ الگو:Cite book
- ↑ الگو:Cite journal
- ↑ الگو:Cite journal
- ↑ الگو:Cite journal
- ↑ الگو:Cite arXiv
- ↑ الگو:Cite arXiv
- ↑ الگو:Cite arXiv
- ↑ الگو:Cite arXiv
- ↑ الگو:Cite web
- ↑ الگو:Cite web
- ↑ الگو:Cite web
- ↑ الگو:Cite arXiv
- ↑ الگو:Citation
- ↑ الگو:Cite web
- ↑ الگو:Citation
- ↑ الگو:Citation
- ↑ الگو:Citation
- ↑ الگو:Citation
- ↑ الگو:Cite web