در این پست خیلی خلاصه در مورد روش های جاسازی یا Embedding و روش Node2Vec صحبت می کنم.
نکته: این پست به مرور زمان تکمیل خواهد شد.
روش های جاسازی واژه یا Embedding method ها به مجموعه ای از روش ها برای تبدیل انواع مختلفی از ورودی ها مثلا متن یا تصاویر به ورودی های قابل درک برای شبکه های عصبی گفته میشه. به زبان ساده مجموعه ای از روش ها که ورودی های مورد نظر را به بردارهای ویژگی یا feature vector ها تبدیل می کنن.
چون شبکه های یادگیری عمیق فقط آرایه های تک بعدی یا به اصطلاح feature vector ها را به عنوان ورودی قبول می کنن. بنابراین همه ورودی ها قبل از تحویل به شبکه عصبی باید به feature vector تبدیل بشن. feature vector ها آرایه های تک بعدی از ویژگی ها هستند.
به عنوان مثال در پروژه های تحلیل احساس که نیاز داریم دیتاستی از متن های مختلف را برای آموزش به شبکه بدهیم، ناگزیر هستیم که تک تک لغات موجود در پیکره را به یک Feature vector تبدیل کنیم. در پردازش متن روش های مختلفی به نام word embedding یا جاسازی واژه مانند word2vec، glove، fasttext، bert و ELMO برای ساخت بردارهای ویژگی از متن ها ساخته شده. ظهور این روش ها انقلابی بزرگ در پردازش متن ایجاد کرد.
خب حالا اگر داده های ما به صورت گراف باشن باید چکار کنیم؟؟؟؟ چطور می تونیم داده های گرافی را به شبکه های عصبی feed کنیم؟؟؟ همونطور که از قبل می دونیم گراف ها مجموعه ای از node یا vertex ها هستند که با edge یا یال های مختلفی به هم وصل شدند. هر یال ممکنه دارای جهت و وزن باشه.
در سال 2016 دوتا از دانشجوهای دکترای دانشگاه استنفورد روشی برای تبدیل داده های گرافی به feature vector ارائه دادند. در واقع Node2vec بک روش embedding برای تبدیل داده های گرافی به feature vector های قابل درک بوسیله شبکه یادیری عمیق هست.
ایده اصلی Node2vec از اونجا میاد که هر جمله در واقع یک گراف ساده جهت داره که هر کلمه در واقع یک Node گراف هست و توالی کلمات در جمله یال ها را می سازن. به عنوان مثال جمله "حال من خوب هست" را میشه به صورت گراف ساده جهت دار زیر نشون داد.
در نتیجه اگر ما بتونیم هر گراف را به جملات تبدیل کنیم، می تونیم از روش های word embedding برای تبدیل جملات حاصل از گراف ها به بردارهای ویژگی استفاده کنیم.
همانطور که در شکل بالا مشخصه، Node2vec یک گراف را به عنوان ورودی دریافت و پیمایش می کنه و روابط بین node ها را استخراج می کنه. این روابط در واقع مجموعه ای از جمله ها را می سازند.
در مرحله بعد از روش word2vec بر مبنای skip-gram (همونطور که از قبل می دونیم word2vec یک روش جاسازی واژه هست که بر پایه Continuous bag of word و یا skip-gram کار می کنه)برای تبدیل این جملات به feature vector ها استفاده می کنه و این feature vector ها رو میشه به عنوان ورودی به شبکه عصبی داد.