چطور مدل‌های دیفیوژن سری زمانی رو سریع‌تر و بهتر آموزش بدیم؟ (با مثال داده‌های حرکتی)

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

حالا دیفیوژن مدل چیه؟ یه جور هوش مصنوعیه که می‌تونه با یاد گرفتن ساختار داده‌ها، داده جدید و شبیه به داده واقعی بسازه. مثلاً تو سیستم‌هایی که داده اونها زمان‌مند یا سری زمانی هست (مثل داده‌های سنسورهای حرکتی)، این مدل خیلی به درد می‌خوره.

روش کار مدل دیفیوژن بر پایه اضافه کردن نویز (یعنی همون اغتشاش یا پارازیت!) به داده‌هاست و بعد سعی می‌کنه همونو پاک کنه و داده سالم رو reconstruct کنه. موقع آموزش این مدل‌ها، باید یه تابعی داشته باشیم که بفهمیم مدل چقدر خوب یاد گرفته (یا بهتر بگم: اختلاف بین نویزِ اصلی و نویزی که مدل تشخیص داده چقدره). مشکل چیه؟ چون خودِ فرایند دیفیوژن شانسی و اتفاقیه (استوکستیک یعنی همین)، اینکه بفهمی کیفیت خروجی مدل چقدره، واقعاً آسون نیست!

اینجاست که ایده ما وارد میشه: استفاده از معیارهای شباهت (similarity metrics)، یعنی شاخص‌هایی که نشون میدن دو تا داده یا سیگنال چقدر به هم شبیهن. مثلاً وقتی داریم داده‌های IMU (این همون سنسورهای حرکتی تو گوشی‌ها، دستبندهای هوشمند و غیره هستن) رو تولید می‌کنیم، باید بدونیم داده تولیدی تا چه حد به داده واقعی نزدیکه.

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

جالب‌تر اینکه، این معیار تازه اصلاح شده رو با دیتای اصلی خودمون هماهنگ کردیم. اینطوری تونستیم مدل رو سریع‌تر آموزش بدیم و حتی تعداد دفعاتی که مدل باید کل داده رو ببینه (که بهش epoch میگن؛ هر epoch یعنی یه بار کل داده رو می‌بینه)، کاملاً کم کردیم. خبر خوب؟ حتی با این کاهش زمان آموزش، مدل توی وظیفه طبقه‌بندی (classification task؛ یعنی اینکه مثلا تشخیص بده این حرکت دورانیه یا خطیه) هیچ پسرفتی نداشت و همون قدر خوب موند.

در ‌‌آخر، میشه گفت وقتی از معیارهای شباهت خوب و اصلاح‌شده توی آموزش مدل‌های مولد (Generative Models: یعنی مدل‌هایی که خودشون داده جدید می‌سازن)، استفاده می‌کنیم، واقعاً هم در وقت و انرژی سیستمی صرفه‌جویی میشه، هم آموزش این مدل‌ها برای کاربردهای عملی و واقعی خیلی بهینه‌تر و کاربردی‌تر میشه!

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

منبع: +