NLP stuff
4.06K subscribers
147 photos
1 video
2 files
277 links
مطالب خوب و به‌دردبخور در حوزه‌ی هوش مصنوعی و پردازش زبان طبیعی!

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

اگر انتقاد، پیشنهاد و یا مطلب مفیدی (لینک، پست و ...) داشتید:
@AliAkbarBadri
@mmsamiei
@MmahdiAghajani
Download Telegram
نوتبوک back-translation با قابلیت هرس

در خیلی از موقعیت‌ها، شما با یک دیتاست با حجم کمی رو به رو هستید و قادر به اضافه کردن حجمش نیستید. طبیعتا آموزش مدل روی دیتاست کوچک نتیجه خوبی به همراه نداره و مجبور به Data Augmentation هستید. یکی از شیوه‌های Data Augmentation در داده‌های متنی استفاده از back-translation است (متن‌هایی که دارید رو مثلا از فارسی می‌برید به انگلیسی و دوباره از انگلیسی برمی‌گردونید به فارسی، حالا شما متن‌های متفاوت ولی هم معنی دارید) یکی از مشکلات این روش می‌تونه این باشه که متن تولید شده‌ای که به دست میاد ممکنه کلا تو دیوار باشه و ارتباطی به متن اولیه نداشته باشه. دوستمون آقای سجاد ایوبی، اومدن و یک نوتبوک برای back-translation با استفاده از گوگل ترنسلیت نوشتند و برای استفاده شما در اختیار قرار دادند. یک نکته خوبی که این کد ارائه شده ایشون داره اینه که پس از آگمنت ‌کردن متن دوم، اون رو با استفاده از مدل‌های sentence embedding با جمله اول مقایسه می‌کنه و در صورتی که میزان شباهت معنایی این دو متن کمتر از حد آستانه خاصی بود، متن دوم رو به عنوان نویز در نظر می‌گیره و به خروجی نمیده.

لینک:
https://www.kaggle.com/sajjadayobi360/filtred-back-translation

پ.ن. ریپو یا کد به‌دردبخوری داشتید، ندا بدید که بعد از بررسی در کانال قرار بدیم.

#code

@nlp_stuff
الگوریتم LookAhead: چند گام رو به جلو، یک گام به عقب!

چند تا از اعضای آزمایشگاه وکتور دانشگاه تورنتو در کنفرانس نیپس سال ۲۰۱۹، الگوریتم بهینه‌سازی جالبی به نام LookAhead (LA) برای آموزش شبکه‌های عمیق ارائه کردند.
مقاله مال دو سال پیشه، اما چون ما جدیدا خوندیمش، گفتیم با شما هم به اشتراک بگذاریم.

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

الگوریتم LookAhead از یه دونه الگوریتم بهینه‌سازی داخلی مثل آدام و SGD و … استفاده می‌کنه و دو جور وزن (متغیر) داره؛ وزن‌های سریع (theta) و وزن‌های کند (phi). وزن‌های سریع رو الگوریتم داخلیه به‌روز می‌کنه و وزن‌های کند رو خود الگوریتم LookAhead.

همونطور که در شبه‌کد در تصویر ضمیمه شده قابل مشاهده‌ست، این الگوریتم اینجوری کاری می‌کنه که همون اول وزن‌های کند رو میریزه توی وزن‌های سریع بعد می‌گذاره که اون الگوریتم داخلی، k گام در حلقه‌ی داخلی پیش بره و وزن‌های سریع شبکه رو به‌روز کنه و مثلا برسه به theta(t,k). بعد بین وزن‌های کند دور قبلی الگوریتم (phi(t-1)) و این وزن‌های سریع جدید (theta(t,k)) یه درون‌یابی ساده می‌کنه و یه نقطه اون وسط پیدا می‌کنه و phi(t) رو بدست میار و درست مثل دفعه قبل اینو اول حلقه بیرونی توی (theta(t+1,0) قراره بریزه تا دفعه بعدی، الگوریتم حلقه داخلی با مقادیر اولیه همین وزن‌های کند کارشون رو شروع کنند. اینکه کجای خط باشه، با یه هایپر پارامتر به نام آلفا مشخص میشه.
پس این الگوریتم دو تا ابرپارامتر اضافی با نام k و آلفا داره.
شکل سمت چپ تصویر اول ضمیمه شده (همون نمودار سبزه) تفاوت مسیر حرکت یه الگوریتم مثل SGD و LookAhead رو معلوم می‌کنه. k گام الگوریتم داخلی میره، بعد یه درون یابی بین نقطه اولیه و آخری زده میشه و نقطه شروع جدید پیدا میشه و باز Kگام الگوریتم داخلی و …

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

حالا قشنگی ماجرا کجاست؟ همونطور که گفتیم این الگوریتم مشکل وابستگی زیاد به هاپیرپارامترها رو حل می‌کنه و به الگوریتم داخلی میگه که تو وحشیانه پیش برو، من کنترلت می‌کنم. مثل اینکه یه عده از کوه دارند میان پایین، یک نفر بالا می‌ایسته و به بقیه میگه این سر طناب دست من، شما سریع و خشن برید پایین، بعد یه جایی اون وسط مسطا که بهتره همو می‌بینیم. اون عکس دوم ضمیمه شده (ورق بزنید) هم نشون میده که الگوریتم داخلی (آدام و SGD و اینا) به تنهایی اگر اجرا می‌شدند هی می‌خواستند گند بزنند ولی الگوریتم LookAhead هی نمی‌گذاره دقت بیفته.

در مقاله می‌تونید نتایج آموزش مدل‌ها با این الگوریتم رو، روی تسک‌های مختلف (دسته‌بندی عکس‌ها، مدل زبانی و ترجمه ماشینی) ببنید که همواره بهتر و با همگرایی سریع‌تر عمل کرده.


لینک مقاله:
https://arxiv.org/abs/1907.08610

لینک ویدیوی ارائه یکی از نویسندگان مقاله:
https://www.youtube.com/watch?v=TxGxiDK0Ccc

لینک ویدیوی توضیح ایده به صورت خلاصه و تصویری و زیبا:
https://www.youtube.com/watch?v=I5sLWKKcEyI

پ.ن. کانال رو بقیه معرفی کنید که دور هم صفا کنیم! :)

#read
#paper

@nlp_stuff
ارائه‌ی علمی «داده‌ها برای مسائل آموزشی»

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

زمان: پنج‌شنبه ۱۴ مرداد، ساعت ۱۸

لینک اتاق مجازی انجمن علمی رستا:
https://vc.sharif.edu/ch/rastaiha

پ.ن. ما با اندک کانالمون، از رویدادهای مفید و مرتبط با کانال به صورت رایگان حمایت می‌کنیم.

#other

@nlp_stuff
گلاب‌گیری از دیتاست!

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

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

در چند ماه اخیر چندین روش Dataset Distillation اومدند که از زوایای مختلف سعی در رخنه به این مساله داشتند، یکی از این زوایا استفاده از کرنله. در اولین مقاله مورد بحثمون، اومدند و مساله رو به صورت Kernel Ridge Regression مدل کردند به صورتی که شما یک کرنل پیش‌فرضی دارید و دیتاست کوچیک نمونه‌‌های آموزشی و دیتاست بزرگ نمونه‌های تستی هستند و بایستی مدل KRR آموزش یافته روی دیتاست کوچک میزان لاسش بر دیتاست بزرگ کمینه بشه. از اینجا روابطش بر حسب نمونه‌های دیتاست کوچک به دست میاد و اون‌ها رو به همراه لیبل‌هاشون می‌شه یادگرفت (اسم کل این الگوریتم رو هم گذاشتن KIP و LS).

حالا چند ماه بعد از این مقاله، مقاله دیگه‌ای اومده و با توجه به قضایای مطرح شده Neural Tangent Kernel که بیان میکنه هر شبکه بسیار عریضی (شبکه‌ای که تعداد نورون‌هاش در لایه به بی‌نهایت میل می‌کنه) رو میشه به یک کرنل مپ کرد سعی کرده قضیه رو جلو ببره (این NTK خودش دنیای جداییه که اگر درد بی‌دردی دارید می‌تونید بخونیدش). پس در ادامه یک شبکه کانولوشنی چندلایه رو فرض کردند و با فرض عریض بودنش کرنلش رو استخراج کردند سپس با روش مقاله قبلی دیتاست کوچک رو یاد گرفتند و بعد با بقیه تئوری‌هایی که سمت NTK هست کرنل رو به شبکه کانولوشنی با عرض غیر بی‌نهایتشون برگردوندند.

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

لینک مقاله اول:
https://arxiv.org/abs/2011.00050
لینک مقاله دوم:
https://arxiv.org/abs/2107.13034

پ.ن: دوستان! لطفا کانال رو با فوروارد کردن پست‌ها و به اشتراک گذاری لینکشون یاری کنید.

#read
#paper

@nlp_stuff
بازشناسی نهاده‌های نامدار؛ ققنوسی که دوباره جان می‌گیرد!

تسک بازشناسی نهاده‌های نامدار یا NER تسکی است که مدت‌ها است طبق shared task های تعریف شده شاید به اشباع رسیده باشه. در واقع دقت مدل‌ها در این تسک امروزه به بالای ۹۰ درصد رسیده و خیلی‌ها شاید فکر کنند دیگه دوره این تسک تموم شده. اما در یادگیری عمیق هیچ وقت حتی امثال این تسک هم کنار گذاشته نمی‌شوند. معمولا تسک‌هایی که به این حد از دقت می‌رسند در ادامه راه وارد یکی از سناریو‌های زیر می‌شوند.

در سناریو اول عملکرد مدل‌های موجود بر روی دیتاهای نویزی بررسی میشه و سعی میشه در محیط‌های نویزی عملکرد مدل‌ها رو بهبود بدند. در سناریوی دوم، برخی وارد حوزه‌های تفسیرپذیری مدل می‌شوند و به چرایی تولید این نتایج عالی می‌پردازند و در سناریوی آخر وارد مباحث few-shot learning می‌شوند. پس اگه در حوزه NLP کار می‌کنید و دلبسته این تسک‌های خوش‌تعریف و قدیمی مثل NER هستید ناامید نباشید( بالاخره هرچیزی قدیمی‌ش بهتره!) چون نیک‌نامانی از سرزمین اژدها دقیقا برای همین NER در حوزه few-shot learning یه مقاله خوب بیرون دادند. در few-shot learning هدف اینه که با دیدن تعداد کمتری از نمونه‌های آموزشی برچسب‌خورده به دقت‌های مطلوبی برسیم. این دوستان ابتدا شبکه RoBERTA رو به عنوان شبکه اصلی انتخاب کردند و سپس مدل بیس‌لاین رو یه دسته‌بند خطی بر روی RoBERTA تعریف کردند و سعی کردند این مدل بیس‌لاین رو در سناریوهای five-shot ، دیدن ۱۰ درصد و یا دیدن تمام داده آموزشی شکست بدهند. برای این‌کار سه روش کلی تعریف کردند. در روش اول با استفاده از meta learning و روش prototyping سعی کردند که برای هر نوع از نهاده‌های نامدار یه وکتور دربیارند و براساس میزان شباهت بردار هر توکن با وکتور هر نوع نهاده نامدار برچسب اون توکن رو تشخیص بدند. در روش بعدی از حجم وسیع دیتای ویکی‌پدیا استفاده کردند که به صورت نویزی لیبل خورده (‌حدود ۷۷ درصد لیبل‌هاش فقط درسته) و با استفاده از این دیتا سعی کردند مدل رو فاین‌تیون بکنند و در روش آخر هم از self-training استفاده کردند. به این صورت که یه پیکره کوچک از توکن‌هایی که لیبل دارند رو درست کردند و باهاش یه مدل ترین کردند. حالا اون مدل، یه پیکره بزرگ‌تر که لیبل نداره رو لیبل میزنه و با مجموعه دادگان اولی و دادگان دوم که توسط مدل لیبل خورده دوباره یه مدل جدید ترین می‌کنند.

در اکسپریمنت‌هاشون از چندین دیتاست مشهور و مرجع استفاده کردند و همچنین سناریو‌هایی شامل ترکیبی از روش‌های بالا رو به‌کار بردند که با یه بررسی کلی میشه گفت روشی که استفاده از ویکی‌پدیا به همراه self-training بوده در حالت‌های five-shot و ۱۰ درصد پیکره بهترین عملکرد رو داشته و به صورت میانگین و به ترتیب، اف‌اسکور حدود ۵۸.۵ و ۷۹.۹ رو برای five-shot و ۱۰ درصد پیکره به‌دست آورده که خیلی خوب هست. برای اینکه بتونید خوب مقایسه کنید لازمه بدونید که تنها استفاده از یه دسته‌بند بر روی شبکه RoBERTA در حالت five shot learning می‌تونه اف‌اسکور حدود ۵۰ درصد به‌دست بیاره درحالیکه استفاده از تکنیک‌های بالا تونسته حدود ۸ درصد این رو بهبود بده. نکته جالب هم اینه که روش meta learning by prototyping تنها در دیتاست WNUT که مربوط به دیتاهای نویزی توییتری هست تونسته بهترین عملکرد رو داشته باشه و بقیه سناریو‌ها همواره از این روش بهتر بودند. در ادامه و در عکس‌های این پست می‌تونید جزییات عملکرد این سناریو‌ها رو مشاهده کنید.

لینک مقاله:
https://arxiv.org/abs/2012.14978

#paper
#read

@nlp_stuff
دادگان NLI مولتی مودال گوگل!

گوگل در ACL2021 دادگان جدید و جالبی منتشر کرده به نام Recognizing Multimodal Entailment!
قبلا راجع به NLI در این پست [https://t.iss.one/nlp_stuff/201] صحبت کردیم؛ اما این دادگان فرق می‌کنه چون ترکیبی پرروی متن و عکسه برای این تسکه.
داستان اینه که آیا یک جفت عکس و متن، یک جفت عکس و متن دیگه رو نتیجه می‌ده (Implies) یا با هم در تضاد هستند (Contradictory) یا نسبت به هم خنثا هستند (NoEntailment).

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

این مجموعه دادگان از توئیتر جمع آوری شده و حدود ۱۵۰۰ جفت آدرس توئیت و یک ستونه که لیبل قضیه‌ست.

https://github.com/google-research-datasets/recognizing-multimodal-entailment

#link
#dataset

@nlp_stuff
تهدید‌ها و فرصت‌های مدل‌های شالوده‌ای

هوش مصنوعی در طی دهه‌های اخیر چندین انقلاب و تغییر پارادایم را تجربه کرده است. در انقلاب لرنینگ، دیگر به مانند روش‌های سنتی منطقی نیازی نبود تا طرز تصمیم‌گیری به مدل فهمانده و مدل به لطف الگوریتم یادگیری (backpropagation) می‌توانست صرفا از روی داده‌ها خروجی موردنظر را یاد بگیرد. در انقلاب یادگیری عمیق، مدل حتی نیازی به ورودی گرفتن ویژگی‌های استخراج شده از داده را نیز نداشت و به صرف اتکا بر معماری خود قادر به یادگیری ویژگی‌ها نیز بود. در دو سه سال اخیر، مدل‌های غول‌آسایی همچون Bert و Dall-E و GPT3 با عملکرد‌های قابل توجهشان بر وظایف مختلف بار دیگر موجب جلب توجه دنیا به هوش مصنوعی شده‌اند. بر پایه این مقدمه‌چینی، محققینی از استنفورد این پدیده را انقلاب سوم مدل‌های شالوده‌ای دانسته‌اند. به این معنا که اکنون در حال مواجهه شدن با یک تغییر پارادایم هستیم که در آن با یک مدل غول پیکر مانند GPT3 مواجه هستیم که به واسطه یادگیری خودنظارتی بر روی حجم عظیمی از دیتاها به چنان توانایی دست یافته که به مانند یک شالوده می‌توانند پایه‌ای برای حل سایر مسائل مرتبط (برای GPT مثلا حل تمامی وظایف زبانی) قرار بگیرد. توانمندی بالای این مدل‌ها باعث شده تا نرم نرمک در صنعت نیز مورد استفاده قرار بگیرند (گوگل برای موتور جستجوی خود از برت استفاده می‌کند) .علی رغم تمامی این داستان‌ها، اما چگونگی یادگیری و تصمیم‌گیری و تفسیرپذیری مدل‌های شالوده‌ای کاملا مبهم است و برای همین نمی‌دانیم کی و تحت چه شرایطی و به چه شدتی خرابکاری به بار می‌آورند و اصلا در نهایت تا چه حد قابل توسعه هستند.

اکنون بیشتر از صد محقق از بیش از ده زمینه علمی متنوع از دانشگاه استنفورد دور یکدیگر جمع‌ شده‌اند و مقاله‌ای بالای ۱۵۰ صفحه‌ای بیرون داده‌اند که به نوعی تلاش برای کند و کاو مدل‌های شالوده‌ای از جنبه‌های مختلف است. این مقاله در چهار بخش اصلی تدوین شده که به موضوعات قابلیت‌های مدل‌های شالوده‌ای در حوزه‌های مختلف (برای مثال تصویر، متن، روباتیک و ...)، کاربرد‌های مدل‌‌های شالوده‌ای در دنیای واقعی، پایه‌های تکنولوژیکی و فنی مدل‌های شالوده‌ای (برای مثال نحوه جمع‌آوری دادگان آموزشی این مدل‌ها یا میزان و کیفیت سخت‌افزار لازم برای آن‌ها) و در نهایت پیامد‌های استفاده از این مدل‌ها (مسائلی نظیر fairness و ضرر وارده به محیط زیست و مسائل اقتصادی و اخلاقیو خلاصه هر چه که فکر کنید!) می‌پردازد.

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

لینک مقاله:
https://arxiv.org/abs/2108.07258

#paper
#read

@nlp_stuff
به شبکه فرصت تامل بدهیم!

یکی از تفاوت‌های اساسی انسان با مدل‌های یادگیری ماشین این است که میزان زمان پاسخدهی انسان برای پاسخ به یک مساله می‌تواند تابعی از سختی آن مساله باشد حال آن که در مدل‌های یادگیری ماشین میزان زمان پاسخدهی تنها وابسته به معماری مدل و یا اندازه ورودی است (برای مثال هر چه قدر رشته ورودی به یک شبکه بازگشتی طولانی‌تر باشد بیشتر طول می‌کشد تا شبکه پاسخ نهایی را تولید کند). به بیان بهتر، ذهن انسان می‌تواند برای حل یک مساله با ورودی دشوارتر بیشتر تمرکز و توجه برای حل آن بگذارد، چیزی که یادگیری ماشین قادر به آن نیست. حال محققینی از deepmind با الگوگیری از این ایده، با ارائه مدلی به نام PonderNet سعی در عملیاتی کردن آن کرده‌اند. این مدل در درون خود یک شبکه به نام تابع گام را پیاده‌سازی کرده است که با گرفتن x (یعنی ورودی مساله) و h_n (یعنی حالت نهان تابع گام در گام قبل) سه خروجی y_n (حدس مدل از خروجی در گام n)، h_n+1 (حالت نهان بعدی تابع گام) و البته λ_n (که احتمال توقف مدل در گام n) را تولید میکند. به بیان شهودی‌تر، شبکه در هر گام زمانیش یک خروجی و احتمال به خاتمه رسیدن کار در این گام را محاسبه می‌کند. این مدل برای فاز اموزش خود نکاتی در مورد تابع هدف و طرز بهینه‌سازی آن دارد که در صورت جلب توجهتان می‌توانید مقاله‌ را بخوانید اما برای فاز تست، جواب نهایی این گونه تولید می‌شود که در هر گام با توجه به احتمال خاتمه کار، یک عدد از توزیع برنولی با پارامتر احتمال خاتمه نمونه‌برداری می‌شود و در مورد ادامه یا خاتمه کار مدل با آن تصمیم‌گیری می‌شود.

نویسندگان مقاله با آزمایش مدل روی چند وظیفه از جمله parity و پرسش و پاسخ روی bAbi ادعا کرده‌اند که این مدل نسبت به داده‌های خارج از توزیع خود در زمان اموزش مقاوم‌تر و بهتر عمل می‌کنند. در پرانتز، تسک parity به این صورت است که یک بردار با سایز ۶۴ داریم که تعداد رندومی از عناصر آن یک و منفی یک هستند و باقی عناصر صفر هستند. حال با توجه به این ورودی مدل بایستی تشخیص دهد که آیا تعداد یک ها زوج هستند یا فرد. نکته اینجاست که با توجه به در هم آمیخته بودن صفر و یک و منفی یک‌ها، مدل برای تشخیص زوج یا فرد بودن تعداد یک‌ها، نمی‌تواند از جمع عناصر استفاده کند و واقعا مجبور است بشمارد. خالقان PonderNet همچنین پیشنهاد داده‌اند که از این مدل، با توجه به این که نسبت به پیچیدگی مساله تنظیم می‌شود، می‌توان در وسایلی مانند موبایل‌ها که از منابع پردازشی کمتری برخوردار هستند استفاده کرد. در واقع به جای این که بار پیچیدگی مساله بر معماری مدل و سخت افزار آن بیافتد در طول زمان تقسیم خواهد شد.

لینک مقاله:
https://arxiv.org/abs/2107.05407

#read
#paper

@nlp_stuff
مستندسازی کیفیت عملکرد مدل‌های زبانی فارسی

بسیاری از مواقع مقاله یا مدلی رو دیدید که نویسنده ادعا کرده با مدل ابداعی خودش به فلان دقت روی یک وظیفه زبان فارسی رسیده، اما در عین حال کد و مستندی رو برای این ادعاش منتشر نکرده. بچه‌های تیم هوش مصنوعی شرکت مفید کدهای تمیزی زدند که ملت بتونند راحت مدل‌های مختلف ارائه شده برای وظایف زبان فارسی رو روی دیتاست‌های مختلف تست بگیرند و ارزیابی کنند. نکته مهم‌تر اینه که کدهاشون رو روی گیت سخاوتمدانه به اشتراک گذاشتند؛ پس بهشون استار بدید که انرژی بگیرند و بقیه‌ی کدهاشونم بگذارند. :)

لینک ریپو:
https://github.com/Mofid-AI/persian-nlp-benchmark

#tool
#irani

@nlp_stuff
ترکیبی پررو؛ multi-agent systems و zero-shot learning و deep RL


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

اون‌ها می‌خواستند ایجنت‌هایی رو آموزش بدند که با دیدن یه بازی جدید پنیک نزنند و با یه فاز fine-tuning سریع بتونند اون بازی رو خوب در بیارند (zero-shot learning). برای این‌کار اولین چالش نبود دیتا بود. با توجه به عقبه‌ی فنی دیپ‌مایند، ابتدا یه فاز مهندسی نرم‌افزاری سنگین برداشتند و ابزاری به نام XLand رو طراحی کردند که یه galaxy of games است و تصاویرش رو در ذیل همین پست می‌تونید ببینید. در واقع با ادبیات یادگیری تقویتی، XLand، یه environment پیچیده‌ست که می‌تونه در طول زمان صد‌ها بازی مختلف با پارامتر‌های مختلف رو تولید کنه. بعد شروع کردند در این محیط چندین ایجنت ایجاد کردند و اون‌ها رو در بازی‌های مختلف قرار دادند (multi-agent systems). بازی‌هایی مثل capture the flag یا قایم‌باشک و چندین و چند بازی دیگه. نکته اینه که یادگیری این ایجنت‌ها هیچ وقت متوقف نمیشه و همواره در طول زمان دارند یاد می‌گیرند. در واقع در هر نسل بهترین ایجنت انتخاب می‌شه و از پالیسی که یاد گرفته عصاره‌گیری میشه و برای راه‌اندازی نسل بعد از اون عصاره استفاده می‌شه (نشون داده شده که با راه‌اندازی نسل‌های بعد با عصاره پالیسی گرفته‌شده، مدت زمان فاین‌تیون شدن ایجنت و عملکردش بهبود داده می‌شه). همچنین تسک‌هایی که توسط XLand تولید میشن به‌صورت داینامیک و در طول نسل‌های مختلف توزیع‌شون عوض می‌شه و در واقع تسک‌ها برای هر نسل جدید مقداری تازگی دارند که به general capability این ایجنت‌ها در محیط XLand کمک می‌کنه.

بر اساس RL هر ایجنت باید ارزش هر استیت رو تخمین بزنه و با استفاده از مقادیر تخمین‌زده شده پالیسی خودش رو به‌روز رسانی کنه. در معماری شبکه‌ی این ایجنت‌ها، تصاویر به صورت RGB از دل یک شبکه torso عبور می‌کنند و به LSTM داده می‌شوند تا امبدینگ تولید بشه. از طرفی هدف تسک رو هم امبد می‌کنند و به همراه امبدینگ شبکه LSTM به ماژول GOAT یا Goal Attention Network می‌دهند. این ماژول یاد میگیره که چه‌طور برای تخمین ارزش‌ هر استیت تنها به بخش‌هایی از این امبدینگ‌ها توجه کنه و valueها رو تخمین بزنه و با استفاده از valueهای تخمین‌زده‌شده، پالیسی خودش رو آپدیت کنه. به این ترتیب هر ایجنت همیشه سعی می‌کنه یه پالیسی زیربهینه داشته باشه و هر نسل که می‌گذره بهترین ایجنت از منظر عملکرد انتخاب می‌شه و پالیسی‌ش برای نسل‌های بعدی عصاره‌گیری می‌شه. با توجه به تغییر توزیع تسکٰ‌ها، در واقع ایجنت‌های نسل‌های جدید، باید سعی کنند با استفاده از پالیسی که از قبل به ارث بردند با انجام یه سری آزمایش و صحیح و خطا و گرفتن reward، خیلی سریع خودشون رو با محیط تطبیق بدهند.

وقتی موقع ارزیابی روی تسک‌های جدید میرسه، ایجنت‌ها به جای اینکه رفتارهای عجیب نشون بدند، با شهود شروع به آزمایش و خطا در محیط می‌کنند به طوری‌که حتی همکاری با ایجنت‌های دیگه رو هم امتحان می‌کنند و جالبه که مثل آدم‌ها که با غریبه‌ها کمتر تعامل می‌کنند، این مخلوقات هم وقتی در یه محیطی قرار می‌گیرند که ایجنت‌های دیگه کپی خودشون هستند تعاملاتشون بیش از زمانیه که ایجنت‌های غریبه در محیط حضور دارند! نتیجه اینکه با آزمایشاتی که انجام دادند نشون دادند تنها حدود ۳۰ دقیقه زمان نیازه که در تسک‌های پیچیده‌ای مثل قایم‌باشک به عملکرد عالی برسند (ببینید کار خدا رو!). در واقع با این روش، ایجنت‌هایی تولید شدند که general capable هستند و در مواجهه با بازی‌های جدید دست‌و‌پابسته نیستند. درنهایت این دوستان لینکی از بلاگ و ویدیو این مقاله ۵۶ صفحه‌ای رو هم تدارک دیدند که می‌تونید ازش استفاده کنید.

لینک مقاله:
https://storage.googleapis.com/deepmind-media/papers/Open-Ended%20Learning%20Leads%20to%20Generally%20Capable%20Agents/open-ended-learning-paper.pdf

لینک بلاگ:
https://deepmind.com/blog/article/generally-capable-agents-emerge-from-open-ended-play

لینک ویدیو:
https://youtu.be/lTmL7jwFfdw

پ.ن.۱: حجم مهندسی نرم‌افزار (قسمت XLand) رو ببینید خداوکیلی!

پ.ن.۲: تصاویر رو ورق بزنید و لذت ببرید.معماری شبکه هر ایجنت هم در تصاویر هستند!

#read
#paper

@nlp_stuff
This media is not supported in your browser
VIEW IN TELEGRAM
نوت‌بوک جستجوی متنی در عکس‌ها

این آبجیمون [https://twitter.com/dalequark] یه نوت‌بوک جمع و جور و تمیز زده که یه متن ورودی می‌گیره و بین عکس‌ها با استفاده از کتابخونه‌ی ترنسفورمر هاگینگ‌فیس و مدل کلیپ openai سرچ می‌کنه و به ترتیب امتیازشون مرتب میکنه.

لینک کولب نوت‌بوک:
https://colab.research.google.com/drive/11oPxFcWJvVeIl5IOTSpT9EXou-e3kVgM?usp=sharing

لینک توئیت:
https://twitter.com/dalequark/status/1431308397522063366?s=20

پ.ن. لطفا کانال رو به بقیه هم معرفی کنید.

#code

@nlp_stuff
ارائه‌های ICML 2021

این لینک حاوی اسلایدها و ویدیوی ارائه‌های کنفرانس معتبر ICML امساله. می‌تونید به صورت موضوعی (با استفاده از تب collection) هم ارائه‌ها رو ببینید و لذتشو ببرید.

https://slideslive.com/icml-2021

#link

@nlp_stuff
مقاله former-∞

یکی از گرفتاری‌های ترنسفورمرها نحوه برخورد اونها با دنباله‌های طولانیه، این قضیه مخصوصا در ترنسفورمر‌های کلاسیک که محاسبه، از مرتبه درجه دو نسبت به طول دنباله رشد می‌کنه، نمود بیشتری داره. نسخه‌های مختلفی از ترنسفورمر‌ها در مقالات مختلف پیشنهاد شدند تا این درد رو تخفیف بدند ولی چیزی که در همه این ترنسفورمر‌ها مشترکه، ظرفیت محدود توجه است؛ یعنی همیشه به یک طول محدودی از دنباله‌ها میتونیم توجه کنیم. مقاله مدل former-∞ که در این پست بررسی می‌کنیم در پی دادن پاسخی به این پرسشه که آیا می‌تونیم ترنسفورمری داشته باشیم که به دنباله‌ای با طول بی نهایت توجه کنیم؟ (برای درک قضیه، معماری lstm رو در نظر بگیرید که می‌تونه دنباله‌ای با طول بی نهایت رو پردازش کنه)

ایده پیشنهادی این مقاله استفاده از پیوسته‌سازی ورودی‌ها و همچنین انجام توجه پیوسته‌ست. در ساختار خودش هم، این معماری یک حافظه کوتاه مدت گسسته و یک حافظه بلند مدت پیوسته داره. حافظه کوتاه مدت که شبیه به همان ساختار اصلی ترنسفورمر‌هاست و حاوی تعدادی توکنه. اما در مورد حافظه بلندمدت، این حافظه قراره که بیانگر کل تاریخچه توکن‌های دیده‌شده توسط مدل به صورت پیوسته باشه. قطعا سوال الان توی ذهنتون اینه که چگونه پیوسته‌ست؟ به صورت مختصر و مفید، فرض کنید که یک دنباله داریم که متشکل از ۱۰۰۰ تا توکن با سایز امبدینگ ۱۲۸ است. حالا مدل به جای این که سعی کنه برای هر بعد امبدینگ ۱۰۰۰ توکن رو ذخیره کنه، میاد و یک مدل رگرشن (مثلا درجه سه) روی این هزار تا نمونه اموزش میده و پارامترهای اون مدل رو که به مراتب کمتر از ۱۰۰۰ هستند ذخیره می‌کنه. به اصطلاح و دید فنی، یک سیگنال پیوسته رو از روی نمونه‌های گسسته‌ای که داره می‌سازه. وقتی هم که بخواد در هر گام زمانی به این حافظه بلندمدتش توکن‌های دیگه ای رو اضافه کنه اول، از مدل پیوسته حافظه بلندمدتش نمونه‌برداری میکنه و توکن‌های مورد نظر رو به این نمونه‌های برداشته شده الحاق میکنه و یک مدل رگرشن دیگه‌ای آموزش میده.

حالا نوبت قلب ترنسفومر یا انجام توجه است. هر یک از توکن‌های دنباله ورودی که اسمش رو X میگذاریم روی دو حافظه کوتاه مدت گسسته و حافظه بلندمدت پیوسته عملیات توجه رو انجام می‌دهند و حاصل این دو توجه با هم جمع می‌شوند. عملیات توجه روی حافظه گسسته که شبیه همون ترنسفورمر عادیه اما داستان برای توجه روی حافظه پیوسته فرق می‌کنه. داستان به این صورته که مدل از روی پارامتر‌های مدل رگرشنی که برای پیوسته‌سازی استفاده کرده بود بردارهای کلید (K) و مقدار (V) رو می‌سازه. حالا از روی این بردارها و بردارهای کوئری (Q) که برای توکن‌های ورودی دنباله X داشتیم دو پارامتر میانگین و واریانس برای یک توزیع گاوسی رو پیدا می‌کنه. حالا این توزیع گاوسی قراره که به مثابه پنجره روی حافظه پیوسته عمل کنه و حاصل توجه از اعمال یک جور کانولوشن با این پنجره گاوسی رو حافظه پیوسته به دست میاد. در نهایت هم که حاصل دو توجه گسسته و پیوسته با هم جمع می‌شوند.

برای آزمایش هم این مدل را روی وظایفی که نیاز به هندل کردن دنباله با طول زیاد بوده آموزشش دادن و نتایجش رو با مدل Transformer-XL مقایسه کرده‌اند و نشون داده‌اند که از اون بهتر عمل کرده. مثلا یک نمونه وظیفه این بوده که دنباله‌ای تصادفی شامل تعدادی عدد تولید کرده‌اند و از مدل خواسته اند که در خروجی اعداد رو به ترتیب نزولی فرکانسشون در دنباله ورودی، خروجی بدهد.

در صورتی که کنجکاوتر شدید می‌تونید ویدئو یانیک کیلچر شیرین‌زبان رو در توضیح این مقاله مشاهده کنید:
https://www.youtube.com/watch?v=0JlB9gufTw8

لینک مقاله:
https://arxiv.org/abs/2109.00301

پ.ن. با معرفی کردن کانال به بقیه، حمایتش کنید.


#paper
#read

@nlp_stuff
مدل‌های دسته‌بندی صوتی در هاگینگ‌فیس

قبلا در دو پست این [https://t.iss.one/nlp_stuff/152] و این [https://t.iss.one/nlp_stuff/184] راجع به مدل wave2vec و ابزار speechbrain صحبت کرده بودیم.
حالا کم‌کم زمان برداشت فرا رسیده و ملت مدل‌های کاربردی روی این مدل‌ها و ابزارهای پایه دارند تولید می‌کنند و روی هاگینگ‌فیس هم می‌گذارند.
به تسک‌هایی مثل تشخیص زبان، استخراج کلمات کلیدی، تشخیص احساسات، تشخیص گوینده و … از روی صدای ورودی، دسته‌بندی صوتی گفته میشه.

لینک کل مدل‌های دسته‌بندی صوتی موجود روی هاگینگ فیس:
https://huggingface.co/models?pipeline_tag=audio-classification

لینک مدل تشخیص زبان (فارسی هم داره) با Speechbrain:
https://huggingface.co/speechbrain/lang-id-commonlanguage_ecapa

#tool
#link

@nlp_stuff
خاطره‌های قدیمی رو زنده‌ کنید؛ این بار با مدل GFP-GAN

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

آدرس پست:
https://virgool.io/overfit/gfp-gan-gxudgqbqptsd

پ.ن: با معرفی کانال به دیگران، بقیه رو هم در لذتی که می‌برید شریک کنید!

#paper
#read
#blog
#overfit

@nlp_stuff
بلاگی برای یادگیری GNN

شاید شما هم جزء اون دسته افرادی باشید که با افتادن گذر به مباحث مربوط به Graph Neural Network کمیتتون لنگ می‌زنه و به خاطر عدم مطالعه درست و حسابی پایه‌ای نتونستید با این جور مباحث ارتباط برقرار کنید. امروز دو تا لینک بلاگ درست حسابی براتون آوردیم که با خوندن اونها می‌تونید به مقدمات گراف در دیپ لرنینگ وارد بشید و از این به بعد خوندن مقالات این حوزه رو هم جزو گزینه‌هاتون قرار بدید. از خوبی‌ها این بلاگ اینه که از ب بسم الله به طرز روان و همه‌کس‌فهم و با تصویرسازی‌های موثر و فراهم کردن زمین‌بازی‌های تعاملی (playground) سعی کرده این مطالب رو توضیح بده. لینک اول راجع به داده‌های با ذات گراف و مسائلشون و ایده و ساختار GNN صحبت میکنه. لینک دوم هم در رابطه با چند گونه مختلف از GNN‌ها (نظیر GCN و GAT و ...) و پیاده‌سازی ایده کانولوشن روی گراف توضیح میده.

لینک اول:
https://distill.pub/2021/gnn-intro/

لینک دوم:
https://distill.pub/2021/understanding-gnns/

پ.ن: قبلا در زمینه گراف یک کورس خوب هم در این پست [https://t.iss.one/nlp_stuff/163] معرفی کرده بودیم.

#coach
#read
#blog

@nlp_stuff
مدل‌سازی سه‌بعدی با استفاده از NeRF

ما انسان ها و به طور کلی حیوانات در ساختن نمای سه‌بعدی از اشیایی و تصاویر دوبعدیشون ماهر هستیم؛ ولی این ماجرا برای هوش مصنوعی فرق می‌کنه. فرض کنید یک تعداد عکس از یک شی (مثلا صندلی) با زاویه‌های مختلف می‌گیرم و می‌خواهیم مدل سه‌بعدی اون شی رو داشته باشیم که تصویر با هر زاویه دلخواه از اون رو بتونیم رندر بگیریم به این کار میگیم View Synthesis. برای این کار یک سری روش اولیه و ساده این بوده که از تصویر‌های دو بعدی سعی می‌کردند حجم (volume) سه‌بعدی شی رو بسازند که البته ذخیره‌سازی این volume حافظه‌ای نزدیک به چند گیگ می‌خواسته و خب قاعدتا کار به صرفه‌ای نبوده. یک دسته دیگر از روش‌ها اما سعی کرده‌اند شی سه بعدی رو به شکل یک رویه مدل کنند و پارامتر‌های معادله اون رویه رو به دست بیارند (در مقایسه با دسته قبلی، این روش‌های مثلا فقط نیاز به ۱۰ مگابایت حافظه داشته‌اند)

اما یک مقاله‌ای پارسال منتشر شد به اسم Neural Radiance Fields یا به اختصار NeRF، کاری که تو این مقاله می‌کنند اینه که یک شبکه عصبی آموزش میدن که با گرفتن تصویر در ورودی خودش، در خروجی خودش سه کانال رنگی و میزان آلفا یا opacity رو با گرفتن مختصات x,y,z و زاویه نگاه مورد نظر (تتا و فای) تولید می‌کنه. به صورت واضح‌تر یعنی شما به شبکه مثلا یک تصویر صندلی می‌دید و بهش x,y,z خودتون و زاویه دیدتون رو هم می‌دید و شبکه براتون اون نما از صندلی نسبت به اون موقعیت و زاویه رو درست میکنه؛ یعنی:
(x,y,z,theta,phi) => MLP => (R,G,B, alpha)

حالا این کار چه طوری انجام می‌پذیره؟ برای تولید تصویر دوبعدی در زاویه مورد نظر یه ray (پرتو، خط فرضی) از مرکز نگاه ما (دوربین) به هر نقطه در تصویر دوبعدی که می‌خواهیم بسازیم رد می‌کنند و ادامه می‌دهند. (این پرتو صرفا یه معادله خط در فضاست، یک خط بین دونقطه: دوربین و هر پیکسل تصویر دو بعدی) در نقاطی در طول پرتو سمپل برمی‌دارند و میانگین می‌گیرند (تقریب یک انتگرال) یعنی همونطوری که توی شکل مشخص شده مقادیر RGB و آلفا رو برای نقاط روی خط در نظر گرفته شده (که بش می‌گیم پرتو) حساب می‌کنند و میانگین این مقادیر میشه RGB و آلفا پیکسلی از تصویر دو بعدی که پرتو اون رو قطع می‌کنه. این کار رو برای چندین تصویر دوبعدی که از شی داریم انجام میدن. با این کار اون شی شکل سه‌بعدیش در وزن‌های شبکه عصبی انکود میشه و میشه هر view ازش رو ساخت.

سوال بعدی اینه که این رو چطوری آموزش میدن؟ همین کار پرتو رو انجام میدن و برای تصاویری که داریم. شبکه یسری پیکسل تولید کرده که با پیکسل های واقعی MSE، به عنوان loss می‌گیرند. تقریبا نیم‌روز طول می‌کشه برای یک جسم یاد بگیره ولی توی 30 ثانیه view تولید می‌کنه. وزن‌های شبکه عصبی هم حدود 5 مگابایت اینا میشه. دقت خیلی خوب وضوح تصویر عالی داره.

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

یسری بحث یادگیری ویژگی‌های فرکانس بالا برای جزییات بهتر هم داره که از محدوده این پست خارجه.

مقاله:
https://arxiv.org/pdf/2003.08934

لینک مقاله‌ها و پیاده‌سازی‌هاشون برای این زمینه:
https://github.com/yenchenlin/awesome-NeRF

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

#read
#paper

@nlp_stuff
This media is not supported in your browser
VIEW IN TELEGRAM
مدل‌های document parsing در هاگینگ‌فیس

دو مدل LayoutLMv2 و LayoutXLM از مایکروسافت برای پارس کردن تصاویر متنی به هاگینگ فیس اضافه شده و دمویی هم در لینک زیر براشون قرار داده شده که می‌تونید امتحان کنید. به این مدل‌ها مولتی‌مودال بین متن و لایوت و تصویر گفته میشه. این مدل‌ها کلمه‌های داخل عکس را یکی از تگ‌های مثل QUESTION/ANSWER/HEADER/OTHER می‌زنند و یعنی دارند کل جدول رو براتون پارس می‌کنند که باعث میشه خیلی راحتتر بتونید با مقادیر جدول کار کنید.
مدل LayoutXLM روی ۵۳ تا زبون (از جمله فارسی) پیش‌آموزش داده شده.

- دموی مدل LayoutLMv2:
https://huggingface.co/spaces/nielsr/LayoutLMv2-FUNSD


- لینک‌های مقاله و هاگینگ‌فیس مدل LayoutXLM:
https://huggingface.co/microsoft/layoutxlm-base

https://arxiv.org/abs/2104.08836


- لینک‌های مقاله و هاگینگ‌فیس مدل LayoutLMv2:
https://huggingface.co/microsoft/layoutlmv2-base-uncased

https://arxiv.org/abs/2012.14740

#tool
#link

@nlp_stuff
آشنایی با متد gather در pytorch

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

لینک ویرگول:
https://virgool.io/overfit/gather-in-pytorch-lhce2bm1wkb3

#read
#blog
#overfit

@nlp_stuff