1. مقدمه:
این ادامه مجموعه وبلاگهای گراف است و سیزدهمین وبلاگ از این مجموعه است. در این وبلاگ، یک جنبه بسیار جالب از یادگیری ماشین گراف را مورد بحث قرار خواهیم داد! این وبلاگ به تئوری شبکههای عصبی گراف، فراتر از بحثهایی که در برخی از وبلاگهای قبلی در حال انجام است، میپردازد:
· مقدمهای بر شبکههای عصبی گراف
· گرافهای ناهمگن و گراف رابطهای شبکههای عصبی کانولوشن (RGCN)
در بحثهایی که تاکنون انجام شده، نحوه طراحی شبکههای عصبی گراف، نحوه تنظیم خط لوله آموزش – استنتاج را دیدهایم و در مورد موارد زیر صحبت کردهایم:
الف) تنظیم گراف ورودی.
ب) تعریف معماری شبکه عصبی گراف.
ج) استفاده از معماری شبکه عصبی گراف برای ایجاد تعبیه گرهها.
د) همچنین در مورد رسیدن به پیشبینی از تعبه گرهها صحبت کردیم.
ه) ما به وضوح راسهای مختلف پیشبینی را بر اساس دستهبندی گره، پیشبینی پیوند و دستهبندی گراف مورد بحث قرار دادیم.
ی) ما در مورد چگونگی پیشبینی گرهها صحبت کردیم و سپس پیشبینیها را با برچسبهای حقیقت مقایسه کردیم تا از دست دادن را بهینه کنیم و بتوانیم تا انتهای ساختار شبکه عصبی گراف را پسانداز کنیم.
و) و سپس با معیارهای ارزیابی مختلف، میتوان عملکرد مدل را ارزیابی کرد.
نکات بالا در شکل زیر نشان داده شده است.
شکل 1: یک خط لوله آموزشی GNN معمولی
چیزی که بیپاسخ میماند این است که چگونه وظایف را تنظیم میکنیم - چگونه به طور موثر به آموزش و اعتبارسنجی و مجموعه تست تقسیم میشویم.
اکنون به این سؤال میپردازیم که مجموعه دادههای گراف را به مجموعههای آموزشی/اعتباری/آزمون تقسیم میکنیم.
شکل 2: چگونه مجموعه داده را به مجموعه آموزشی / اعتبار سنجی / تست تقسیم کنیم؟
با در نظر گرفتن این هدف، این مقاله به شرح زیر تنظیم شده است:
· بخش 2 در مورد تقسیم مجموعه دادهها به مجموعههای آموزشی / اعتبار سنجی / تست صحبت میکند و در مورد تقسیمهای ثابت و تصادفی توضیح میدهد.
· بخش 3 توضیح میدهد که چرا تقسیم کردن به مجموعههای آموزشی / اعتبار سنجی / آزمایش در گرافها در مقایسه با مسئلهای که فقط شامل تصاویر یا اسناد است متفاوت است.
· بخش 4 در مورد تنظیمات انتقالی و استقرایی برای تقسیم مجموعه دادهها در گرافها توضیح میدهد.
· بخش 5 نمونههایی از تقسیم مجموعه دادهها را برای مسائلی شامل: دستهبندی گره، دستهبندی گراف و پیشبینی لبه پوشش میدهد.
2. تقسیم مجموعه دادههای گراف به مجموعه آموزشی / اعتبار سنجی و تست
ما دو گزینه برای تقسیم مجموعه داده داریم:
گزینه 1: تقسیم ثابت
ما میتوانیم مجموعه داده را به یکباره تقسیم کنیم که در آن میتوانیم مجموعه داده خود را برداریم و آن را به سه قطعه مستقل مجاور تقسیم کنیم:
الف) ما یک "مجموعه آموزشی" خواهیم داشت که از آن برای بهینهسازی پارامترهای مدل GNN استفاده میکنیم.
ب) ما "مجموعه اعتبارسنجی" را داریم که از آن برای تنظیم فراپارامترهای مدل و گزینههای ثابت/تصمیم مختلف از نظر معماری مدل استفاده میکنیم.
ج) سپس، هنگامی که پارامترهای مدل نهایی و فراپارامترها را داشتیم، مدل را به "مجموعه آزمایشی" مستقلی که تمام مدت نگه داشته شده بود اعمال میکنیم تا عملکرد نهایی را ارزیابی کنیم.
این یک روش منصفانه برای ارزیابی مدل است زیرا ما از آموزش و مجموعه اعتبارسنجی برای ساخت و تنظیم دقیق مدل استفاده کردیم و از مجموعه تست دست نخورده برای ارزیابی عملکرد مدل استفاده کردیم.
گزینه 2: تقسیم تصادفی
در تقسیم تصادفی، دادهها را بهطور تصادفی به مجموعههای آموزشی، اعتبارسنجی و آزمون تقسیم میکنیم و سپس به جای یک تقسیم واحد، از پارامترهای مربوط به میانگین عملکرد بر روی دانههای تصادفی مختلف استفاده میکنیم. یعنی - ما نمونههای مختلفی از تقسیم آموزشی- اعتبارسنجی- آزمون را امتحان میکنیم و عملکرد متوسط را گزارش میکنیم تا نتیجه قویتری داشته باشیم.
3. چرا تقسیم گرافها خاص است؟
چیزی که در گرافها منحصر به فرد و جالب است این است که ما نمیتوانیم تضمین کنیم که مجموعه آزمایشی واقعاً باقی خواهد ماند - یعنی نمیتوانیم تضمین کنیم که اطلاعاتی از مجموعه آموزش و اعتبارسنجی به مجموعه آزمایشی نشت نکند. بیایید این را با جزئیات درک کنیم:
فرض کنید یک مجموعه داده تصویر یا یک مجموعه داده سند داریم که در شکل زیر نشان داده شده است. سپس، در چنین مجموعههای داده، نقاط داده - که تصاویر یا اسناد هستند، مستقل از یکدیگر هستند.
شکل 3: نقاط داده مستقل از یکدیگر در مجموعه داده تصویر یا سند
از آنجایی که نقاط داده مستقل از یکدیگر هستند، تقسیم آن به مجموعههای آموزشی، آزمایشی یا اعتبارسنجی آسان است. هیچ نشت اطلاعات از آموزش به مجموعه اعتبارسنجی یا مجموعه تست وجود ندارد.
با این حال، تقسیم در گرافها متفاوت است مسئله گرافها این است که گرهها به یکدیگر متصل هستند، همانطور که در زیر نشان داده شده است:
شکل 4: نقاط داده در گرافها – گرهها – متصل به یکدیگر
این گرهها مستقل از یکدیگر نیستند - آنها به یکدیگر متصل هستند - هر گره نشان دهنده یک نقطه داده است. به عنوان مثال، اگر گره 5 را بگیریم، برای پیشبینی گره 5، GNN نیز باید از گرههای 1 و 2 اطلاعات بگیرد.
این بدان معناست که گرههای 1 و 2 بر پیشبینیهای گره 5 تأثیر میگذارند. این بدان معناست که اگر گرههای 1 و 2 مجموعه داده آموزشی و گره 5 مجموعه داده آزمایشی باشند، به وضوح مقداری نشت اطلاعات وجود خواهد داشت. به همین دلیل است که تقسیم مجموعه داده ها در گرافها جالب است، بگذارید ببینیم گزینههای مختلف چیست.
4. گزینههای موجود در گرافها برای تقسیم مجموعه داده:
اجازه دهید اکنون گزینههایی را در گرافها برای تقسیم مجموعه دادهها مشاهده کنیم. در گرافها میتوانیم کارهای زیر را انجام دهیم:
راهحل 1: تنظیم انتقالی
اولین راهحلی که میتوانیم انجام دهیم این است: «تنظیمات انتقالی[1]» که در آن گراف ورودی را میتوان در تمام تقسیمات مجموعه داده مشاهده کرد. یعنی - ما در مجموعههای آموزشی، اعتبارسنجی و تست با همان ساختار گراف کار میکنیم. ما فقط برچسبهای گره را تقسیم میکنیم - این بدان معناست که برخی از برچسبهای گره را در مجموعه آموزشی، برخی در مجموعه اعتبارسنجی و برخی در مجموعه آزمایشی نگه میداریم - همانطور که در شکل زیر نشان داده شده است، همیشه ساختار گراف یکسانی را حفظ میکنیم:
شکل 5: تنظیم انتقالی - فقط برچسبهای گره را تقسیم کنید - ساختار کل گراف برای آموزش حفظ میشود
این به این معنی است که در طول آموزش، تعبیه را با استفاده از کل ساختار گراف محاسبه میکنیم، اما با استفاده از برچسبهای گره 1 و 2 آموزش میدهیم.
در زمان اعتبارسنجی، تعبیهها را با استفاده از کل گراف محاسبه میکنیم، اما ابرپارامترها را با استفاده از برچسبهای گره 3 و 4 بهخوبی تنظیم میکنیم - برای مثال نشان داده شده در شکل 5.
راهحل 2:
روش دیگر - تنظیم القایی[2] - نامیده میشود. همانطور که در شکل 6 زیر نشان داده شده است، در اینجا لبههای بین تقسیمها را به گرافهای متعدد یا چندین مؤلفه مستقل تقسیم میکنیم:
شکل 6: سه گراف مستقل (جدا) برای آموزش، اعتبارسنجی و مجموعه تست
در اینجا ما سه گراف خواهیم داشت که مستقل هستند - سه گراف متفاوت - یکی را به عنوان گراف آموزشی و بقیه را به عنوان Validation و Test Graph مینامیم.
ما میتوانیم از شکل 6 مشاهده کنیم که اگر پیشبینی گره 5 را انجام دهیم، تحت تأثیر اطلاعات گرههای 1 و گره 2 قرار نمیگیرد. این به این معنی است که:
· در طول زمان آموزش، ما تعبیهها را با استفاده از گرههای 1 و 2 محاسبه میکنیم و - این برای آموزش پارامترهای مدل است.
· در طول زمان اعتبارسنجی، جاسازیها را با استفاده از گرههای 3 و 4 محاسبه میکنیم و روی برچسبهای گرههای 3 و 4 ارزیابی میکنیم (بررسی کنید که آیا جمله درست است).
اشکال در تنظیمات القایی این است که ما بسیاری از اطلاعات گراف (لبهها) را در طول فرمولبندی آموزش، اعتبارسنجی و مجموعه تست دور انداختهایم و اگر گرافها کوچک هستند - ترجیح داده نمیشود.
بنابراین، مبادله این است که یا بین آموزش، اعتبارسنجی و مجموعه تستها نشت اطلاعات داشته باشیم و برچسبها را مانند تنظیمات انتقالی مستقل نگه داریم یا اطلاعات را دور بریزیم و گراف را مانند تنظیمات القایی به قطعات مستقل برش دهیم.
خلاصه راهحل 1 و راهحل 2:
تنظیم انتقالی:
1. در تنظیم انتقالی، آموزش، اعتبارسنجی و مجموعه تست را روی همان گراف داریم.
2. کل گراف بخشی از آموزش، اعتبارسنجی و مجموعه تست است.
3. ما فقط برچسبهای گره را به مجموعه آموزش، اعتبارسنجی و تست تقسیم میکنیم.
این تنظیم برای پیشبینی گره و همچنین وظایف پیشبینی لبه قابل اعمال است.
تنظیم استقرایی:
1. برای تنظیم استقرایی، آموزش، اعتبارسنجی و مجموعه تست همه در گرافهای مختلف هستند.
2. این گرافها مستقل از یکدیگر هستند.
3. تعبیههای گره را محاسبه کرده و با استفاده از بخش گراف مربوطه از مجموعه آموزشی آموزش میدهیم و روی گراف و برچسبهای گره مربوطه، بخشی از مجموعه اعتبارسنجی را تأیید میکنیم و روی گرافهای دیده نشده بخشی از مجموعه آزمایشی آزمایش میکنیم.
5. مثالها - تنظیمات انتقالی و القایی
اکنون، اجازه دهید نمونههایی از دستهبندی گره و پیشبینی پیوند با رویکرد Transductive و Inductive را ببینیم.
دستهبندی گره:
از نظر دستهبندی گرههای Transductive، همه تقسیمبندیها کل ساختار گراف را حفظ میکنند، اما برچسبهای گرههای مربوطه به آموزش، اعتبارسنجی و مجموعه آزمایشی مانند زیر تقسیم میشوند:
شکل 7: تقسیم برچسبهای گره به مجموعه آموزشی/اعتباری/آزمایشی در حالی که کل گراف در همه مجموعهها حفظ میشود – مسئله دستهبندی گره
در تنظیمات استقرایی، ساختار گراف را به گرافهای متعدد تقسیم میکنیم که برخی از گرافها را در مجموعه آموزشی، برخی در اعتبارسنجی و برخی دیگر در مجموعه آزمایشی را شامل میشود.
گرافهای چندگانه باید با انداختن/بریدن لبهها از ساختار گراف ایجاد شوند و گرافهای متعدد به مجموعههای آموزشی/اعتباری/آزمون تقسیم شوند، همانطور که در شکل 8 نشان داده شده است.
شکل 8: تنظیم استقرایی - تقسیم به آموزش/اعتبار/آزمون شامل 3 گراف مستقل برای مجموعههای مربوطه است.
دستهبندی گراف:
اکنون که در مورد دستهبندی گره صحبت کردیم، اجازه دهید به دستهبندی گراف برویم. در دستهبندی گراف، تنظیم القایی به خوبی تعریف شده است، زیرا ما گرافهای مستقلی داریم و میتوانیم به سادگی آنها را در آموزش، اعتبارسنجی و مجموعه تست قرار دهیم. فرض کنید مجموعه دادهای از 5 گراف داریم، سپس، هر تقسیم شامل گراف(های) مستقل خواهد بود. همانطور که در شکل زیر نشان داده شده است. هیچ شانسی برای نشت اطلاعات وجود ندارد زیرا گرافها قبلاً مستقل هستند.
شکل 9: دستهبندی گراف - مسئله سادهتر است زیرا ما قبلاً گرافهای مستقلی داریم و آنها را به طور مناسب در مجموعه آموزشی / اعتبار سنجی / تست اختصاص میدهیم.
دستهبندی لبه:
مشکلترین راهاندازی آموزش، اعتبارسنجی و مجموعه تست در گرافها، مسئله پیشبینی لینک است. در پیشبینی لینک، هدف پیشبینی لبههای از دست رفته است و راهاندازی آموزش، اعتبارسنجی و آزمایشها کمی فکری است. به این دلیل است که پیشبینی پیوند یک کار خود نظارت یا نیمه نظارت است و ما نیاز به ایجاد تقسیم داده داریم.
من در مورد راهاندازی پیشبینی پیوند در گرافهای ناهمگن و گراف رابطهای شبکههای عصبی کانولوشن (RGCN) بحث کردهام. در پیشبینی لینک، باید برخی از یالها را از GNN پنهان کنیم و به GNN اجازه دهیم که آیا لبهها وجود دارند یا خیر.
برای پیشبینی پیوند، لبهها را دو بار تقسیم میکنیم
· مرحله 1: 2 نوع یال را در گراف اصلی اختصاص دهید
۱. لبههای ارسال پیام: برای ارسال پیام GNN استفاده میشود
۲. لبههای نظارت: برای اهداف محاسباتی استفاده میشود
· بعد از مرحله 1:
۱. فقط لبههای پیام در گراف باقی میماند
۲. لبههای نظارت به عنوان نظارت برای پیشبینی لبههای ساخته شده توسط مدل استفاده میشود، به GNN تغذیه نمیشود!
· مرحله 2: لبهها را به قطار / اعتبار / آزمایش تقسیم کنید
تنظیم انتقالی:
رویکرد انتقالی در زیر نشان داده شده است:
شکل 10: تنظیم انتقالی – مسئله پیشبینی پیوند
پیشبینی پیوند استقرایی:
در پیشبینی پیوند استقرایی، هر تقسیم استقرایی شامل یک گراف مستقل است. در آموزش یا اعتبارسنجی یا مجموعه تست دو نوع لبه داریم:
· پیام عبور از لبهها
· لبههای نظارت
لبههای نظارتی به GNN وارد نمیشوند.
این در شکل زیر نشان داده شده است:
شکل 11: تنظیمات پیوند استقرایی برای وظایف پیشبینی پیوند
[1] Transductive Setting
[2] Inductive Setting