ترفند خفن برای تشخیص موجودیت‌ها با داده کم: یادگیری با دموهای آزاردهنده و شباهت دوتایی!

Fall Back

بذار یه موضوع خفن رو برات تعریف کنم! حتما اسم NER رو شنیدی، همون Named Entity Recognition یعنی یه سیستمی که می‌تونه توی متن دونه‌دونه اسامی مهم مثل اسم افراد، مکان‌ها، سازمان‌ها و… رو تشخیص بده. خب این کارا معمولا به کلی داده نیاز داره، ولی همیشه که این همه داده در دسترس نیست! حالا سؤال اینه: اگه داده کم باشه چی کار کنیم؟

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

۱. چجوری بهترین مثال‌ها رو واسه آموزش انتخاب کنیم؟ اکثر روش‌ها تا الان فقط براساس شباهت معنایی بودن! یعنی فقط نگاه می‌کردن دموها از نظر معنا شبیه به داده واقعی باشه یا نه. اما تو این مقاله جدید اومدن گفتن: “بیاید یه قدم جلوتر بریم! فقط شباهت معنایی فایده نداره، باید از شباهت ویژگی‌ها هم استفاده کنیم.”

اینجا ویژگی‌ها یعنی اون اطلاعات یا خصوصیت‌هایی که مدل از متن درمیاره؛ مثلا نوع کلمه، جایگاهش تو جمله و … پس مثلاً semantic similarity یعنی شباهت معنایی و feature similarity هم یعنی شباهت توی این ویژگی‌ها که مدل خودش درمیاره. اونا معتقدن تو انتخاب مثال باید جفتشو با هم دید، که بهش می‌گن Dual Similarity یا همون شباهت دوتایی.

۲. مشکل دوم اینکه وقتی مدل می‌خواد یاد بگیره، معمولا درست درست نمی‌تونه به مثالی که بهش دادن رجوع کنه و حسابی ازش بهره ببره. یعنی چی؟ یعنی مدل می‌تونه دمو رو نگاه کنه اما یاد نمی‌گیره واقعا بر اساس اونا پیش‌بینی کنه. خب اینجا نویسنده‌ها یه ایده باحال داشتن: بیان مدل رو طوری آموزش بدن که مجبور بشه به دموهایی که می‌بیند توجه کنه. چطوری؟ با Adversarial Demonstration Training! منظورش اینه که یه رقابت درست می‌کنن بین مدل و یه بخش دیگه، که باعث می‌شه مدل برای موفقیت حتما باید به مثال‌هایی که براش آوردیم دقت کنه وگرنه نتیجه خوبی نمی‌گیره. (adversarial یعنی نوعی آموزش که مدل رو به چالش می‌کشه و نمی‌ذاره راحت باشه!)

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

یه جمع‌بندی خودمونی: اگه سر و کارت با NER هست و با کمبود داده مواجهی، این ایده دو تا نکته خیلی مهمو بهت یاد می‌ده: ۱. بهترین دموها رو پیدا کن (فقط دنبال معنای مشابه نباش! ویژگی‌های مشترک هم مهمن)، و ۲. مدل‌تو مجبور کن واقعا به دموها توجه کنه، با یه مدل آموزش مبارزه‌ای (adversarial).

خلاصه، اینطوری می‌تونی مدل NER هوشمندتر و کارآمدتری بسازی، حتی وقتی داده زیاد دم دستت نیست! 😎

منبع: +