Telegram Web Link
مدل مولتی مودال Frozen

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

با وجود تمامی اوصاف و مناقب مدلهای نظیر GPT3، اما به علت این که این مدل‌ها صرفا محدود به دیتاهای متنی است، از قدرت بالای اونها در حل مسائل بینایی نمی‌تونیم استفاده کنیم. حالا افرادی از دیپ مایند اومدند و یک مدل زبانی مولتی‌مودال با قابلیت یادگیری few shot رو با نام Frozen خلق کردند و یک پیپر بیرون دادند. در واقع هدف از این مدل این بوده که بتونه هم با داده تصویری و هم با داده متنی کار کنه. داده متنی رو که به راحتی و با توکنایزر میشه به رشته‌ای از بردارها تبدیل کرد و به مدل ورودی داد، میمونه داده‌های تصویری. برای داده‌های تصویری هم این دوستان اومدند و شبکه‌‌ای رو آموزش دادند که با ورودی گرفتن یک تصویر در خروجی خودش دنباله‌ای از بردارها رو تولید کنه ( انگار که تصویر رو به امبدینگ چند تا کلمه تبدیل میکنه) و سپس هر موقع بخوان تصویری رو به مدل زبانی ورودی بدن، در عوض میان این دنباله‌ بردارهای تولیدشده توسط این شبکه انکودر تصویری رو به مدل زبانی ورودی می‌دن. برای آموزش مدل‌ هم وظیفه Image Captioning رو در نظر گرفتند. به این شکل که تصاویر دادگان Conceptual Caption رو به مدل دادند و ازش خواستند که Caption رو تولید کنه.

حالا چرا اسم مدل Frozen است؟ پاسخ این به نحوه آموزش مدل برمی‌گرده. از اونجایی که قدرت مدلهای نظیر GPT بسیار زیاده و ناشی از آموزش دیدن اونها روی حجم عظیمی از داده است پس اصلا عاقلانه نیست که وزن‌های این شبکه رو بخوایم باهاشون ور بریم و دستکاری‌شون کنیم. در نتیجه در هنگام آموزش این شبکه پارامتر‌های مدل زبانی ثابت میمونن و در عوض گرادیانی که به عقب برمی‌گرده میره و انکودر تصویری رو آموزش میده. در واقع این انکودر تصویریه که باید بتونه خودش رو با مدل زبانی تنظیم کنه.

در نهایت هم اومدند با انجام چند آزمایش و گذاشتن نتایجش در مقاله نشون دادن که چه قدر یادگیرنده Few Shot خوبیه این مدل.

جهت درک بهتر توضیحات ارائه شده میتونید تصاویر پیوست شده از مقاله رو یه نگاهی بیاندازید.

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

#paper
#read

@nlp_stuff
ماشین‌های خودران تسلا!

آقای Andrej Karpathy، مدیر ارشد هوش مصنوعی شرکت تسلا، در CVPR2021 ارائه‌ای با موضوع Tesla Autonomous Driving ارائه کرده که نکات جالبش رو با هم مرور می‌کنیم.
قبلا برای ماشین‌های خودران، چیزی به نام sensor fusoin بوده که سعی می‌کرد بین سیگنال از دوربین و رادار و … اجتماع بگیره اما حالا تسلا اومده کلا روی استفاده سنگین از vision!

برای اینکه بشه هر جای دنیا (و نه فقط در شهرهای خاصی که دیتا و نقشه‌اش کامله) استفاده کرد، باید به هوش خود ماشین تکیه کرد و نه فقط سنسورها! این موضوع نیاز به دیتای زیاد (میلیون‌ها ویدیو)، تمیز (لیبل زده شده و دارای لیبل سرعت، شتاب، عمق و…) و متنوع (انواع وضعیت‌ها در رانندگی) داره. پس اومدند هشت تا دوربین دور و بر ماشین نصب کردند که از اطراف فیلم می‌گیره. اینجوری کلی دیتای لازم واسه ماشین برای مسیریابی جمع شده.
بعد رفتند سراغ لیبل زدنش؛ چون حجم دیتا خیلی خیلی زیاده (هشت تا دوربین و کلی فریم) نمی‌شده همینجوری آدم بیاری لیبل بزنه، چون حتی واسه تسلا هم خیلی گرون بوده (حتی اگر چند بار دیگه هم جیب ملت رو با بازی با بیت‌کوین خالی می‌کرد)!
واسه همین اومدند با یه روش جالب به اسم Data Auto Labeling اینکارو کردند.
داستان اینه که بررسی یه اتفاق در لحظه رخداد خیلی سخت‌تره تا بعدها؛ به این موضوع واپس‌نگری (hindsight) گفته میشه که شما گذشته و حال و آینده‌ی یک اتفاق رو می‌دونید. یعنی اینجا شما می‌تونی با بهترین دوربین‌ها و سنسورها کلی دیتا رو ضبط کنی و بعدا بیاری توی آزمایشگاه با قوی‌ترین مدل‌ها و پردازنده‌ها بررسی کنی که مثلا چرا در فلان لحظه دید دوربین مسدود شده (مثلا بابت دود ماشین جلویی یا گرد و غبار) و با استفاده از فریم‌های قبلی و بعدیش بفهمی که مثلا یه کامیون دودزا (از اینا که وقتی توی ماشین پشتشون میفتی آسم میگیری) بوده و لیبلش بزنی و بعدش هم انسان ویرایش یا چیزی لازم باشه انجام بده. اینجوری کلی دیتای لیبل زده جمع میشه.
بخاطر اینکه تنوع داده هم حفظ بشه، نشستند ۲۲۱ سناریوی (اسمشون رو گذاشتند triggers) درب و داغون (شیب یا پیچ زیاد جاده، موتور در اتوبان در زمان شب، شرایط برف سنگین و…) رو هم جمع کردند و براشون با دیتاهای مشتری‌ها که سمت سرور ارسال می‌شده دیتا جمع کردند.
واسه آموزش و تخمین کارایی مدل هم یه شبکه عصبی اولیه روی دیتای اولیه ران کردند، اونو روی ماشین مشتری‌ها به صورت shadow mode نصب کردند (یعنی مدل اون پشت پیش‌بینی می‌کرده ولی کاری نمی‌کرده). بعد با همین triggerها دیتاهای لازم جمع‌آوری شده و به سرور ارسال شده و از همین کلیپ سناریوها برای unit test کردن مدل‌های بعدی استفاده شده که ببیند مدل خوب یاد گرفته یا نه. و باز از اول مدل روی ماشین نصب شده و….
این حلقه‌ی shadow mode هفت بار ران شده تا به نتایج خیلی خوبی برسند، یک میلیون کلیپ ده ثانیه‌ای ۳۶ فریم بر ثانیه درست کردند، ۶ میلیارد تا آبجکت لیبل خورده و ۱.۵ پتابایت در مجموع حجم دیتا شده.
مدلشون هم به این شکل شده اول یک سری مدل روی هر کدوم از فریم‌های هر کدوم از این هشت تا دوربین زدند و بعد این اطلاعات رو با هم برای یک زمان تجمیع کردند و بعد دیتاهای این زمان‌های مختلف هم با هم تجمیع کردند. خلاصه اون وسط تجمیع تو تجمیعی شده؛ واسه همین یه مدل سلسله مراتبی تعریف شده که برای هر کدوم از زیر تسک‌ها (head) از مدل‌های ترنسفورمری با پشتوانه مدل‌های تصویری مثل resnet استفاده شده و درون هر head یک سری trunk و درون هر کدومش یک سری terminal (اسم‌هاییه که دادند) هست.
مثلا یک head مسئول pixel prediction taskها است و اون یکی مسئول classification taskها.
و مثلا داخل یک head، یک trunk هست که مسئول object classification است و یکی مسئول navigation classification. و اون terminalها مسئول انجام تسک‌های خرد شده هستنند.
این روش دو مزیت بزرگ داره: اول. این تسک‌ها از هم decouple میشه و هر کسی یه گوشه‌ای رو میگیره و میبره جلو.
دوم. این روش واسه جاهایی که مدل باید کلی خروجی متفاوت رو با دقت خوب بده خیلی خوب کار می‌کنه.
بعدم راجع به اینکه چقدر منابع محاسباتی خفنی دارند میگه؛ دارندگی و برازندگی. کلی کلیپ‌های نمونه‌ی جذاب در ارائه‌اش هست که باید ببینید.

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

لینک ویدیوی ارائه در CVPR 2021:
https://www.youtube.com/watch?v=a510m7s_SVI

لینک ویدیوی توضیح ارائه توسط آقا یانیک:
https://www.youtube.com/watch?v=9MJTeOaSMTk&t=25s

#watch

@nlp_stuff
آقای تورینگ! تست شما پاس شد؛ لطفا سوال بعدی!

چند وقتی هست که مدل GPT-3 معرفی شده و هر روز که از خواب پا میشیم به زیبا بودن این مدل بیشتر و بیشتر پی می‌بریم. از معرفی ابزار copilot توسط گیت‌هاب گرفته (که براساس GPT-3 بود و بر اساس function definition به زبان طبیعی، به ۸۰ زبان زنده دنیا کدنویسی می‌کرد) تا این مقاله از خانوم کلارک که به عنوان یکی از برجسته‌ترین مقالات رویداد ACLNLP2021 انتخاب شده است. در این مقاله درواقع چارچوبی برای تست انسانی مدل‌های تولید زبان طبیعی (NLG) معرفی شده است و در کنار اون نتایج ارزیابی انسانی مدل GPT-3 بررسی شده است.

حتما می‌دونید که یکی از اهداف مقدس آلن تورینگ فقید در دهه ۵۰ میلادی، طراحی سیستمی بود که اگر جملاتی به زبان انگلیسی تولید می‌کرد و به انسان‌های مختلف نشان داده می‌شد، کسی قادر نباشد که مشخص کند تولیدکننده آن متن‌ها ماشین است. در این مقاله خانوم کلارک و دوستان با استفاده از ابزار Amazon Mechanical Turk که امکان crowdsourcing را فراهم می‌کند، این تست را بر روی مدل GPT-3 انجام دادند. تست‌ها در سه دامنه داستان‌های کوتاه، مقاله کوتاه خبری و دستورآشپزی بودند. شاید جالب باشه که بدونید کیفیت تشخیص ارزیابی‌کنندگان این متون، حدود ۵۰ درصد بوده است!!! یعنی دقیقا با شانس رندم توانستند machine-generated بودن این متون را تشخیص دهند. اما کار اصلی این مقاله، انجام آزمایشاتی در راستای آموزش ارزیابی‌کنندگان برای ارزیابی این مجموعه متون تستی بود تا کیفیت تشخیص آن‌ها بهبود یابد. در این مقاله ۳ سناریو برای آموزش انتخاب شده است. در سناریو اول ابتدا در کنار هر متن تستی، چند جمله در جهت راهنمایی برای تشخیص کیفیت متن گذاشته می‌شود و سپس ارزیابی صورت می‌گیرد. در سناریوی بعدی در هر متن تستی، بعد از انتخاب گزینه توسط ارزیابی‌کننده (در ابزار AMT می‌تونید برای هر تست گزینه‌هایی انتخاب کنید که ارزیابی‌کننده‌ها از بین اون‌ها انتخاب کنند و در اینجا به صورت ساده ۴ گزینه درنظر گرفته شده است. گزینه اول ؛ مطمئنا انسان نوشته است، گزینه دوم؛ احتمالا انسان نوشته است، گزینه سوم؛ احتمالا ماشین نوشته است و گزینه آخر؛ قطعا ماشین نوشته است انتخاب شده‌اند) در صورتی که اشتباه انتخاب می‌کرده‌است، گزینه درست به همراه دلایلی برای توضیح به ارزیابی‌کنندگان نشان داده می‌شده است. همچنین در سناریو سوم دو متن که با جملات یکسان اولیه یکی توسط انسان و دیگری توسط ماشین تولید شده است به ارزیابی‌کنندگان داده شده و پس از انتخاب گزینه، گزینه درست به آن‌ها نمایش داده شده است. تا اینجا اگه فکر می‌کنید که این سناریوها در بهبود کیفیت تشخیص ارزیابی‌کنندگان خیلی موثر بودند باید بگم که سخت در اشتباهید!! مدل GPT-3 حتی در این سناریوها نیز قدرت خودش رو نشون داد و فقط سناریو دوم تونست یه مقدار موثر باشه و به‌طور میانگین حدود ۶ درصد تشخیص رو بهتر کنه!

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

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

پ.ن.۱: به عکس دقت کنید! به نظرتون کدومش کار ماشینه؟ ☺️

پ.ن.۲: جا داره یه نگاه دوباره به این پست از کانال بندازید که بررسی مقاله‌ی برنده‌ی ACL2020 بود و اون هم روی یک نگاه دیگه از ارزیابی مدل تکیه کرده بود:
https://www.tg-me.com/nlp_stuff/48

#read
#paper

@nlp_stuff
مدل codex در برابر کدزن‌ها!

حدود ده روز پیش بود که ابزار github copilot (اگر ندیدید این جا رو ببینید: https://copilot.github.com) رونمایی شد و موجب گریبان دریدن تعداد زیادی از افراد و به خصوص قشر برنامه‌نویس شد. همان موقع این سوال ایجاد شد که قضیه فنی پشت copilot چیه و چه قدر قدرت و توانایی داره. حالا یک جمعی از دوستان در open-ai اومدند و مقاله‌ای دادند تا به مانند همیشه حرص و حسادت ما رو برانگیزند. در این مقاله صحبت از مدل زبانی به نام codex کردند و بیان کردند که ابزار copilot نیز بر پایه همین مدل زبانی بنا شده و از اون قدرت می‌گیره. لازم به ذکر است که در این مقاله صرفا به بررسی کیس آموزش codex روی پایتون پرداختند و در مورد عملکرد بقیه مدل‌ها سخنی به میان نیامده. به طور اجمالی، codex یک مدل زبانی بر پایه معماری GPT با سایز ۱۲ میلیارد پارامتره که بر روی یک دیتاست حامل داک استرینگ‌ها و پیاده‌سازی توابع در زبان پایتون آموزش دیده تا تسکی به نام تولید فانکشن رو یاد بگیره؛ یعنی با گرفتن داک استرینگ‌ها بتونه متن تابع رو پیاده کنه (برای این که یک مقیاسی دستتون بیاد روی دیتاستی با حجم ۱۵۹ گیگ با این اوصاف ذکر شده آموزش دیده)
اما در موقع ارزیابی از اونجایی که open-ai منابع و پول زیاد داره و حیفه که ازشون استفاده نکنه، اومده روی کدهای خروجی unit test انجام داده تا بتونند بفهمند قدرت codex در چه حده و چند درصد برنامه‌هایی که می‌نویسه صحیح و درست عمل می‌کنند. گل مطلب اینه که در موقعی که یک سمپل از مدل codex گرفته بشه این مدل ۳۷.۷ درصد از توابع رو درست پیاده سازی می‌کرده (عدد حیرت انگیزیه) و هنگامی که به جای یک سمپل صد سمپل از codex بگیریم، این مدل ۷۷.۵ درصد از توابع رو می‌تونسته درست پیاده کنه (به طور خیلی ساده شده بخوایم بگیم در ۷۷.۵ درصد مواقع یکی از سمپل‌ها بوده که جواب درست بوده!)
در ادامه این مقاله هم از اونجا که همچنین کلی دلار باقی مونده بوده کلی اکسپریمنت و یونیت تست انجام دادند تا رفتار codex رو بررسی کنند. در آخر هم بخشی رو به خواباندن هایپ جوگیرها تخصیص دادند و از معایب‌ و موانع و خطرات استفاده از codex در صنعت و حل مسائل دنیای واقعی صحبت کردند و کلا هنوز کلی راه تا رویای پیاده‌سازی اتومات برنامه‌ها و اخراج برنامه‌نویس‌ها مونده ولی نشدنی نیست...

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

#paper
#read
#tool

@nlp_stuff
مجموعه داده‌ی FarsTail

مجموعه داده‌ی FarsTail، مجموعه داده‌ی فارسی جمع آوری شده برای مسئله‌ی استنتاج زبان طبیعی (Natural Language Inference) توسط آزمایشگاه داده‌کاوی و یادگیری ماشین دانشگاه قم است. تسک NLI بدین صورت است که مدل، دو جمله ورودی را می‌گیرد و در خروجی می‌گوید با توجه به جمله‌ی اول، جمله‌ی دوم درست یا غلط یا خنثی است.
در تصویر توضیحات مربوط به روند جمع‌آوری آن (روشی شبیه به سناریوی استفاده شده در مجموعه داده‌ی انگلیسی SciTail) آورده شده است.
البته با اینکه از نظر اندازه، این دیتاست (۱۰ هزار جفت جمله) در مقایسه با دیتاست‌های معروف انگلیسی همچون SNLI (۵۷۰ هزار جفت جمله) خیلی کوچک‌تره اما شبیه دادگان SciTail (۲۷ هزار جفت جمله) با کیفیته و در هر صورت دمشون گرم که این کار رو شروع کردند و مهم‌تر اینکه رایگان منتشرش کردند.

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

لینک دانلود مجموعه داده:
https://github.com/dml-qom/FarsTail

پ.ن. لطفا بهشون استار بدید که انرژی بگیرند.

#link
#irani
#dataset

@nlp_stuff
باز هم MLOps؛ این‌بار معرفی آنتی‌پترن‌ها!

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

اول. Temporal Leakage Anti-pattern:
این موضوع به این اشاره داره که در تحلیل سری‌های زمانی از جمله تحلیل‌های مالی یک اشتباه رایج اینه که دیتای آموزش و تست رو به صورت رندم split کنید در حالیکه باید به صورت تقدم و تاخر زمانی از هم جدا بشوند.

دوم. Oversampling Leakage Anti-pattern:
این موضوع اشاره به این داره که در مساله‌های دسته‌بندی که با داده نامتقارن از حیث تعداد نمونه از هر کلاس رو‌به‌رو هستید نباید oversampling رو قبل از تقسیم دیتاست به تست و آموزش انجام بدید و دیتاست تست باید همون نسبت اولیه کلاس‌ها رو حفظ کنه.

سوم. Act Now, Reflect Never Anti-pattern:
این موضوع داره میگه که حتما باید سیستمی برای مانیتور کردن، دنبال کردن عملکرد مدل و دیباگ کردن اون داشته باشید تا از مواردی مانند concept drift به موقع جلوگیری کنید.

چهارم. Tuning Under the Carpet Anti-pattern:
این مورد داره میگه باید حتما مکانیزمی برای hyper-parameter tuning و همچنین track کردن اون داشته باشید و همین‌طور برای خودتون پشت پستو نشینید و پارامتر‌ها رو tune کنید!!

پنجم. Set and Forget Anti-pattern:
این موضوع هم به این اشاره داره که در کسب‌وکار‌ها عموما دیتا به صورت دوره‌ای و با توجه به شرایط محیطی به‌روز میشه و بعضا پارامتر‌های توزیع هر یک از فیچر‌ها ممکنه تغییر بکنه به همین دلیل اینکه فکر کنید یه مدل رو بر روی دادگان آموزش اولیه می‌تونید آموزش بدید و بعد serve ش کنید و به امون خدا رهاش کنید و انتظار داشته باشید که چند ماه بعد هم نتایج خوبی داشته باشه غلطه و باید به صورت دوره‌ای retrain بشه و لازمه که مکانیزمی برای این موضوع طراحی بشه.

البته چندین مورد دیگه هم از این anti-pattern ها آورده شده که برای اینکه از اون‌ها آگاه بشید دعوت می‌کنیم تا این مقاله رو که جناب elvis بزرگ اون رو پیشنهاد کردند بخونید.

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

پ.ن.۱: باز هم این پست از کانال درباره TFX رو یادآوری می‌کنیم برای اینکه مکانیزم‌هایی داشته باشید تا از این آنتی‌پترن‌ها در امان باشید.
https://www.tg-me.com/nlp_stuff/157

پ.ن.۲: اگر دنبال یه مقاله جون‌دار دیگه در این حوزه هستید هم می‌تونید این مقاله رو بخونید که البته جزو رفرنس‌های همین مقاله‌ای است که در بالا معرفی کردیم:
https://papers.nips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf

#paper
#read

@nlp_stuff
جمع‌آوری دادگان دست‌نوشته‌ی برخط فارسی

همین اولش بگیم که می‌تونید با هر امکاناتی در این جمع‌آوری دادگان مشارکت کنید.

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

پ.ن. در ضمن این داداشمون قول داده که صد در صد دیتای جمع‌آوری شده را منتشر بکنه؛ پس لطفا دست به دست کنید که دور هم یه دیتاست جمع کنیم.

لینک سایت:
FarsiHandwriting.ir

#link
#irani
#dataset

@nlp_stuff
مقاله رگرشن نمادی

یکی از تفریحات سالم دانشمندان قرن شانزدهم این بود که می‌نشستند آزمایش انجام می‌دادند و بعد سعی می‌کردند رابطه و فرمول بین متغیرهای مختلف به دست بیاورند و به همین شکل کلی فرمول و رابطه با ترم‌های مختلف ریاضی به دست اومد. حالا یک مقاله (که جزو پذیرفته‌شدگان ICML 2021 است) اومده و سعی کرده همین کار رو با یادگیری ماشین پیاده‌سازی کنه. وظیفه مورد بررسی به این شکله که شما یک‌سری X,y را قراره که به مدل بدین و مدل هم باید فرمول y=f(x) پشت این داده‌ها رو مشخص کنه ( مثلا خروجی بده که y = log(x) + 3 * e^x -5 ) شاید سوال پیش‌ بیاد که فرق این مساله با رگرشن چیه که باید گفت توی رگرشن هنگام تست به ازای هر نمونه ورودی پاسخ تولید می‌شه، ولی اینجا در واقع به ازای مجموعه X,y ‌های ورودی قراره که فرمول مربوط به اینها به صورت نمادی تولید بشه.

خلاصه کار این مقاله به این شکله که ابتدا اومدند و یک سری فرمول برای درست کردن دیتاست آموزشی جنریت کردن و حالا با جایگذاری یکسری X‌های تصادفی توی این فرمول‌ها y‌های مربوطه رو به دست آوردند. در گام بعدی یک ترنسفورمر داریم که این X,y ها به انکودرش داده می‌شوند. انکودر این X,y ‌ها را به یک فضای نهان نگاشت می‌کنه و حالا دیکودر ترنسفورمر باید بیاد و اسکلتون فرمول رو تولید کنه. اسکلتون فرمول چیه؟ اسکلتون در واقع همون فرموله با این فرق که جای اعداد ثابت یک نماد تولید می‌شه ( برای مثال اون اسکلتون فرمول مثالی تو قسمت قبل میشه log(x) + α * e^x - β ) حالا ما اسکلتون فرمول رو داریم. در گام نهایی هم با روشای بهینه‌سازی نظیر BFGS مقادیر اعداد ثابت که توی اسکلتون خالی گذاشته شده بودند تعیین می‌شوند. جمع بندی بخوایم بکنیم ترنسفورمر شکل نمادی فرمول رو به دست می‌آورد و روش بهینه‌سازی هم ترم‌های عددی خالی اسکلتون رو پر میکنه.

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

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

لینک پیپر:
https://arxiv.org/abs/2106.06427

#read
#paper

@nlp_stuff
نوتبوک 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
ارائه‌ی علمی «داده‌ها برای مسائل آموزشی»

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

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

لینک اتاق مجازی انجمن علمی رستا:
http://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://www.tg-me.com/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
2025/07/06 13:11:08
Back to Top
HTML Embed Code: