ویرگول
ورودثبت نام
باران سیل سپور
باران سیل سپور
خواندن ۳ دقیقه·۴ سال پیش

چطور می توانیم از گراف ها به عنوان ورودی شبکه یادگیری عمیق استفاده کنیم؟


در این پست خیلی خلاصه در مورد روش های جاسازی یا Embedding و روش Node2Vec صحبت می کنم.

نکته: این پست به مرور زمان تکمیل خواهد شد.

روش های جاسازی یا Embedding method ها

روش های جاسازی واژه یا Embedding method ها به مجموعه ای از روش ها برای تبدیل انواع مختلفی از ورودی ها مثلا متن یا تصاویر به ورودی های قابل درک برای شبکه های عصبی گفته میشه. به زبان ساده مجموعه ای از روش ها که ورودی های مورد نظر را به بردارهای ویژگی یا feature vector ها تبدیل می کنن.

چرا باید از embedding method ها استفاده کنیم؟

چون شبکه های یادگیری عمیق فقط آرایه های تک بعدی یا به اصطلاح feature vector ها را به عنوان ورودی قبول می کنن. بنابراین همه ورودی ها قبل از تحویل به شبکه عصبی باید به feature vector تبدیل بشن. feature vector ها آرایه های تک بعدی از ویژگی ها هستند.

به عنوان مثال در پروژه های تحلیل احساس که نیاز داریم دیتاستی از متن های مختلف را برای آموزش به شبکه بدهیم، ناگزیر هستیم که تک تک لغات موجود در پیکره را به یک Feature vector تبدیل کنیم. در پردازش متن روش های مختلفی به نام word embedding یا جاسازی واژه مانند word2vec، glove، fasttext، bert و ELMO برای ساخت بردارهای ویژگی از متن ها ساخته شده. ظهور این روش ها انقلابی بزرگ در پردازش متن ایجاد کرد.

روش Node2vec چیست؟

خب حالا اگر داده های ما به صورت گراف باشن باید چکار کنیم؟؟؟؟ چطور می تونیم داده های گرافی را به شبکه های عصبی feed کنیم؟؟؟ همونطور که از قبل می دونیم گراف ها مجموعه ای از node یا vertex ها هستند که با edge یا یال های مختلفی به هم وصل شدند. هر یال ممکنه دارای جهت و وزن باشه.

در سال 2016 دوتا از دانشجوهای دکترای دانشگاه استنفورد روشی برای تبدیل داده های گرافی به feature vector ارائه دادند. در واقع Node2vec بک روش embedding برای تبدیل داده های گرافی به feature vector های قابل درک بوسیله شبکه یادیری عمیق هست.

ایده اصلی Node2vec

ایده اصلی Node2vec از اونجا میاد که هر جمله در واقع یک گراف ساده جهت داره که هر کلمه در واقع یک Node گراف هست و توالی کلمات در جمله یال ها را می سازن. به عنوان مثال جمله "حال من خوب هست" را میشه به صورت گراف ساده جهت دار زیر نشون داد.

هر جمله در واقع یک گرافه جهت داره
هر جمله در واقع یک گرافه جهت داره


در نتیجه اگر ما بتونیم هر گراف را به جملات تبدیل کنیم، می تونیم از روش های word embedding برای تبدیل جملات حاصل از گراف ها به بردارهای ویژگی استفاده کنیم.

ایده اصلی Node2vec
ایده اصلی Node2vec

همانطور که در شکل بالا مشخصه، Node2vec یک گراف را به عنوان ورودی دریافت و پیمایش می کنه و روابط بین node ها را استخراج می کنه. این روابط در واقع مجموعه ای از جمله ها را می سازند.

در مرحله بعد از روش word2vec بر مبنای skip-gram (همونطور که از قبل می دونیم word2vec یک روش جاسازی واژه هست که بر پایه Continuous bag of word و یا skip-gram کار می کنه)برای تبدیل این جملات به feature vector ها استفاده می کنه و این feature vector ها رو میشه به عنوان ورودی به شبکه عصبی داد.



منبع

https://towardsdatascience.com/node2vec-embeddings-for-graph-data-32a866340fef





node2vecgraph embeddingembedding methodword2vecdeep learning
سلام. من باران هستم دانشجوی دکترای رشته مهندسی نرم افزار و بسیار علاقمند به مباحث علم داده، یادگیری ماشین، یادگیری عمیق و پردازش زبان طبیعی
شاید از این پست‌ها خوشتان بیاید