علی نظری
علی نظری
خواندن ۲ دقیقه·۳ سال پیش

حملات تخاصمی (Adversarial Attacks) و مثال‌هایی از آن در مسائل پردازش متن

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

اول سراغ Adversarial Attacks می‌رویم. در این حملات، داده‌ها را دچار آشفتگی (perturbation) می‌کنند و آن‌ها را به عنوان ورودی به مدل می‌دهند، به صورتی که مثلا اگر این آشفتگی در سطح تصویر اتفاق بیفتد، انسان‌ها قادر به تشخیص آن نیستند. تصویر زیر که برای توضیح این مسئله، بسیار گویاست:

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

روش‌های معمول برای مقاوم‌سازی (robust) مدل، مواردی مانند استفاده از dropout و weight decay و موارد این‌چنینی هستند؛ ولی این روش‌ها مدل را در برابر حملات تخاصمی مقاوم نمی‌کنند. یکی از روش‌هایی که برای بهبود این مشکل وجود دارد، آموزش مدل با ورودی‌های تخاصمی‌ای است که می‌توانیم خودمان تولید کنیم و از این طریق از اختلال مدل در مواجهه با این ورودی‌ها جلوگیری کنیم.

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

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


منابعی که از آن‌ها برای مطالعه‌ی این موضوع استفاده کردم هم موارد زیر هستند که می‌توانید برای اطلاعات بیشتر به آن‌ها مراجعه کنید:
مقاله‌ی سایت openai
مقاله‌ی شماره‌ی ۱ و ۲ از towardsdatascience

nlpadversarial attackdeep learningmachine learning
شاید از این پست‌ها خوشتان بیاید