NLP stuff

#read
Channel
Education
Technology and Applications
News and Media
Blogs
PersianIranIran
Logo of the Telegram channel NLP stuff
@nlp_stuffPromote
4.05K
subscribers
143
photos
1
video
270
links
مطالب خوب و به‌دردبخور در حوزه‌ی هوش مصنوعی و پردازش زبان طبیعی! شکرشکن شوند همه طوطیان هند زین قند پارسی که به بنگاله می‌رود اگر انتقاد، پیشنهاد و یا مطلب مفیدی (لینک، پست و ...) داشتید: @AliAkbarBadri @mmsamiei @MmahdiAghajani
شکست gpt3.5 توسط مدل وزن‌باز Mixtral-8x7B-v0.1 !

خلاصه بخوایم بگیم: جدیدا شرکت Mistral.ai یه مدل داده بیرون به اسم Mixtral-8x7B-v0.1 که با هشت تا مدل هفت میلیارد پارامتری Mistral با روش  high-quality sparse mixture of experts model (SMoE) ساخته شده، تونسته در اکثر ارزیابی‌ها هم لاما ۷۰ میلیاردی و هم جی‌پی‌تی۳.۵ رو شکست بده. خوش‌مزگی داستان اینه که یک سال بعد از جی‌پی‌تی ۳.۵ حالا میشه این مدل رو به صورت لوکال (طبیعتا با رم و جی‌پی‌یو به اندازه کافی) سرو کرد. این مدل رو میسترال خیلی لاتی‌طور اول یه لینک تورنت بدون توضیح گذاشت و بعد که ملت به جنب و جوش دراومدند، چند روز بعد یه توضیحی هم منتشر کرد!

مدل mixtral 8x7b که امروز توسط میسترال منتشر شد یک سطح جدیدی برای مدل وزن‌باز (نه متن‌باز، چون کد و دیتا و... رو نداده) را ارائه کرد و تونست مدل چت جی‌پی‌تی ۳.۵ رو در اکثر بنچمارک‌ها شکست بده. معماری این مدل شبیه مدل میسترال ۷ میلیاردیه (به زودی معماری اون هم براتون شرح خواهیم داد) با این تفاوت که در حقیقت این مدل جدید ۸ تا مدل expert در یک پکه. اینجا از یک تکنیک به نام MoE (Mixture of Experts) استفاده شده. این مدل یک مدل دیکودریه که بلوک فیدفوروارد بین ۸ گروه از پارامترها در هر لایه و برای هر توکن دو تا از این کارشناس‌ها (expert) رو انتخاب میکنه که توکن پردازش بشه. در معماری ترنسفورمرها یک سری لایه feed-forward داره، در MoE جای بعضی از این لایه‌ها از لایه‌های MoE استفاده شده است. لایه‌ی MoE یک شبکه‌ی روتری داره که انتخاب میکنه کدوم کارشناس (Expert) کدوم توکن‌ها رو بهتر پردازش می‌کنند. این تکنینم باعث میشه تعدا پارامترها زیاد بشه اما هزینه و سرعت کنترل بشه چون مدل فقط از بخشی از تعداد کل پارامترها رو برای یک توکن استفاده می‌کنه. همونطور که گفتیم در این میکسترال دو تا کارشناس در هر لحظه انتخاب میشن که باعث میشه سرعت دیکودینگ شبیه یه مدل ۱۲.۹ میلیاردی بشه در صورتی که ۴ برابرش (۴۶.۷ میلیارد) پارامتر داره!! یه عده اشتباه فکر میکردند ۵۶ میلیارد (۸*۷) پارامتر داره ولی اشتباهه چون فقط بعضی لایه‌های feed-forward فقط تکرار شدند نه همگی پارامترها. اگر بابت MoE کمی گیج شدید، نگران نباشید چون این یکی هم مفصلا در پست دیگه‌ای شرح میدیم. تا اینجا دو تا  طلبتون پس.

جونمون براتون بگه که مدل پایه و مدل Instruct رو منتشر کردند. طول کانتکستش ۳۲ هزار شده. تونسته مساوی یا بهتر از مدل ۷۰ میلیاردی لاما۲ و  جی‌پی‌تی ۳.۵ در اکثر بنچ‌مارک‌ها باشه. عکس نتایج رو در پیوست گذاشتیم. پنج تا زبون انگلیسی، فرانسوی، آلمانی، اسپانیایی و ایتالیایی رو بلده (به نظر روی دیتای togethercomputer/RedPajama-Data-V2 ترینش کردند، حدس ماست). توی تسک کدزنی هم خوبه و توی HumanEval به ۴۰.۲ رسیده. در نهایتا هم با Apache2.0 منتشرش کردند که همگی صفا کنیم. مدل Instruct فرمت پرامپت خودشو داره که توی لینک‌هایی که آخر میذاریم هست. مثل میسترال ۷b نمیدونیم دیتاستش چیه و چه حجمی داره و چجور پیش‌پردازش شده. دیتای sft و DPO (برای فاین تیون کردن) هم نمیدونیم! کد لود کردن و اینفرنس هم توی لینک‌ها هست که البته حداقل ۳۰ گیگ رم و جی‌پی‌یویی مثل A100 می‌خواد.


لینک بلاگ پست انتشار مدل:
https://mistral.ai/news/mixtral-of-experts/

لینک مدل پایه Mixtral-8x7B-v0.1:
https://huggingface.co/mistralai/Mixtral-8x7B-v0.1

لینک مدل Mixtral-8x7B-Instruct-v0.1:
https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1

لینک بلاگ هاگینگ‌فیس:
https://huggingface.co/blog/mixtral

#read
#blog
#link
#model

@nlp_stuff
بهبود عملکرد LLM با نشون‌دادن Chain of Thought غلط

مدل‌های زبانی بزرگ با این که کلی از مسائل حوزه پردازش زبان رو درنوردیدند ولی همچنان در برخی مسائل با فاز reasoning‌طور (مثل مثلا حل مسائل ریاضی) دچار مشکلات جدی هستند. یکی از راه‌حل‌های پیشنهادشده برای بهبود عملکرد این مدل‌ها روی این مسائل، راهکار Chain-of-Thought Prompting (به اختصار CoT) هست. تو این راهکار وقتی میخوایم یک مساله را به صورت few-shot به LLM توضیح بدیم عوض این که در example‌هامون صرفا جواب آخر رو بنویسیم و میایم و مرحله به مرحله نحوه رسیدن به جواب رو توضیح می‌دیم و این جوری مدل هم وقتی میخواد به کوئری ما پاسخ بده به نوعی مجبور میشه که مرحله به مرحله جواب رو بنویسه. آزمایشات نشون داده که باعث می‌شه درصد جواب‌های پایانی درستی که می‌ده بیشتر بشه.

حالا یک مقاله اومده و یک ایده به نام contrastive chaint of thought prompting رو مطرح کرده. تو این ایده، علاوه بر این که CoT درست به مدل داده می‌شود بهش CoT اشتباه هم نشون داده می‌شه و آزمایشات مقاله نشون می‌ده که این ایده نشون دادن CoT غلط در کنار CoT باعث میشه تا عملکرد LLM باز هم بهبود پیدا کنه.

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

#paper
#read

@nlp_stuff
اندر حکایت GPT-4 و چاله‌چوله‌های آن!

اندکی از انتشار GPT-4 میگذره و حالا در این پست ویرگول قصد داریم بر اساس مقاله اخیری که تیم microsoft منتشر کرده به نقاط کور و چالش‌های این مدل بپردازیم. در این مقاله به صورت هنرمندانه promptهایی تهیه شده که این نقاط ضعف رو نشون میده و دیدنش خالی از لطف نیست.

پ.ن. اینا نشستند ۱۵۰ صفحه مقاله نوشتند خداوکیلی ظلم در حق‌شون هست که شما مقاله شون رو حتی یه تورق هم نکنید! حداقل تصاویرش رو ببینید D:

لینک پست ویرگول:
https://virgool.io/overfit/gpt-4-b35cyw5oxi4t

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

#read
#paper
#overfit

@nlp_stuff
معرفی Toolformer

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

این APIهای گنجانده شده در Toolformer شامل ماشین حساب، سیستم پرسش و پاسخ، موتور جستجو، سیستم ترجمه و یک تقویمه. آموزش این مدل به صورت خودبخودی و خودآموزه، که تنها به چند تا نمونه برای هر API نیاز داره. یعنی با استفاده از تعداد انگشت شماری نمونه‌های نوشته شده توسط انسان از فراخوانی یک API، به مدل این امکان داده میشه که برای یک مجموعه داده‌ی زبانی بزرگ، کاندیدهای فرخوانی API رو مرتبط با محتوای متن ایجاد کند (in-context learning). سپس با استفاده از یک تابع self-supervised loss مشخص میشه کدام فراخوانی‌ APIها واقعا به مدل برای پیش‌بینی توکن بعدی کمک می‌کنه. در نهایت مدل روی فراخوان‌های API ای که مفیدند finetune میشه.

مدل Toolformer، عملکرد zero-shot  رو برای مدل GPT-J با 6.7B پارامتر به طور قابل توجهی بهبود می بخشه و باعث میشه حتی از مدل بسیار بزرگتر GPT-3 در طیف وسیعی از وظایف مختلف پایین‌دستی (یا همان downstream tasks) بهتر عمل کنه، بدون اینکه تواناهایی مدل سازی زبان اصلی را ازدست بده.

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

پ.ن. این پست را خانم وحیدی درست کردند و به کانال فرستادند. شما هم اگر پست خوبی دارید بگید تا به اسم و با لینک به لینکداین خودتون منتشر کنیم.

#read
#paper

@nlp_stuff
مدل HuggingGPT، مدلی با مغز GPT و بازوی HuggingFace

همانطور که خودتون هم می‌بینید و می‌شنوید ChatGPT همه جا رو در نوردیده و طیف مختلف و وسیعی از وظایف مختلف رو میتونه بهتر از انسان انجام بده. با وجود این همه قدرت مدل‌های زبانی، اما این مدل‌ها محدودیت‌هایی هم دارند. مثلا صرفا به مسائلی که ورودی و خروجی‌شون متنی هستند محدود هستند (ممکنه بگید GPT4 مدل مولتی موداله بله اما GPT4 اولا فقط میتونه در ورودی تصویر بگیره و ثانیا اگر بخواد تصویر خروجی بده باید تحت کدی مثل tikz این کار رو بکنه که کیفیت عکس‌هاش اصلا اون چیزی که در نظر هست نیست). محدودیت دیگه این که در سناریوهای دنیای واقعی که نیازمند شکستن وظیفه به چندزیروظیفه هست هم عملکرد کاملی ندارند و البته در بعضی مسائل خاص متنی هم حتی نسبت به مدل‌های اکسپرت عملکرد پایین‌تری دارند. حالا یک عده چینی از دانشگاه zhejiang ایده‌ای برای حل این محدودیت‌ها به سرشون زده و اون رو با نام HuggingGPT پیاده کردند. شهود این ایده این شکلیه که بیایم از chat-gpt به عنوان مغز و یک جور کنترلگر و از مدل‌های حاضر در هاب هاگینگ‌فیس در حکم بازوان اجرایی متخصص استفاده کنیم. در این صورت می‌تونیم هم از قدرت منطقی gpt استفاده کنیم و هم این که تسک‌هایی که gpt نمی‌تونه اجراشون کنه (مثل تسک‌های تصویری و صوتی) رو با استفاده از مدل‌های متخصص حاضر بر روی HuggingFace بتونیم انجام بدیم.

این مدل به صورت کلی چهار بخش Task Planning و Model Selection و Task Execution و Response Generation دارد. روال کار هم به این صورته که کاربر درخواستش رو به مدل میده و مدل طی یک پایپلاین با کمک این چهار بخش درخواست کاربر رو انجام میده. در Task Planning درخواست کاربر ورودی گرفته می‌شه و به ChatGPT داده می‌شه. در این جا chatgpt وظیفه داره منظور این درخواست کاربر رو بفهمه و اون رو به زیروظایف کوچک‌تر بشکنه و همچنین ترتیب اجرای این زیروظایف و ورودی و خروجی‌ اون‌ها رو مشخص کنه. در گام بعدی یا Model Selection سپس هر کدوم از این زیروظایف و مشخصات مدل‌های حاضر بر روی هاب هاگینگ‌فیس به chatgpt داده می‌شن و chatgpt تصمیم می‌گیره که برای هر یک از این زیروظایف از چه مدلی می‌شه استفاده کرد. سپس در مرحله سوم یا Task Execution، هر یک از این زیروظایف توسط مدل‌های مشخص شده اجرا می‌شن و البته تحت ترتیبی که تو مرحله یک مشخص شده به هم وصل می‌شن و ورودی و خروجی‌های همدیگر رو فراهم می‌کنند. در گام آخر یا Repsonse Generation هم دوباره خروجی‌های مرحله سوم به ChatGPT داده می‌شن و ChatGPT با جمع‌بندی این خروجی‌ها، خروجی نهایی مدل رو آماده می‌کنه. برای فهم بهتر می‌تونید تصاویر پیوست شده رو مشاهده کنید. یک سری آزمایش هم اومدند و روی این مدل انجام دادند و نشون دادند که می‌تونه وظایف خیلی پیچیده‌ای که نیازمند ترکیب توانایی‌های تصویری و صوتی و متنی هست رو انجام بده. نکته واجب به ذکر اینه که برای این که ChatGPT بفهمه هر یک از مراحل بالا رو باید انجام بده هم از In-context Learning استفاده کردند، یعنی این که نمونه ورودی‌ها و خروجی‌ها رو در prompt ورودی به ChatGPT می‌دن و GPT خودش می‌فهمه باید چه جوری اوستا کنه قضیه رو.

قبلا در این پست (https://t.me/nlp_stuff/318) هم راجع به یک کیس جالب دیگه که از LLM به عنوان حتی بک‌اند استفاده کرده بود صحبت کرده بودیم. به نظر می‌رسه با قدرت‌گیری LLM‌ها در آینده نزدیک شاهد خیزش ترندی خواهیم بود که سعی می‌شه تا از اونها در حکم LLM as App یا حتی LLM as Everything استفاده بشه. آینده جذابی پیش روی محصولات این حوزه است. کسی چه می‌داند، شاید دنیای مهندسی نرم‌افزار بعد از LLM ها به شدت تکانده شود.

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

پی‌نوشت: با به اشتراک‌گذاری مطالبی که از آن‌ها لذت می‌برید، به بقیه هم این لذت رو هدیه بدید.

#read
#paper

@nlp_stuff
قلب چت جی‌پی‌تی: هوش مصنوعی با فیدبک‌های واقعی

قبلا در این پست (https://t.me/nlp_stuff/313) به توضیح مختصری از داستان ChatGPT پرداخته بودیم.
حالا در یک بلاگ پست قصد داریم قلب آموزش این مدل یعنی Reinforcement Learning from Human Preferences رو توضیح بدیم.
لطفا با بقیه هم به اشتراک بذارید.

لینک پست ویرگول:
https://virgool.io/overfit/rlhf-vkpgfist80nt

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

#read
#blog

@nlp_stuff
پیشرفت بس است، متوقفش کنید!

خبر جدید این که جمعی از دانشمندان، صاحبان فناوری و علاقه‌مندان به هوش مصنوعی (از بنجیو گرفته تا ایلان ماسک و گری مارکوس و حتی بنیانگذار stable-diffusion) با انتشار نامه‌ای سرگشاده با ابراز نگرانی از بابت پیشرفت سریع هوش مصنوعی، از آزمایشگاه‌های هوش مصنوعی دنیا خواسته‌اند که آموزش دادن مدل‌های هوش مصنوعی قوی‌تر از GPT-4 را به مدت حداقل ۶ ماه متوقف کنند. این دوستان در این نامه گفته‌اند که با این که هوش مصنوعی می‌تونه بشر رو وارد دوره جدیدی از تاریخ تمدنش کنه اما در صورتی که برنامه‌ریزی صحیحی برای نحوه مدیریت هوش مصنوعی صورت نگیره این پدیده به عکس می‌تونه موجب بروز رخدادهای سیاهی بشه. همونطور که در طی چند وقت اخیر شاهد رقابتی دیوانه‌کننده میان شرکت‌های غول بزرگ برای آموزش مدل‌های بزرگ و بهتر هستیم و البته حاصل این رقابت ظهور مدل‌های بسیار هوشمندی نظیر GPT هست که حتی سازندگان اون هم نمی‌تونن نحوه بروز هوشمندیش رو درک، پیش‌بینی و یا کنترلش کنند.

در بخش دیگه‌ای از این نامه سوال‌های جالبی مطرح شده. آیا ما باید تمامی مشاغل را اتومات و ماشینی کنیم؟ آیا باید کورکورانه به سمت ایجاد هوش مصنوعی‌هایی حرکت کنیم که در نهایت ممکن است جایگزین تمدن انسانی ما شوند؟ این دوستان نوشته‌اند که توسعه هوش مصنوعی مساله‌ای نیست که فقط مربوط به توسعه‌دهندگان این حوزه باشد و کل جامعه بشری را در بر می‌گیرد. بنابراین از آزمایشگاه‌های هوش مصنوعی دنیا خواسته‌اند که آموزش مدلی قدرتمند‌تر از GPT-4 را به مدت حداقل ۶ ماه متوقف کنند و نکته جالب این که گفته‌اند اگر این توقف امکان‌پذیر نباشد در این صورت دولت‌ها باید وارد عمل شده و این توقف را اعمال کنند.

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

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

- نزدیک‌شدن به نقطه عطف هوش مصنوعی صنعتی: همانطور که شاهد هستیم اگر قبل از این در هوش مصنوعی آکادمی سعی می‌کرد تا با صنعت رقابت کند اما سطح رقابت اکنون به حدی رسیده است که گوگل نیز توانایی رقابت با Open-AI را ندارد. همچنین شایعاتی وجود دارد که Open-AI در حال آموزش دادن مدل GPT-5 است. با توجه به سیاست‌های مخفیانه این شرکت این امکان وجود دارد که روند تحولات هوش مصنوعی از دست سایر بازیگران خارج شده و به یک مونوپلی ترسناک تبدیل شود. (حال آن که ما الان هم واقعا نمی‌دانیم آیا Open-AI مدلی هوشمندتر از GPT را آموزش داده یا خیر!)

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

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


لینک نامه:
https://futureoflife.org/open-letter/pause-giant-ai-experiments/


#read
#news

@nlp_stuff
اسپارک؛ سهل و ممتنع!

اگر در حوزه تحلیل دیتا کار کرده باشید قطعا با ابزارهای data manipulation مانند pandas یا spark کار کردید. در این پست قصد داریم رشته بلاگی رو به شما معرفی کنیم که مفاهیم پایه‌ای spark رو به شما یاد میده. فهم این مفاهیم کمک می‌کنه که کوعری‌های بهتری در اسپارک بزنید و یا علت کند اجرا شدن برخی از کوعری‌ها رو بفهمید. همون‌طور که می‌دونید spark در دوحالت cluster mode و client mode اجرا میشه که معمولا برای کارهای تحلیلی که خیلی پروداکشنی نیست از همین حالت client mode استفاده می‌کنیم که در واقع تنها کاری که برای بهره بردن از اسپارک باید انجام بدید نصب پکیج pyspark بر روی سیستمتون هست (درست مثل pandas). حسن بزرگ اسپارک اینه که محاسبات بر روی دیتای حجیم رو می‌تونه بین چندین executor بشکونه و محاسبات هر executor توی ram اجرا میشه و executorها نتایج کارشون رو با استفاده از ارتباط با driver به اشتراک می‌ذارن تا نتیجه نهایی بدست بیاد (همون‌طور که متوجه شدید معماری کل اسپارک حالت master/slave داره) این وسط با کانفیگ‌هایی که روی اسپارک انجام میدید میتونید حداکثر استفاده از ram رو تعیین کنید تا خیالتون راحت باشه که همه ram سیستم شما مورد استفاده قرار نگیره. این رشته بلاگ ابتدا مفاهیمی مانند driver و executor و scheduler رو توضیح داده و سپس به سراغ توضیح پارتیشن‌ها رفته. پارتیشن‌ها بخش‌هایی از دیتا هستند که می‌تونند به صورت توزیع‌شده باشند و یا به صورت موازی پردازش بر روی اون‌ها انجام بگیره. در واقع هر executor در لحظه می‌تونه فقط یک پارتیشن از دیتا رو پردازش کنه ولی driver می‌تونه چندین executor رو به کار بگیره برای اینکه پردازش دیتا همزمان روی چندین پارتیشن انجام بشه.
این رشته بلاگ توضیح داده که برخی از transformationها یا کوعری ها حالت narrow دارند که به این معنیه که انجام اونها منجر به repartition شدن دیتا نمیشه مانند map یا filter ولی برخی دیگه wide transformation هستند که منجر به repartition شدن دیتا میشه مانند groupby که wide transformationها می‌تونند کوعری‌های سنگین‌تری باشند.  (همون‌طور که می‌دونید کوعری‌ها در اسپارک lazy هستند به این معنی که در لحظه اجرا نمیشند بلکه مواقع خاصی مانند تبدیل نتایج به list و یا ذخیره کردن داده اجرا میشند که این به اسپارک اجازه میده از زنجیره کوعری‌ها یک گراف محاسباتی بسازه و اون رو قبل از اجرا بهینه کنه)
در نهایت اومده و memory management در اسپارک رو توضیح داده که یکی از مهم‌ترین و البته پیچیده‌ترین قسمت‌های فهم اسپارک هست و گفته که memory management در سطوح مختلف قابل تعریفه مثل driver memory و یا executor memory و ...
توصیه می‌کنیم حتما این رشته بلاگ رو بخونید و سعی کنید از این به بعد به جای pandas از spark استفاده کنید که وقتی دیتای حجیم دیدید هول نکنید!

لینک رشته بلاگ:
https://luminousmen.com/post/hadoop-yarn-spark

#handsOn
#read
#blog

@nlp_stuff
پَچ‌پَچ کردن تمام آن چیزی است که نیاز دارید.

اگر در این چند سال همراه ما بوده‌ باشید یادتون هست که معماری‌های ViT و MLP-Mixer سعی داشتند نشون بدن که برای به دست آوردن یک بازنمایی خوب از تصویر، لازم نیست که به کانولوشن مقید باشیم. ViT نشون داد که میشه با پچ‌پچ کردن (یعنی این که تصویر رو به تکه‌های کوچیکتر تقسیم کردن) و بعد اعمال اتشنن و MLP پچ‌محور این بازنمایی خوب رو به دست آورد و MLP-Mixer هم گفت که به همون اتنشن هم نیازی نیست و میشه بعد از پچ‌پچ‌کردن با دو تا MLP که یکیشون Depth-wise و دیگری Patch-wise هست بازنمایی خوبی را یاد گرفت. (قبلا در https://t.me/nlp_stuff/81 و https://t.me/nlp_stuff/168 این دو معماری رو معرفی کرده بودیم)

حالا یک مقاله که در TMLR چاپ شده اومده و نویسندگانش گفتن که اصلا بحث اتنشن و MLP نیست. اون چیزی که باعث یادگیری بازنمایی خوب میشه خود patch کردن و استفاده از یک الگوی متقارن (یا به قول خودش isotropic) بین این پچ‌های مختلف هست. بر همین ایده، خودشون اومدن و یک مدل به نام Conv-Mixer ارائه دادن. ساختار و نحوه عملکرد این مدل این شکلیه که تصویر ورودی رو مثل ViT و MLP-Mixer میاد و پچ‌پچ می‌کنه و روی هر پچی هم patch-embedding رو اعمال میکنه (اینجا برای این که ژانگولربازی دربیاره بگه من تو مدلم از هیچ MLP استفاده نکردم اومده و این فرآیند Patch Embedding رو هم با کانولوشن با استراید اندازه سایز پچ انجام داده). سپس در مرحله بعدی میاد و لایه‌ای به نام Conv-Mixer رو به تعداد عمق d روی این پچ‌ها اعمال میکنه. اما هر کدوم از این لایه‌های ConvMixer چه شکلی هستند؟ هر لایه ConvMixer در واقع از دو کانولوشن تشکیل شده. یک کانولوشن که صرفا به صورت depth-wise روی فیچرهای حاضر در یک عمق مشخص کانال و در مکان‌های مختلف اون عمق اعمال میشه و یک کانولوشن دیگه که اون هم به صورت صرفا spatial-wise بر روی فیچرهای حاضر در یک مکان مشخص و در عمق‌های مختلف اون مکان اعمال میشه. در نهایت هم بعد از اعمال d تا از این لایه‌ها میاد و با میانگین‌گیری از بازنمایی پچ‌های مختلف یک بازنمایی کلی برای تصویر به دست میاره. عکس کد این مدل رو پیوست‌ کردیم که بسیار هم ساده است و اگر ببینیدش یحتمل بهتر بتونید بفهمید ماجرا رو.

بعد مقاله اومده و مدل Conv-Mixer و بقیه رقبا نظیر Resnet و ViT و MLP-Mixer رو روی دیتاست ImageNet-1k آموزش داده و نشون داده که Conv-Mixer نسبت به بقیه رقبا دقت بالاتری گرفته و البته تعداد پارامتر کمتر و سرعت Throughput بیشتری هم داره. نکته جالب این مقاله به نظر اینه که نشون داده که برای انتقال بازنمایی بین پچ‌ها لازم نیست که از فرآیند Self-Attention یا MLP-Mixer که هر دو فرآیندهای سنگینی به لحاظ حافظه‌ای هستند و استفاده کنیم و به صورت global اطلاعات بین پچ‌ها رو انتقال بدیم. بلکه میشه با خود کانولوشن این فرآیند انتقال اطلاعات رو به صورت لوکال پیاده‌سازی کنیم. یحتمل این پایان کار نیست و باز هم در آینده مدل‌های بیشتری خواهیم دید که سعی دارن با تغییر در معماری با معماری‌های سابق نظیر ResNet و ViT و MLP-Mixer و البته Conv-Mixer رقابت کنند.

لینک مقاله:
https://openreview.net/pdf?id=rAnB7JSMXL


#read
#paper

@nlp_stuff
عمرتان زیادی کرده که دکترا بخوانید؟

این
هفته آقای لکان (یکی از سه‌ خدای دیپ‌لرنینگ) توییتی زده و به مورد Aditya Ramesh اشاره کرد. فردی که لیسانسش رو از دانشگاه NYU گرفته و قصد داشت تا وارد دوره دکتری شود اما با یک کارآموزی در OpenAI مسیرش تغییر کرده و در آن جا مانده و در نهایت با مدرک لیسانس تبدیل به نویسنده اصلی مقاله مدل معروف Dall-E می‌شود.

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

نکته‌ دیگری که آقای نیشابور اشاره کرده است این است که تعداد موقعیت‌های دکترای یادگیری ماشین روز به روز بیشتر می‌‌شود اما از آن طرف تعداد شغل‌هایی که به مدرک دکتری یادگیری ماشین نیاز دارد در آینده روز به روز کمتر می‌شود. در واقع با داشتن دکتری شما over-qualified می‌شوید و از طرف دیگر هم مگر آکادمی چه قدر موقعیت شغلی می‌تواند داشته باشد؟ در مقابل، صنعت اما بیش از ML Researcher به ML Engineer‌ها نیازمند است. کسی که بتواند چیزی را واقعا بسازد. دوره دکتری باعث دوری نسبی از شما صنعت و مهارت‌های آن خواهد شد. آقای نیشابور در انتها به نتایج تحقیقی اشاره کرده که در آن گفته شده درصد زیادی از دانشجویان تحصیلات تکمیلی دچار افسردگی و اضطراب شدید هستند.

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

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

لینک توییت لکان:
https://twitter.com/ylecun/status/1605450677806895104

لینک توییت نیشابور:
https://twitter.com/bneyshabur/status/1605677285255675904

#tweet
#read

@nlp_stuff
در مورد chatGPT، مکانیزم RLHF و راهی که با InstructGPT طی شد

احتمالا این سوال که چطوری chatGPT بوجود اومده ذهن شما رو درگیر کرده باشه. قبل از پرداختن به این سوال باید اول پرسید Open-AI دقیقا با چه نیازی به GPT-3 راضی نشد و به chatGPT رسید؟

پاسخ اینه که در واقع GPT-3 از روی Text موجود در اینترنت آموزش دیده بود. برای ساخت معماری این شبکه از Decoder استفاده کردند؛ پس تسک اینه که وقتی یه جمله بهش میدی کلمات بعدی رو حدس بزنه. اما با این ساختار آموزشی و این نوع دیتا هیچ تضمینی وجود نداشت که اون جملاتی که در ادامه Predict می‌کنه لزوما دارای حقیقت باشه یا جملات سمی و توهمی یا حتی توهین آمیز نباشه. این اولین نیاز بود. نیاز دوم این بود که بتونه دستور و خواسته‌ای که یوزر از طریق ورودی میده رو متوجه بشه و چیزی رو که یوزر میخواد رو تولید کنه. یعنی ساختار آموزش بجای «بقیه‌اش رو تو بگو» به ساختار ارباب رعیتی «این کاری که میگم رو بکن» تبدیل بشه. برای این دو نیاز open-AI مدل خفنی رو توسعه داد و اسمش رو گذاشت: «InstructGPT».

برخلاف تصور، chatGPT مستقیم از روی GPT-3 ایجاد نشده. بلکه از نظر open-AI راه chatGPT از fine-tune کردن InstructGPT می‌گذشته. که با اصلاح ساختار آموزش و ارایه یک روش آموزشی خیلی خفن InstructGPT رو توسعه دادند. و بعد از این مدل به chatGPT رسیدند. جالب اینجاست که اصل زیبایی‌های خلقت توی InstructGPT جمع شده. و از InstructGPT تا chatGPT خیلی مسایل فنی خاصی رخ نداده.

برای ساخت InstructGPT اول اومدن در کمال ناباوری GPT-3 رو تبدیل به تسک Supervised کردند. تمام Promptهایی که ملت روی GPT-3 داشتند رو به یه سری انسان دادند و ازشون خواستن پاسخش رو بنویسند (دیوونه خونه ست). و بعد از روی این سوال و جواب، یه مدل توسعه دادند. ماجرا از اینجا تازه شروع میشه. در ادامه فرایند از یه مکانیزمی استفاده کردند که اسمش رو open-AI گذاشته RLHF. یا همون Reinforcement Learning Human Feedback.

فرایند RLHF به این صورته:

- اول به ازای هر Prompt، از مدل‌های Base-Line چندین خروجی می‌گیریم و خروجی‌ها رو به انسان می‌دیم تا برامون از بهترین تا بدترین جواب Sort کنه. (در اینجا مدل‌های Base-Line شامل GPT-3 می‌شه و اون مدل Supervised). و بعد از طریق این دیتای باارزش (ترتیب بندیِ نتایج مدل‌ها بر اساس ترجیح انسان)، یک Reward Model توسعه می‌دیم. در واقع اینجا با این مدل داریم اون Functionی رو مدل می کنیم که معمولا یا Rule Based بود یا انسان.

- در مرحله بعد مدل GPT-3 رو تبدیل به یک مدل RL می‌کنیم. و به ازای هر Prompt در دیتابیس ازش خروجی می گیریم. خروجی رو میدیم به Reward Model و از Reward محاسبه شده برای آپدیت Policyهای مدل استفاده می کنیم.

بنظرم تو این روش کار یدی و کار علمی-مهندسی در یک تعادل جذابی قرار داره. از یه طرف تبدیل کردن یه مدل زبانی به یک مدل RL بنظر خفن میاد و احتمالا بیشتر در آینده شاهدش باشیم. از طرفی، جایی که تصور نمی شد انسان حضور داشته باشه، از انسان استفاده شد. و در آخر هم با Reward Model زیبایی رو بر ما تمام کردند و در جایی که حضور انسان یا Rules پذیرفته شده بود اثبات کردند میشه مدلی ساخت که ترجیحات انسان ها رو مدل کرد و خلاصه که با RLHF نمایش زیبایی از تعامل انسان و ماشین رقم زدند.

برای مطالعه عمیق تر:
https://openai.com/blog/instruction-following/

https://openai.com/blog/deep-reinforcement-learning-from-human-preferences/

https://arxiv.org/abs/2203.02155


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

#read
#paper

@nlp_stuff
قطار self-supervised به ایستگاه tabular data رسید!

قطعا در مدح self-supervied  learning زیاد شنیدید و در این پست (https://t.me/nlp_stuff/298) هم روش‌هاش در NLP رو مرور کردیم. یکی از محدودیت‌های اصلی self-supervised learning اینه که خیلی وابسته به دامین و مودالیتیه. مثلا روش‌های حوزه تصویر به سختی برای حوزه متن قابل انجامه. حالا مردانی مرد از google research به پا خاسته‌اند و سعی کردند روشی عمومی برای self supervised learning ارایه کنند که حتی بر روی tabular data هم بتونه جواب بده. معماری کلی این روش رو در تصویر زیر می‌تونید ببینید. مانند همه روش‌های SSL که در NLP بررسی کردیم، طبیعتا اینجا هم فاز pre-training و fine-tuning داریم که اساسا وجود همین پارادایم هم باعث میشه در محیط‌هایی که داده لیبل‌دار کمتری وجود داره بهتر عمل بکنه. ایده اصلی در فاز pre-training هست که از denoising auto encoderها الهام گرفته شده. در این روش به ازای یه batch از داده ترین به صورت رندم یک زیرمجموعه‌ای از فیچرها انتخاب میشه و این فیچرها رو corrupt می‌کنند. روش corruption هم به این صورته که به صورت رندم با همون فیچرها از سمپل‌های دیگه جایگزین میشه. حالا همون‌طور که در قسمت بالای تصویر می‌بینید دیتای سالم و دیتای corruptشده به ‌طور همزمان (تعریف همزمان اینه که دو تا شبکه داریم که full parameter sharing انجام دادند) به یک شبکه انکودر f داده می‌شه که داده رو به فضای بزرگتری می‌برند و سپس به یک شبکه g داده می‌شه که داده رو به فضای کوچکی میبره و بعد با استفاده از InfoNCE که یه loss function مشهور در عرصه SSL هست تفاوت خروجی شبکه به ازای دیتای corruptشده و دیتای سالم به دست میاد و کار ترینینگ انجام میشه (InfoNCE عملا شبیه یه categorical cross entropy عمل می‌کنه که به ازای نمونه‌های شبیه به هم مقدار کمی خروجی می‌ده و به ازای نمونه‌های negative که دور از هم هستند هم مقدار زیادی رو خروجی میده).
در فاز fine tuning عملا شبکه g  کنار گذاشته میشه و یک classifier head بر روی شبکه f گذاشته میشه و کل شبکه fine tune میشه.
برای تست این روش هم از دیتاست OpenML-CC18 استفاده شده که ۷۲ تسک دسته‌بندی داره و چون این مساله برای tabular data بوده ۳ تا از دیتاست‌هاش رو (CIFAR , MNIST, Fashion MNIST) کنار گذاشتند و عملا بر روی ۶۹ دیتاست تست گرفتند که روی برخی حتی با داده کمتر، بهبود هم داشته. مقاله خیلی جمع و جور و به زبان ساده و با جزییات تکنیکال نوشته شده و توصیه می‌کنیم حتما بخونید.

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

لینک گیت‌هاب:
https://github.com/clabrugere/pytorch-scarf

#read
#paper

@nlp_stuff
اعتدال پیشه کن حتی در آموزش تخاصمی مدل!

محققان نشون دادند که adversarial training به عنوان مؤثرترین راهبرد دفاعی در برابر حملات adversarial examples است که قبلا در موردش در حوزه تصویر در این پست (https://t.me/nlp_stuff/297) صحبت کرده بودیم. به صورت ساده یک حمله موفق زمانی اتفاق می‌افته که ما بتونیم یکی از کلمات جمله ورودی رو با مترادفش جابجا کنیم (معنای جمله تغییر نکنه!) به نحوی که خروجی مدل تغییر کنه. در این حالت ما موفق شدیم یک حمله synonym attack به مدل بزنیم و در اصطلاح اون رو گول زدیم.
حالا برای اینکه ازین نوع اتفاقات کمتر بیافته باید مدل رو با روش آموزش خصمانه یا همون adversarial training مستحکم کرد. همونطور که گفتیم آموزش خصمانه توسط adversarial examples انجام میشه که در این مقاله اون‌ها رو به دو دسته کلی تقسیم کردند:

۱- مثال‌های متخاصم سنتی (Traditional adversarial examples یا Fickle adversarial examples): به روشی گفته میشه که با یک تغییر کوچک در ورودی (جوری که معنا عوض نشود) سعی در گیج کردن مدل به نحوی داره که پیش‌بینی مدل متفاوت از قبل بشه. مثلا استفاده از incessant بجای continued در جمله
Employers have continued to operate motor vehicles, and that's all that matters.

۲- مثال‌های متخاصم متضاد (Obstinate adversarial examples): برعکس نوع قبلی در این روش یک ورودی به نحوی عوض میشه که پیش‌بینی مدل رو حفظ می‌کنه اما معنای واقعی ورودی رو متحول میکنه. مثال: استفاده از employees بجای employers در همان جمله بالا.


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

در ادامه، نویسندگان یک روش مستحکم جدید ارائه میدهند به اسم Balanced Adversarial Training (BAT) که از هر دو نوع مثال‌ها در آموزش خصمانه مدل استفاده میشه. ایده، استفاده از contrastive learning هست بطوری که فاصله بین جفت های مثبت (مترادف‌ها) رو به حداقل برسونیم و فاصله بین جفت های منفی (متضادها) رو به حداکثر برسونیم. مقاله دو ورژن از روش پیشنهادیش به نام‌های BAT-Pairwise و BAT-Triplet داره. در BAT-Pairwise سعی میکنه فاصله بین جفت‌های مثبت و منفی رو مستقل از جمله ورودی بهینه بکنه ولی توی BAT-Triplet یک رویکرد مثلثی داره که از ورودی به عنوان لنگر مثلث استفاده میشه. در واقع در ورژن دوم سعی بر این هست که فاصله بین جفت‌های مثبت و ورودی اصلی کوچکتر از فاصله جفت‌های منفی و ورودی اصلی باشه (با یک حداقل مارجین m).

در ضمن نویسنده مقاله تاکیید داره که این یک trade-off هست و باید اعتدال در استفاده از هر دو نوع مثال‌ها حفظ بشه تا مدل در عین‌حالی که نسبت به مترادف‌ها خروجیش عوض نمیشه در برابر متضاد‌ها یا چیزایی که معنی رو عوض می‌کنند هرچند کوچک هشیار باشه!

در انتها گفته ما مدل‌های BERT و RoBERTa رو روی ۲ تسک مختلف با آموزش SAFER برای ۱۵ ایپاک آموزش میدیم. سپس نرخ موفقیت حمله (ASR) رو برای حملات مترادف (fickleness) و متضاد (obstinacy) در هر دوره آموزشی اندازه میگیریم که نتایجشون نشون میده نرخ موفقیت حملات، کمتر از روش‌های سنتیه.

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

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

#read
#paper

@nlp_stuff
ما به تو مدیونیم آقای SE!

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

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

- به دیتاست به چشم یه گناهکار نگاه کنید مگر اینکه خلافش ثابت بشه (در واقع همیشه شکاک باشید که یه جای کار می‌لنگه و بابتش تست کیس‌های مناسب طراحی کنید)
- پیش‌فرض‌هایی که باهاش به سراغ جمع‌آوری دیتاست رفتید رو گردآوری کنید و کنترل ورژن انجام بدید (در داکیومنت خروجی مرحله آنالیز نیازمندی‌ها و یا طراحی می‌تونه دیده بشه)
- حتما در مسیر توسعه دیتاست، peer review داشته باشید که از نون شب واجب‌تره
- برای بررسی توزیع پارامتر‌های دیتاست از ابزارهای مصورسازی استفاده کنید. (یکی از سکشن‌های تمپلیت مربوط به خروجی فاز آنالیز نیازمندی‌ها که در انتهای مقاله اومده، distributional requirements هست که در اون توزیع لازم برای برخی پارامتر‌ها توضیح داده میشه. مثلا ممکنه دیتاست باید طوری جمع‌آوری بشه که فلان پارامتر توزیع نرمال داشته باشه و این واقعیت باید در داکیومنت فاز آنالیز نیازمندی‌ها دیده بشه)
- حتما نواقص و محدودیت‌های دیتاست‌تون رو بدونید و یادداشت کنید به جای اینکه روی سرش قسم بخورید

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

پ.ن: به عنوان مثال، دیتاست معروف peyma که در حوزه NER فارسی مطرحه یه ایراد بزرگ داره و اون هم اینکه تمام named entityها که در دیتاست تست هستند، در دیتاست ترین نیز موجودند و هیچ named entityای وجود نداره که مدل، اون رو در فاز ترینینگ ندیده باشه! در حالیکه مثلا با ایجاد یک سناریوی یونیت تست میشد جلوی این رو گرفت. البته ما این مشکل رو در دیتاست خودمون (https://t.me/nlp_stuff/250) حلش کردیم ولی دیتاست ما هم قطعا مشکلاتی داره که شما می‌تونید حلش کنید.

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

#read
#paper

@nlp_stuff
اورفیت‌کردن در حکمرانی

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

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

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

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

لینک بلاگ:
https://sohl-dickstein.github.io/2022/11/06/strong-Goodhart.html

#read
#blog

@nlp_stuff
سلطان PaLI به دنیای تصویر-متن سلام می‌کند!

بارها گفتیم که دوره یکه‌تازی مدل‌های multimodal شروع شده. این اواخر نیز ظهور مدل‌هایی مانند Stable Diffusion توجه همه رو به این حوزه دوباره جلب کرد. حالا گوگل با فهم درست شرایط حساس کنونی، یک مدل general purpose برای این حوزه ارایه داده که باهاش تقریبا هر تسک تصویر-متن‌ی رو می‌تونید انجام بدید و حتی به این بسنده نکرده و مدل رو به صورت multilingual آموزش داده (که فارسی هم ساپورت می‌کنه). معماری مدل خیلی ساده است و در شکل هم می‌تونید ببینید که یک vision transformer داره که طبیعتا کار فهم تصویر رو انجام می‌ده و برای فهم متن هم از مدل T5 استفاده می‌کنه که همون‌طور که می‌دونید مدل زبانی هست که تمامی مسایل حوزه پردازش زبان رو به صورت text-to-text مدل می‌کنه و عملا قابلیت general purpose بودن PaLI رو فراهم می‌کنه. این مدل هم مانند مدل‌های خفن اخیر یه کامیون پارامتر داره که حدود ۱۷ میلیارده که از این مقدار حدود ۴ میلیارد سهم مدل فهم تصویر و ۱۳ میلیارد سهم مدل فهم زبانی هستش! همچنین برای خلق این همه جلال، دست به جمع‌آوری یک دیتاست بسیار عظیم زدند که اسمش رو WebLI گذاشتند و حدود ۱۰ میلیارد زوج تصویر-متن به زبان‌های مختلف داره (حقیقتا با این همه تلاش و توسعه کلا مفهوم میلیارد رو به سخره گرفتند). نکته قابل توجه اینه که این مدل در برخی از بنچمارک‌های حوزه تصویر-متن مانند COCO-captions، TextCaps و VQAv2 تونسته رکورد بزنه و مدل‌های دیگه رو شکست بده. البته اگه نمی‌تونید مدل ۱۷ میلیارد پارامتری‌ش رو لود کنید نگران نباشید چون نسخه‌های کوچک‌تر هم بیرون دادند که حدود ۳ میلیارد پارامتر داره و با توجه به شرایط فعلی باز هم نمی‌تونید اون مدل رو لود کنید :)) پس فقط نگاه کنید و لذت ببرید.

لینک بلاگ:
https://ai.googleblog.com/2022/09/pali-scaling-language-image-learning-in.html

#read
#blog

@nlp_stuff
وضعیت هوش مصنوعی در ۲۰۲۲

گزارش StateofAI چند روز پیش برای ۲۰۲۲ منتشر شد. قبلا در این پست t.me/nlp_stuff/259 گزارش ۲۰۲۱ اش رو بررسی کرده بودیم. امسال هم این گزارش در چهار بخش آکادمیک، صنعت، سیاست و ایمن هوش مصنوعی رو بررسی کردند و در نهایت هم پیش‌بینی از رخداد‌های سال آینده دادند. چند نکته به نظرمون جالب اومدند که گفتیم با شما هم به اشتراک بگذاریم:
- اول از همه این که هوش مصنوعی در ۲۰۲۲ تونست در کاربردهای علمی مختلف از طراحی انزیم بازیافت پلاستک گرفته تا اثبات قضایای علوم پایه با موفقیت به کار گرفته بشه. این نشون دهنده اینه که پتانسیل زیادی در انواع رشته‌های دیگه برای استفاده از هوش مصنوعی وجود داره.
- با گذشت ۵ سال از انتشار مقاله ترنسفورمر، این مدل همچنان آخرین آپدیت معماری هوش مصنوعی محسوب میشه. افزونه‌های بسیاری بر ترنسفورمر در این پنج سال مطرح شده اند و مخصوصا سعی کرده‌اند پیچیدگی مرتبه دو اش نسبت به ورودی رو کاهش بدن اما در نهایت برد همچنان با ترنسفورمر خالیه.
- استفاده از مدل‌های زبانی در زمینه های دیگه مثل حل مسائل ریاضی یا دسترسی دادن مدل‌های زبانی به استفاده از اینترنت (t.me/nlp_stuff/260) یا حتی کمک به ربات‌ها، همچنان مورد توجه جامعه هوش مصنوعی هست.
- قطعا امسال سال مدل‌های diffusion بود. سال گذشته این موقع این مدل‌ها تونسته بودند GANها رو تنها در چند بنچمارک شکست بدن. اما در کمتر از یک سال اکنون هایپ‌ترین مساله حوزه هوش مصنوعی هستند و تو کاربر‌دهای مختلف نظیر تولید تصویر و فیلم و صوت و حتی مولکول ازشون استفاده میشه. مخصوصا در زمینه تولید تصویر، امسال مدل‌های زیادی در این باره مثل Dall-E2 و Imagen و Glide منتشر شدند و امسال سال باز شدن قفل مساله تولید تصویر بود. این رشد منجر به تولد آزمایشگاه‌های جدید تخصصی برای این مساله نظیر Midjouney و StableDiffusion شد(t.me/nlp_stuff/300). رقابت بر سر مدل‌های تولیدکننده فیلم هم ظاهرا تازه شروع شده.
- ترنسفورمر‌ها هم در یادگیری تقویتی و هم در حوزه‌های مدل‌های مولتی مودال (مثل مدل گاتو) به کار گرفته شدند. به نظر این روند به این سمت میره که در نهایت یک مدل ترنسفورمری بزرگ برای انجام هر کاری رو در آینده خواهیم دید.
- تسک NeRF از نوزده مقاله در سال ۲۰۱۹ به بالای هزار مقاله در سال ۲۰۲۲ رسیده (t.me/nlp_stuff/225) که در نوع خودش جالب محسوب میشه.
- اکثر مقاله‌های چینی بر روی حوزه‌های نظارتی و مراقبتی مثل تشخیص شی و چهره و مسیریابی اشیا متمرکز شده ‌اند. در حالی که تمرکز جامعه هوش مصنوعی آمریکا بر روی مسائل متنی و صوتی هست. همچنین به صورت کلی تعداد مقالات آمریکایی‌ها بیشتره ولی سرعت رشد تعداد مقالات چینی‌ها بالاست. البته اگر مقالات چینی زبان رو هم به این مقایسه اضافه کنیم چینی ها حدود ۵ برابر آمریکایی‌ها مقاله دارند :)
- همچنان مونوپلی عرصه GPU دست Nvidia است. به طوری که میزان سود سالانه nvidia بیشتر از میزان ارزش‌گذاری سه استارتاپ بزرگ در این زمینه است.
- امسال بسیاری از افراد هسته‌های فنی شرکت‌های بزرگ نظیر گوگل و متا و اوپن‌ای‌آی این شرکت‌ها رو ترک کردن و به سراغ استارتاپ‌های خودشون در زمینه هوش رفتند. برای مثال آقای Vaswani نویسنده مقاله ترنسفورمر که به adept پیوسته (اینجا یک محصول این شرکت رو معرفی کرده بودیم t.me/nlp_stuff/303)
- هوش مصنوعی هم از مشکلات اقتصادی امسال دنیا بی آسیب نموند و میزان سرمایه‌گذاری در استارتاپ‌های هوش مصنوعی نسبت به سال پیش ۳۶ درصد کاهش رو تجربه کرد. میزان این رقم کاهش برای همه استارتاپ‌ها ۲۴ درصد بوده.
- آمریکا همچنان بیشترین استارتاپ‌های هوش مصنوعی یونیکورن رو داره (استارتاپ‌هایی با بیش از یک میلیارد دلار ارزش) این رقم برای امریکا و چین و انگلیس به ترتیب ۲۹۲ و ۶۹ و ۲۴ هست. نکته جالب توجه قرار گیری اسرائیلی‌ها در رده چهارم لیست با ۱۴ یونیکورن و ۵۳ میلیارد دلار ارزشه در حالی که جمعیتش به ده میلیون هم نمیرسه. wordtune یکی از نمونه استارتاپ‌های مشهور اسراییلی هست.
- در حوزه آموزش مدل‌های بزرگ، آکادمی در رقابت با صنعت رقابت رو وا داده و نرخ مشارکت آکادمی از شصت درصد در سال ۲۰۱۰ به حدود صفر درصد در اکنون رسیده! و به صورت کلی پژوهش از انحصار آکادمی دراومده و یک جوری حالت غیرمتمرکز پیدا کرده.
- شرکت‌های حوزه دفاعی در حال به کار بستن هوش مصنوعی در محصولات و تجهیزات خودشون هستند. این علاقه یک‌طرفه نیست و شرکت های بزرگی نظیر آمازون و مایکروسافت و گوگل هم در تلاش برای عادی سازی استفاده از هوش مصنوعی در صنایع دفاعی هستند.
در نهایت هم چند تا پیش‌بینی برای سال آینده داشتند که جالب‌ترین‌هاشون یک مدل ۱۰ میلیارد پارامتر مولتی‌مودال-یادگیری تقویتی از دیپ‌مایند و ظهور ابزار‌های مولد صوتی است.
این گزارش خوب رو از دست ندید.

لینک گزارش:
Stateof.ai

#read
@nlp_stuff
چت‌بات blender bot 3 هدیه facebook research به مشتاقان حوزه چت‌بات!

چند روزی می‌گذره که تیم تحقیقاتی فیسبوک چت‌بات open domain خودش رو به صورت عمومی ریلیز کرده و کد و وزن مدل‌ها و یک دمو از این مدل رو در راه خدا نذر کرده! تیم فیس‌بوک ادعا کرده که این نذر رو در راه اعتلای جامعه تحقیقاتی انجام داده چرا که اینطوری راه تحقیقات در حوزه conversational AI باز میشه. این مدل در واقع یه سیستم عظیم ماژولار هست که از ماژول‌های مختلفی مانند Internet search decision، long term memory access decision، generate internet search query و چندین ماژول دیگه تشکیل شده که فلوی اجرایی کل این مدل رو در تصویر زیر می‌بینید. علاوه بر اینکه در ماژول‌هایی مثل generate dialogue response از ترنسفورمرها و مدل‌های زبانی مبتنی بر اون‌ها استفاده شده، برای انتخاب اجرای هر یک از این ماژول‌ها هم یه ترنسفورمر ترین شده که در لحظه به ازای یه سری ورودی کنترلی تصمیم می‌گیره کدوم فلو رو در پیش بگیره. البته دموی این مدل فعلا فقط برای مردم ینگه دنیا (آمریکا) در دسترس هست و فیس‌بوک گفته همزمان از دیتای دمو هم برای بهبود مدل داره استفاده می‌کنه. از طرفی فیس‌بوک، مکانیزم‌های امنیتی خاصی رو به کار برده برای اینکه خطرات احتمالی ناشی از سرچ‌های نابه‌جا مثل محتوای خشونت و غیره به حداقل برسه (در مورد بحث‌هایی مثل responsible AI هم قبلا صحبت کرده بودیم و باید کم کم خیلی بیشتر بهش توجه بشه). اگه در حوزه conversational AI کار می‌کنید داکیومنت‌ها و کد‌هایی که این تیم منتشر کرده رو حتما شخم بزنید، باشد که رستگار شوید.

پ.ن: خداوکیلی ببینید چقدر کار کردند ولی دارند رایگان همه چیز رو در معرض عموم می‌ذارند. با این کار باور کنید همه کامیونیتی از جمله خود تولیدکنندگان حظ و بهره می‌برند.

لینک گیت‌هاب:
https://github.com/facebookresearch/ParlAI/tree/main/projects/bb3

لینک بلاگ:
https://ai.facebook.com/blog/blenderbot-3-a-175b-parameter-publicly-available-chatbot-that-improves-its-skills-and-safety-over-time/?utm_source=twitter&utm_medium=organic_social&utm_campaign=blenderbot

#paper
#read

@nlp_stuff
مرور روش‌های SSL (Self-Supervised Learning) در پیش‌یادگیری NLP

آقا آمیت در این بلاگ پست (مال سال ۲۰۲۰عه) به صورت خیلی جمع و جور اومده یه مروری کرده که چه تسک‌هایی با SSL طراحی شدند که نقش pretext یا همون pretraining رو میتونند به عهده بگیرند. یکیش رو همین الان نقدا باید بدونید: Masked Language Modeling. این تسک شامل ماسک کردن کلمه و حدس زدنش توسط مدله که در برت استفاده شد. یازده تا روش این مدلی رو ایشون توضیح داده که مدل با اینا می‌تونه بدون اینکه لازم باشه داده‌ای لیبل بزنیم، از روی متن representationها رو یاد بگیره و بعد بتونه جلوی تسک‌های مختلف قدعلم کنه. اگر ده دقیقه وقت دارید، این بلاگ پست رو بخونید و لذت ببرید.

این یازده تا روش به صورت یکجا به اضافه‌ی مقالاتی که از این روش‌ها استفاده کردند:
Center Word Prediction (Continuous Bag of Words in Word2Vec)
Neighbor Word Prediction (skip-gram in Word2Vec)
Neighbor Sentence Prediction (Skip-Thought Vectors)
Auto-regressive Language Modeling (Neural Probabilistic Language Model, GPT)
Masked Language Modeling (BERT, RoBERTa and ALBERT)
Next Sentence Prediction (BERT)
Sentence Order Prediction (ALBERT)
Sentence Permutation (BART)
Document Rotation (BART)
Emoji Prediction (DeepMoji)
Gap Sentence Generation (PEGASUS)


لینک پست:
https://amitness.com/2020/05/self-supervised-learning-nlp/

#read
#blog

@nlp_stuff
مقاوم‌سازی شبکه عصبی در برابر انواع حملات خصمانه!

حتما در سال‌های اخیر در مورد Adversarial Attacks و ضعف شبکه‌های عصبی در تشخیص تصاویری که با افزوده شدن نویزهای کوچک تغییر داده شده‌اند شنیده‌اید. به طور مشخص، میتوان با افزودن نویز به تصاویر طوری که این نویز‌ها برای چشم انسان پنهان باشند، قدرت تشخیص شبکه‌ی عصبی که روی تصاویر سالم خوب کار می‌کند را به صفر رساند! از این رو در دهه‌ی گذشته محققین بسیاری سعی در یافتن روش‌های دفاعی (Defense Mechanism) برای مقابله با این حملات برآمده‌اند. اما مشکل اصلی این بوده که هر کدام از این روش‌های دفاعی حداکثر برای یک نوع حمله به شبکه‌های عصبی طراحی شده بودند و با آمدن روش جدیدی از حمله بلااستفاده یا بسیار ضعیف میشدند. از این رو سوال مهمی که مطرح شد این بود که میتوان شبکه‌های عصبی طراحی کرد که به ازای ورودی های مشخص، توان تشخیص درست را به ازای تمام حملات ممکن در یک همسایگی آن ورودی‌ها داشته باشد؟ از این رو فیلد جدیدی با عنوان Verification of Neural Networks مورد توجه قرار گرفت که سعی در اثبات ریاضی‌وار توانایی یک NN در تشخیص پیچیده ترین حملات (Adaptive and brute force attacks) دارد.

در کنفرانس اخیر ICML وورکشاپی تحت عنوان Workshop on Formal Verification of Neural Networks برگزار شد که مهمترین پیشرفت‌ها در این حوزه را در چند سال اخیر نشان می‌دهد. به طور ویژه یکی از این مقاله‌ها (با عنوان Improving adversarial robustness via joint classification and multiple explicit detection classes)، ایده‌ی Verification شبکه‌های عصبی که به طور توأمان Classification و Detection انجام میدهند را بررسی میکند.

یکی از راه‌های افزایش کارآیی شبکه‌های عصبی برای تشخیص Adversarial attackها افزودن Detector به شبکه‌ی عصبی است. منظور از Detector یک Binary Classifier است که تعیین میکند آیا ورودی داده شده تصویری سالم است یا مورد تغییر قرار گرفته است و به نوعی Adversarial حساب می‌شود؟ به طور مثال اگر می‌خواهیم از مجموعه داده‌ی MNIST برای train کردن شبکه‌ی عصبی استفاده کنیم که شامل ده کلاس است، میتوان کلاس یازدهمی اضافه کرد که وظیفه‌اش شناسایی عکس‌هایی است که دستکاری شدند. این مقاله به طور ویژه نشان می‌دهد که با افزودن تعداد بیشتری از این detectorها به Network، چگونه می‌توان توانایی تشخیص آن شبکه‌ی عصبی را بهبود داد. به طور مشخص این مقاله، نحوه‌ی Verify کردن و Train کردن چنین شبکه‌های پیچیده‌تری را شرح میدهد و با آزمایش‌های گوناگون روی داده‌های مختلف موثر بودن چنین روشی را نشان میدهد.

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

لینک ورکشاپ:
https://www.ml-verification.com

لینک مقاله:
http://download.huan-zhang.com/events/wfvml2022/papers/24_CameraReady_Camera%20Ready.pdf

#read
#paper

@nlp_stuff
More