شبکه های عصبی نمودار در TensorFlow – وبلاگ تحقیقاتی گوگل

اشیاء و روابط آنها در دنیای اطراف ما همه جا حاضر هستند و روابط می توانند برای درک یک شی به همان اندازه مهم باشند که ویژگی های آن به صورت مجزا مشاهده می شود – برای مثال شبکه های حمل و نقل، شبکه های تولید، نمودارهای دانش، یا شبکه های اجتماعی. ریاضیات گسسته و علوم کامپیوتر سابقه طولانی در رسمی کردن شبکه هایی مانند نمودارها، شامل گره ها متصل شده توسط لبه ها به روش های نامنظم مختلف با این حال، اکثر الگوریتم‌های یادگیری ماشین (ML) فقط روابط منظم و یکنواخت بین اشیاء ورودی، مانند شبکه‌ای از پیکسل‌ها، دنباله‌ای از کلمات یا اصلاً هیچ رابطه‌ای را مجاز نمی‌دانند.

شبکه های عصبی گراف یا به اختصار GNN به عنوان یک تکنیک قدرتمند برای استفاده از اتصال گراف (مانند الگوریتم های قدیمی DeepWalk و Node2Vec) و ویژگی های ورودی در گره ها و لبه های مختلف ظاهر شده اند. GNN ها می توانند برای نمودارها به طور کلی پیش بینی کنند (آیا این مولکول به روش خاصی واکنش نشان می دهد؟)، برای گره های جداگانه (موضوع این سند، با توجه به نقل قول های آن چیست؟) یا برای لبه های بالقوه (آیا این محصول احتمالاً با هم خریداری می شود؟ با آن محصول؟). جدای از پیش‌بینی در مورد نمودارها، GNN ها ابزار قدرتمندی هستند که برای پر کردن شکاف به موارد معمول استفاده از شبکه‌های عصبی استفاده می‌شوند. آنها یک نمودار را رمزگذاری می کنند گسسته، رابطه ای اطلاعات در الف مداوم به طوری که بتوان آن را به طور طبیعی در یک سیستم یادگیری عمیق دیگر گنجاند.

ما هیجان زده هستیم که انتشار TensorFlow GNN 1.0 (TF-GNN) را اعلام کنیم، یک کتابخانه آزمایش شده تولید برای ساخت GNN در مقیاس های بزرگ. هم از مدل‌سازی و هم آموزش در TensorFlow و همچنین استخراج نمودارهای ورودی از فروشگاه‌های بزرگ داده پشتیبانی می‌کند. TF-GNN از ابتدا برای نمودارهای ناهمگن ساخته شده است، جایی که انواع اشیاء و روابط با مجموعه های مجزا از گره ها و یال ها نشان داده می شوند. اشیاء دنیای واقعی و روابط آنها در انواع مجزا رخ می دهند و تمرکز ناهمگون TF-GNN نشان دادن آنها را طبیعی می کند.

در داخل TensorFlow، چنین نمودارهایی با اشیاء از نوع نمایش داده می شوند tfgnn.GraphTensor. این یک نوع تانسور ترکیبی (مجموعه ای از تانسورها در یک کلاس پایتون) است که به عنوان شهروند درجه یک در tf.data.Dataset، tf.functionو غیره. هم ساختار گراف و هم ویژگی های آن را که به گره ها، لبه ها و گراف به طور کلی متصل شده اند، ذخیره می کند. تبدیل های قابل آموزش GraphTensors را می توان به عنوان اشیاء لایه در API سطح بالا Keras یا مستقیماً با استفاده از tfgnn.GraphTensor اولیه.

GNN ها: پیش بینی یک شی در زمینه

برای مثال، اجازه دهید به یک کاربرد معمولی TF-GNN نگاه کنیم: پیش‌بینی یک ویژگی از نوع خاصی از گره در یک نمودار که توسط جداول ارجاع متقابل یک پایگاه داده عظیم تعریف شده است. به عنوان مثال، یک پایگاه استنادی از مقالات arXiv علوم کامپیوتر (CS) با ارجاعات یک به چند و روابط استنادی چند به یک که می‌خواهیم حوزه موضوعی هر مقاله را پیش‌بینی کنیم.

مانند بسیاری از شبکه‌های عصبی، یک GNN بر روی مجموعه داده‌ای از نمونه‌های برچسب‌گذاری‌شده (~ میلیون‌ها) آموزش داده می‌شود، اما هر مرحله آموزشی فقط شامل یک دسته بسیار کوچک‌تر از نمونه‌های آموزشی (مثلاً صدها) است. به مقیاس میلیون‌ها، GNN بر روی جریانی از زیرگراف‌های نسبتاً کوچک از نمودار زیرین آموزش می‌بیند. هر زیرگراف حاوی مقدار کافی از داده های اصلی برای محاسبه نتیجه GNN برای گره برچسب دار در مرکز آن و آموزش مدل است. این فرآیند – که معمولاً به عنوان نمونه گیری زیرگراف شناخته می شود – برای آموزش GNN بسیار مهم است. اکثر ابزارهای موجود نمونه برداری را به صورت دسته ای انجام می دهند و زیرگراف های ایستا را برای آموزش تولید می کنند. TF-GNN ابزارهایی را برای بهبود این امر با نمونه‌برداری به صورت پویا و تعاملی فراهم می‌کند.

در تصویر، فرآیند نمونه‌برداری زیرگراف که در آن زیرگراف‌های کوچک و قابل حمل از یک نمودار بزرگ‌تر برای ایجاد نمونه‌های ورودی برای آموزش GNN نمونه‌برداری می‌شوند.

TF-GNN 1.0 یک API منعطف Python را برای پیکربندی نمونه‌گیری پویا یا دسته‌ای زیرگراف در تمام مقیاس‌های مربوطه ارائه می‌کند: به صورت تعاملی در یک نوت بوک Colab (مانند این یکی)، برای نمونه‌برداری کارآمد از یک مجموعه داده کوچک ذخیره شده در حافظه اصلی یک میزبان آموزشی، یا توسط Apache Beam برای مجموعه داده های عظیم ذخیره شده در یک سیستم فایل شبکه (حداکثر صدها میلیون گره و میلیاردها لبه) توزیع شده است. برای جزئیات، لطفاً به راهنمای کاربر ما برای نمونه برداری در حافظه و مبتنی بر پرتو، به ترتیب مراجعه کنید.

در همان زیرگراف های نمونه برداری شده، وظیفه GNN محاسبه یک حالت پنهان (یا نهفته) در گره ریشه است. حالت پنهان اطلاعات مربوط به همسایگی گره ریشه را تجمیع و رمزگذاری می کند. یکی از رویکردهای کلاسیک شبکه های عصبی پیام رسان است. در هر دور از ارسال پیام، گره ها پیام هایی را از همسایگان خود در امتداد لبه های ورودی دریافت می کنند و وضعیت پنهان خود را از آنها به روز می کنند. بعد از n دور، حالت پنهان گره ریشه، اطلاعات جمعی را از تمام گره های درون منعکس می کند n لبه ها (تصویر زیر برای n = 2). پیام ها و حالت های پنهان جدید توسط لایه های پنهان شبکه عصبی محاسبه می شوند. در یک گراف ناهمگن، اغلب منطقی است که از لایه های پنهان آموزش دیده جداگانه برای انواع مختلف گره ها و لبه ها استفاده شود.

در تصویر، یک شبکه عصبی پیام رسان ساده که در هر مرحله، حالت گره از گره های بیرونی به درونی منتشر می شود، جایی که برای محاسبه حالت های گره جدید ترکیب می شود. پس از رسیدن به گره ریشه، می توان یک پیش بینی نهایی انجام داد.

راه‌اندازی آموزش با قرار دادن یک لایه خروجی در بالای حالت پنهان GNN برای گره‌های برچسب‌گذاری شده تکمیل می‌شود و با محاسبه ضرر – زیان (برای اندازه‌گیری خطای پیش‌بینی)، و به‌روزرسانی وزن‌های مدل با انتشار پس‌انداز، طبق معمول در هر آموزش شبکه عصبی.

فراتر از آموزش تحت نظارت (یعنی به حداقل رساندن ضرر تعریف شده توسط برچسب ها)، GNN ها را می توان به روشی بدون نظارت (یعنی بدون برچسب) نیز آموزش داد. این به ما امکان می دهد a را محاسبه کنیم مداوم نمایندگی (یا تعبیه کردن) از گسسته ساختار گراف گره ها و ویژگی های آنها این نمایش‌ها معمولاً در سایر سیستم‌های ML مورد استفاده قرار می‌گیرند. به این ترتیب، اطلاعات گسسته و رابطه ای رمزگذاری شده توسط یک گراف را می توان در موارد معمول استفاده از شبکه عصبی گنجاند. TF-GNN از مشخصات دقیق اهداف بدون نظارت برای نمودارهای ناهمگن پشتیبانی می کند.

ساخت معماری های GNN

کتابخانه TF-GNN از ساخت و آموزش GNN ها در سطوح مختلف انتزاع پشتیبانی می کند.

در بالاترین سطح، کاربران می‌توانند هر یک از مدل‌های از پیش تعریف‌شده همراه با کتابخانه را که در لایه‌های Keras بیان شده‌اند، استفاده کنند. علاوه بر مجموعه کوچکی از مدل‌ها از متون تحقیقاتی، TF-GNN با یک الگوی مدل بسیار قابل تنظیم ارائه می‌شود که مجموعه‌ای از انتخاب‌های مدل‌سازی را ارائه می‌دهد که ما پیدا کرده‌ایم خطوط پایه قوی برای بسیاری از مشکلات داخلی ما ارائه می‌دهد. الگوها لایه های GNN را پیاده سازی می کنند. کاربران فقط باید لایه های Keras را مقداردهی اولیه کنند.

در پایین‌ترین سطح، کاربران می‌توانند یک مدل GNN را از ابتدا از نظر اصول اولیه برای انتقال داده‌ها در اطراف نمودار بنویسند، مانند پخش داده‌ها از یک گره به تمام لبه‌های خروجی آن یا ادغام داده‌ها در یک گره از تمام لبه‌های ورودی آن (مثلاً محاسبه مجموع پیام های دریافتی). مدل داده‌های نمودار TF-GNN با گره‌ها، لبه‌ها و کل گراف‌های ورودی به طور یکسان در مورد ویژگی‌ها یا حالت‌های پنهان رفتار می‌کند، و بیان نه تنها مدل‌های گره‌محور مانند MPNN که در بالا توضیح داده شد، بلکه اشکال کلی‌تر GraphNets را نیز ساده می‌کند. این را می توان، اما نیازی نیست، با Keras به عنوان یک چارچوب مدل سازی در بالای هسته TensorFlow انجام داد. برای جزئیات بیشتر و سطوح متوسط ​​مدل‌سازی، راهنمای کاربر و مجموعه مدل TF-GNN را ببینید.

آموزش ارکستراسیون

در حالی که کاربران پیشرفته برای انجام آموزش مدل های سفارشی آزاد هستند، TF-GNN Runner همچنین روشی مختصر برای هماهنگ کردن آموزش مدل های Keras در موارد رایج ارائه می دهد. یک فراخوان ساده ممکن است به شکل زیر باشد:

Runner راه حل های آماده برای استفاده برای دردهای ML مانند تمرین توزیع شده و tfgnn.GraphTensor پد برای اشکال ثابت در Cloud TPU. فراتر از آموزش روی یک کار واحد (همانطور که در بالا نشان داده شده است)، از آموزش مشترک روی چندین (دو یا چند) کار به صورت هماهنگ پشتیبانی می کند. به عنوان مثال، وظایف بدون نظارت را می توان با وظایف تحت نظارت ترکیب کرد تا یک نمایش پیوسته نهایی (یا جاسازی) با سوگیری های استقرایی خاص برنامه ارائه شود. تماس گیرندگان فقط باید آرگومان وظیفه را با یک نقشه برداری از وظایف جایگزین کنند:

علاوه بر این، TF-GNN Runner همچنین شامل پیاده‌سازی گرادیان‌های یکپارچه برای استفاده در اسناد مدل است. خروجی گرادیان های یکپارچه یک GraphTensor با اتصال مشابه GraphTensor مشاهده شده است، اما ویژگی های آن با مقادیر گرادیان جایگزین شده است که در آن مقادیر بزرگتر بیشتر از مقادیر کوچکتر در پیش بینی GNN نقش دارند. کاربران می توانند مقادیر گرادیان را بررسی کنند تا ببینند GNN از کدام ویژگی بیشتر استفاده می کند.

نتیجه

به طور خلاصه، ما امیدواریم که TF-GNN برای پیشبرد کاربرد GNN در TensorFlow در مقیاس مفید باشد و به نوآوری بیشتر در این زمینه دامن بزند. اگر کنجکاو هستید که بیشتر بدانید، لطفاً نسخه ی نمایشی Colab ما را با معیار محبوب OGBN-MAG (در مرورگر خود، بدون نیاز به نصب) امتحان کنید، بقیه راهنماهای کاربر و Colabs ما را مرور کنید، یا نگاهی به مقاله ما بیندازید.

سپاسگزاریها

نسخه 1.0 TF-GNN با همکاری Google Research: سامی ابوالحیجا، نسلیهان بولوت، بهار فاطمی، یوهانس گاستیگر، پدرو گونت، جاناتان هالکرو، لیانگزه جیانگ، سیلویو لاتتانزی، براندون مایر، وهاب میروکنی، بریان توسعه یافته است. Perozzi، Anton Tsitsulin، Dustin Zelle، Google Core ML: Arno Eigenwillig، Oleksandr Ferludin، Parth Kothari، Mihir Paradkar، Jan Pfeifer، Rachael Tamakloe و Google DeepMind: آلوارو سانچز-گونزالس و لیزا وانگ.

سئو PBN | خبر های جدید سئو و هک و سرور