کشف تخلف در تراکنشهای مالی با استفاده از گرافها یکی از مهمترین چالشهای بشر است. در این پروژه با استفاده از یادگیری عمیق و پیادهسازی سه مقاله برجسته و مقایسه نتایج هر یک روی دیتاست تراکنشهای بیتکوین، در پی کشف بهترین و کاراترین مدلها برای وظیفه کشف ناهنجاری در گراف پیش میرویم. در این پروژه یک فریموورک جامع تحت یک پکیج پایتون برای کشف تخلف با شبکههای عصبی پیادهسازی شده است به صورت عمومی در این مخزن گیتهاب در دسترس است.
در عصری که رمزارزها به عنوان یکی از پرطرفدارترین و مورد توجهترین ابزارهای مالی در جهان شناخته میشوند، تشخیص تخلفات و فعالیتهای نامناسب در معاملات رمزارزی از اهمیت بالایی برخوردار است. با افزایش تعداد معاملهگران و حجم معاملات، نیاز به روشهای مبتنی بر هوش مصنوعی و شبکههای عصبی برای تشخیص و پیشگیری از تخلفات اجتناب ناپذیر میشود.
هوش مصنوعی به عنوان یک فناوری پیشرفته، قدرت بالایی در تحلیل دادهها و تشخیص الگوها دارد. با استفاده از الگوریتمهای پیچیده، هوش مصنوعی قادر به تشخیص تغییرات نامعمول در معاملات، انتقالات مشکوک و فعالیتهای تقلبی میباشد. این فناوری میتواند به صورت خودکار معاملات مشکوک را تشخیص داده و اعلام کند.
علاوه بر آن، شبکههای عصبی نیز به عنوان یک روش پیشرفته در تشخیص تخلفات در معاملات رمزارز استفاده میشوند. این شبکهها با تجمیع دادههای معاملاتی و آموزش به وسیله الگوریتمهای یادگیری ماشینی، قادر به شناسایی الگوهای تخلف و رفتارهای غیرمعمول میباشند. با اعمال الگوریتمهای تشخیص تخلف در شبکههای عصبی، میتوان به طور دقیق تخلفات را تشخیص داده و از معاملهگران محافظت کرد.
۲.۱. تشخیص تخلف و ناهنجاری
تشخیص تخلف و ناهنجاری در شبکههای پیچیده و گرافها از مسائل حیاتی در زمینه امنیت و حفاظت دادهها است. با پیشرفت فناوری و گسترش استفاده از شبکههای پیچیده، تهدیدهای امنیتی نیز روز به روز پیچیدهتر و متنوعتر میشوند. در این شبکهها و گرافها، تخلفات و ناهنجاریها میتوانند به صورت گسترده و مخربی رخ دهند، مانند حملات سایبری، سرقت اطلاعات، تلاشهای نفوذ و تخریب سیستمها. برای تشخیص این تخلفات، مدلهای مختلفی مانند شبکههای عصبی عمیق، الگوریتمهای یادگیری ماشین و الگوریتمهای گراف مورد استفاده قرار میگیرند. این مدلها با استفاده از الگوریتمها و روشهای خاص، الگوها و رفتارهای غیرعادی در شبکهها و گرافها را تشخیص میدهند و به این ترتیب، امکان شناسایی و پیشگیری از تخلفات امنیتی و ناهنجاریها را فراهم میسازند. این روشها با تحلیل حجم عظیم دادهها و شناسایی الگوهای ناهنجار، به دستهبندی و تشخیص تخلفات موثر میپردازند و در نهایت، امنیت شبکهها و حفاظت از دادهها را بهبود میبخشند.
۲.۲. شبکه معاملات رمزارز
تحلیل شبکههای معاملات رمزارز میتواند به کمک تکنیکهای گرافی مانند تحلیل گراف شود. در این روش، گرهها و روابط بین آنها به صورت یک گراف مدل میشوند. گرهها میتوانند نمایانگر کیفهای رمزارزی، آدرسهای رمزارزی، صرافیها، یا حتی کاربران شبکه باشند. روابط بین گرهها نیز میتواند نمایانگر ارسال و دریافت تراکنشها، معاملات بین کیفها، یا ارتباطات بین صرافیها باشد. با استفاده از تحلیل گراف، میتوان الگوها، ساختارها و رفتارهای شبکه را بررسی کرد. این تحلیل میتواند نشان دهد که چه کسانی در شبکه به عنوان مراکز تراکنشها عمل میکنند، ارتباطات اصلی بین افراد چگونه شکل میگیرد و چگونه تراکنشها در سراسر شبکه گسترش مییابند. این اطلاعات میتواند به محققان و تحلیلگران کمک کند تا الگوها و روندهای بازار را درک کنند، کلاهبرداریها را شناسایی کنند و رفتار کاربران را بررسی کنند. با توجه به نوآوری و پیچیدگی شبکههای معاملات رمزارز، استفاده از تحلیل گراف میتواند به ما کمک کند تا بهتر درک کنیم که چگونه این شبکهها عمل میکنند و چه اطلاعاتی را میتوان از آنها استخراج کرد. این آشنایی با ساختار و الگوهای شبکهها میتواند به بهبود امنیت، کیفیت و کارایی شبکههای معاملات رمزارز کمک کند.
۲.۳. شبکههای عصبی گراف (Graph Neural Networks)
شبکههای عصبی گراف مدلهایی از شبکههای عصبی عمیق هستند که برای مدل کردن و تحلیل دادههای گرافی استفاده میشوند. در این شبکهها، دادهها به صورت گرافی سازماندهی میشوند، به طوری که گرهها نمایانگر عناصر و یالها روابط بین آنها هستند. شبکههای عصبی گراف به صورت ترکیبی از لایههای عصبی اعم از پیچشی (Convolutional)، بازگشتی (Recurrent)، مبدل (Transformer) و ... طراحی میشوند، که این امکان را به آنها میدهد تا الگوهای پیچیده و وابستگیهای غیرخطی را در دادههای گرافی مدل کنند.
شبکههای عصبی گراف در بسیاری از زمینهها کاربرد دارند. به عنوان مثال، در حوزه شبکههای اجتماعی، این شبکهها میتوانند برای پیشبینی رفتار کاربران، شناسایی جوامع و تشخیص کاربران مخرب یا اسپم استفاده شوند یا مثلا در علوم زیستی، میتوانند در تحلیل شبکههای پروتئینی، شناسایی عوامل بیماری و تحلیل تعاملات مولکولی مورد استفاده قرار گیرند. همچنین، در حوزه ترافیک و حمل و نقل، شبکههای عصبی گراف میتوانند برای پیشبینی ترافیک، بهینهسازی مسیرها و تحلیل رفتار رانندگان استفاده شوند. در علوم مهندسی و کامپیوتر، این شبکهها میتوانند در تشخیص نقص و تعمیر پیشگیرانه سیستمها، تحلیل شبکههای مخابراتی و پردازش زبان طبیعی بکار روند.
با توجه به قابلیتهای قوی شبکههای عصبی گراف و توانایی آنها در مدلسازی دادههای گرافی، این رویکرد به عنوان یک ابزار قدرتمند در زمینههای مختلف تحقیقاتی و صنعتی مورد استفاده قرار میگیرد.
۲.۴. چالشهای پردازش گراف با شبکههای عصبی
پردازش گرافها به دلیل ساختار پیچیده و انعطافپذیری که دارند، چالشهای زیادی را ایجاد میکند. برخی از این چالشها عبارتند از:
۲.۵. یادگیری بازنمایی (Representation Learning) در گراف
یادگیری بازنمایی یکی از مهمترین دستاوردهای یادگیری عمیق است. دادههای معمولی که انسانها با آن کار میکنند برای یک ماشین به سختی قابل درک هستند. یادگیری بازنمایی یک روش خودکار برای استخراج دانش انتزاعی از دادههای خام مانند متن، تصویر، صوت و همچنین گراف است. این بازنمایی معمولا یک ماتریس یا برداری از اعداد است که به واسطه یک فرایند پیشآموزش تولید میشود. یک بازنمایی میتواند از یک کلمه در متن، قسمتی از تصویر، گره یا یال گراف و ... باشد. یادگیری بازنمایی نیاز به استخراج ویژگی (Feature extraction) دستی که در روشهای کلاسیک یادگیری میاشینی استفاده میشد را از بین میبرد.
به عبارتی هر لایه از یک شبکه عصبی میتواند یک بازنمایی در مرحله خاصی از جریان آن شبکه باشد و معمولا آخرین لایه قبل از لایه دستهبند را اصلیترین بردار بازنمایی در نظر میگیرند.
در معماری شبکه عصبی گراف، هر گره در گراف نمایانگر یک واحد محاسباتی است که اطلاعات را دریافت کرده و عملیاتی را روی آنها انجام میدهد. همچنین، یالها در گراف نمایانگر وزنهایی هستند که برای انتقال اطلاعات بین گرهها استفاده میشوند. در ادامه چند معماری مهم شبکه عصبی برای حل مسئله دستهبندی گره (برای مسئله تشخیص تراکنش صحیح یا تقلبی) را مورد بررسی قرار خواهیم داد.
۳.۱. شبکه گراف پیچشی (Graph Convolution Network)
شبکههای عصبی پیچشی گراف (GCNs) روشی است که برای پردازش گرافها طراحی شده است. این شبکهها از ایدهها و مفاهیم شبکههای عصبی کانولوشنی در حوزه بینایی ماشین الهام گرفتهاند و آنها را برای کاربردهای گرافی تعمیم دادهاند.
شبکههای عصبی پیچشی گراف برای هر گره در گراف، با استفاده از همسایگیها و ویژگیهای همسایه، یک بردار ویژگی را محاسبه میکنند. این بردار ویژگی حاوی اطلاعات مربوط به ساختار گراف و ویژگیهای گره میباشد. این نوع از شبکهها با اعمال لایههای کانولوشنی بر روی گرافها، اطلاعات را به طور تدریجی انتشار میدهند و اطلاعات مربوط به همسایگیهای نزدیک هر گره را یاد میگیرند. این عملیات انتشار اطلاعات، امکان استخراج ویژگیهای گرافی را بهبود میبخشد.
شبکههای عصبی پیچشی گراف در موارد بسیاری کاربرد دارند:
به طور خلاصه، شبکههای عصبی کانولوشنی گراف (GCNs) ابزاری قدرتمند برای پردازش و تحلیل گرافها هستند. با استفاده از این روش، میتوان اطلاعات ساختار گراف و ویژگیهای گرهها را استخراج کرده و برای کاربردهای مختلفی از جمله دستهبندی گراف، پیشبینی گراف و توصیهگرها استفاده کرد.
۳.۲. شبکه گراف توجه (Graph Attention Network)
شبکه عصبی توجه (Graph Attention Network) که در مقاله Graph Attention Networks ارائه شده است، یک معماری برای شبکههای عصبی گراف است که برای مدلسازی و تحلیل گرافها و وابستگیهای بین گرهها استفاده میشود. این معماری با استفاده از مکانیزم توجه، به هر گره در گراف وزنی میدهد که نشاندهنده اهمیت گره در محاسبات شبکه است. در ادامه، جزییات کامل این معماری را بررسی میکنیم.
شبکه Graph Attention برای مسائل دستهبندی و وظیفههای پیشبینی روی گراف تعریف شده است. در این معماری، گراف ورودی به صورت یک گراف جهتدار با تعدادی گره و یال تعریف میشود. هر گره در گراف ورودی دارای ویژگیهای مختص خود میباشد که با یک بردار ویژگی یا Feature Vector نمایش داده میشوند.
عملیات توجه: در Graph Attention Network با استفاده از مکانیزم توجه انجام میشود. برای هر گره در گراف ورودی، یک بردار ویژگی توجه محاسبه میشود. برای محاسبه بردار ویژگی توجه یک گره، از ویژگیهای خود گره و ویژگیهای همسایگان آن استفاده میشود. این عملیات شامل مراحل زیر است:
تجمیع ویژگیها: در این مرحله، با استفاده از بردارهای ویژگی توجه محاسبه شده، یک بردار ویژگی نهایی برای هر گره به دست میآید. این بردار ویژگی شامل یک تابع تجمیع برای ترکیب بردارهای ویژگی توجه محاسبه شده از همسایگان گره است. این تابع تجمیعی میتواند یک میانگین وزندار از ویژگیهای توجه باشد.
پیشبینی و خروجی: با استفاده از بردارهای ویژگی نهایی محاسبه شده، میتوان برای هر گره در گراف یک پیشبینی یا خروجی محاسبه کرد. این پیشبینی میتواند شامل دستهبندی، رتبهبندی یا پیشبینی عددی باشد، بسته به نوع وظیفه مورد نظر.
این معماری میتواند برای مدلسازی و تحلیل گرافها با تعداد گرههای متغیر و وابستگیهای پیچیده استفاده شود. با استفاده از مکانیزم توجه، شبکه قادر است به صورت موثر وزندهی کند و اطلاعات مهم در گراف را شناسایی کند.
۳.۳. شبکه گراف انتقال پیام (Message Passing Network)
معماری شبکه عصبی Message Passing یک روش محاسباتی در شبکههای عصبی مبتنی بر گراف است که در آن ارتباطات بین گرههای شبکه به صورت مستقیم برقرار میشود. این معماری در بسیاری از مسائل مرتبط با تجزیه و تحلیل و پردازش گراف مورد استفاده قرار میگیرد. در ادامه این معماری را بطور خلاصه شرح خواهیم داد اما برای جزییات بیشتر میتوانید به مقاله اصلی مراجعه کنید.
معماری Message Passing بر مفهوم تبادل اطلاعات بین گرههای گراف تأکید میکند. در این معماری، هر گره شبکه دارای یک بردار ویژگی است که معمولاً با نام "ویژگی گره" شناخته میشود. هر گره همچنین دارای همسایگان خود است که میتوانند گرههایی باشند که به آن متصل شدهاند یا نزدیکترین همسایگان در گراف هستند.
در مرحله اول، اطلاعات ویژگی هر گره به همسایگان خود منتقل میشود. برای این کار، از تابعی به نام "تابع پیام" استفاده میشود که وظیفه انتقال اطلاعات ویژگی از گره مبدأ به گره مقصد را دارد. این تابع میتواند بر اساس ویژگیهای گره مبدأ و گره مقصد، ویژگیهای جدیدی تولید کند و به عنوان پیام برای ارسال در نظر گرفته شود.
در مرحله بعدی، پیامهای دریافت شده در هر گره تجمیع میشوند. این تجمیع میتواند با استفاده از تابعی به نام تابع تجمیع یا Aggregation صورت بگیرد. این تابع وظیفه تجمیع پیامهای دریافتی از همسایگان را دارد و یک بردار جدید از ویژگیها را تولید میکند.
در مرحله بعدی، بردار ویژگی جدید حاصل از تجمیع پیامها در هر گره با استفاده از یک تابع به نام "تابع Update" بروزرسانی میشود. تابع Update وظیفه تولید بردار ویژگی جدید بر اساس بردار ویژگی قبلی و بردار ویژگی تجمیع شده دارد.
این فرایند پیامرسانی، تجمیع و بروزرسانی برای هر گره در شبکه تکرار میشود تا به جایگشتی از پیامها و تغییرات ویژگیها بین گرهها دست یابیم. در هر مرحله، اطلاعات ویژگی به صورت تدریجی در سراسر شبکه توزیع میشوند و همسایگیها بهبود مییابند.
مزیت اصلی معماری Message Passing این است که اجازه میدهد تا اطلاعات محلی در گراف به صورت توزیع شده و هماهنگ انتقال یابند. این معماری برای کارهایی مانند پردازش گرافی، تجزیه و تحلیل گرافی، ترجمه ماشینی و تشخیص الگو در دادههای گراف مفید است.
این معماری در قلب تمام شبکههای عصبی نوین برای گرافها وجود دارد مانند GATConv، GCNConv، GINConv و ...
۳.۴. شبکه عصبی تطبیق گراف (Graph Isomorphism Network)
یک معماری شبکه عصبی است که برای تشخیص و تطبیق گرافها با ساختار مشابه استفاده میشود. GIN بر اساس شبکههای عصبی بازگشتی توجهی ساخته شده است و توانایی تشخیص تطبیق یا ناهمسانی دو گراف را دارد.
این شبکه از مکانیزمهای توجه گرافی برای استخراج ویژگیهای مهم از ساختار گراف استفاده میکند. این معماری شامل چند لایه است که در هر لایه، ویژگیهای گرهها به صورت تجمعی بر اساس ویژگیهای همسایههای خود و با در نظر گرفتن ارتباطات گرافی به روزرسانی میشوند. این عملیات به صورت مکرر در لایههای مختلف انجام میشود تا ویژگیهای مهم در ساختار گراف استخراج شوند.
کاربردهای شبکه عصبی GIN عبارتند از:
از این معماری با استفاده از قابلیت تشخیص ساختار گراف و ویژگیهای انتزاعی استخراجشده میتوان در دستهبندی گره نیز استفاده کرد.
پس از بررسی مفاهیم و شبکههای عصبی گراف به سراغ پیادهسازی یک چارچوب نرمافزاری برای تشخیص تخلف با استفاده از شبکههای یاد شده و مقایسه آنها میکنیم. این فریموورک در قالب یک پکیج نرمافزاری با زبان پایتون خواهد بود.
اجزای تشکیلدهنده این فریموورک به شرح زیر است:
دیتاست انتخابی در این پروژه مجموعه داده Elliptic است. این مجموعه داده تراکنش های بیت کوین را به اشخاص حقیقی متعلق به دسته های قانونی یا Licit (صرافی ها، ارائه دهندگان کیف پول، استخراج کنندگان، خدمات قانونی و غیره) در مقابل غیرقانونی یا Illicit (کلاهبرداری، بدافزار، سازمان های تروریستی، باج افزار، طرح های پونزی و غیره) تقسیم می کند. وظیفه مجموعه داده طبقه بندی گره های مجاز و غیرمجاز در این گراف است.
این دیتاست شامل ۲۰۳۷۶۹ گره و ۲۳۴۳۵۵ یال است و هر گره نماینده یک تراکنش و هر یال جریان انتقال بیتکوین از یک تراکنش به تراکنش دیگر است. از این میان، ۲ درصد از تراکنشها یعنی تعداد ۴۵۴۵ گره لیبل غیرمجاز و ۲۱ درصد از تراکنشها یعنی تعداد ۴۲۰۱۹ گره لیبل مجاز و ما بقی گرهها بدون لیبل هستند.
۴.۱.۱. توزیع کلاسها
این دیتاست شامل سه فایل است:
۴.۱.۲. ویژگی گرهها (Node Features)
تقریبا در تمام دیتاستهای گراف، یک فایل حاوی ویژگیهای استخراجشده یا همان node features نیز وجود دارد. این ویژگیها بسته به نوع دیتاست و ترجیح گردآورندگان تولید میشوند و معمولا برای هر کاربردی یک متد خاصی برای استخراج وجود دارد. در این دیتاست یک وکتور ۱۶۶ بعدی از ویژگیها وجود دارد که ۹۴ بعد آن شامل ویژگیهای اسکالر مختص تراکنش مانند مرتبه زمانی، کارمزد تراکنش، حجم معاملات در آن لحظه و … است و بقیه ۷۲ ویژگی حاصل جمع فیچرهایی هستند که با استفاده از تکنیکهای one-hop backward/forward از گرههای مرکزی به دست آمدهاند و ویژگیهایی مانند مینیمم، ماکسیمم، انحراف معیار و ضریب همبستگی گرههای همسایه را ارائه میکنند.
پیادهسازی مدلها با استفاده از فریموورک PyTorch انجام شده است. در ادامه جزییات معماری انتخابشده برای پیادهسازی سه مدل بر مبنای معماری پیچشی (GCN)، توجه (GAT) و تطبیق (GIN) و با استفاده از لایههای Message Passing در PyTorch Geometric آورده شده است.
۴.۲.۱. مدل پیچشی GCN
برای پیادهسازی این مدل از دو بلوک GCNConv با سایز ورودی ۱۶۵ (تعداد ویژگیهای گره) و بعد میانی ۱۲۸ استفاده کردیم. در نهایت یک لایه خطی با سایز خروجی ۲ (به تعداد کلاسها یعنی قانونی و غیرقانونی) برای دستهبندی گره داریم. مابین بلوکهای پیچشی از تابع فعالساز TanH و لایه آخر نیز یک لایه سیگموید است.
کد پیادهسازی این کلاس اینجا قرار دارد.
۴.۲.۲. مدل توجه GAT
برای این مدل نیز مانند مدل قبلی از دو بلوک GATConv استفاده کردیم. سایز ورودی به تعدا ویژگیهای گره یعنی ۱۶۵ است و تعداد سرهای توجه نیز ۲ است. میان بلوکها لایه فعالسازی ReLU قرار دارد. بلوک دستهبند در این مدل دارای دو لایه خطی است که دارای بعد میانی ۱۲۸ است و خروجی نهایی نیز بعد ۱ دارد و با لایه فعالساز سیگموید خروجی میدهد.
کد پیادهسازی این کلاس اینجا قرار دارد.
۴.۲.۳. مدل تطبیق GIN
این مدل دو بلوک GINConv دارد که در هر یک دو لایه خطی با بعد میانی ۱۲۸ وجود دارد و هر لایه با ReLU فعالسازی میشود. لایه آخر نیز یک لایه خطی با سایز ورودی ۱۲۸ و سایز خروجی ۱ است که با فعالسازی سیگموید خروجی نهایی را تولید میکند.
کد پیادهسازی این کلاس اینجا قرار دارد.
آموزش مدلهای گرافی با مدلهای عادی مانند پردازش زبان یا تصویر و ... متفاوت است. در آموزش مدلهای غیرگرافی معمولا تعداد زیادی نمونه داریم که به شکل دستهای (Batched) به مدل داده و بعد از اتمام تمام دستهها یک ایپاک (Epoch) انجام شده است؛ اما در آموزش مدل روی دادگان گرافی، در هر ایپاک کل گراف را به مدل میدهیم! دلیل این امر این است که همه گرههای گراف میتوانند با هم در ارتباط باشند و روی یکدیگر تاثیر بگذارند.
جزییات آموزش مدل به شرح زیر است:
معیارهای ارزیابی:
فاز ارزیابی این مدلها به این شکل است که بخشی از اندیسهای گراف (اندیس نشاندهنده گره) به عنوان تست تعیین شده اند و مدل در حین آموزش نمیتواند آنها را ببیند. سپس بعد از هر ایپاک یک بار مدل سعی در پیشبینی این گرهها میکند و ارزیابی دقت نیز بر همین اساس انجام میشود.
دستورالعمل آموزش مدلها داخل مخزن گیتهاب پروژه موجود است.
نتایج ارزیابی هر سه مدل روی این دادگان روی Tensorboard پروژه قابل مشاهده است.
۵.۱. دقت (Accuracy)
۵.۲. صحت (Precision)
۵.۳ ضریب اف-۱ (F1)
۵.۴. یاداوری (Recall)
در نهایت همانطور که پیداست ترتیب کیفیت مدلها از بهترین به بدترین مدلهای توجه (GAT)، تطبیق (GIN) و پیچشی (GCN) هستند.
یک نکته جالب توجه در آموزش گرافها این است که نمودار دقتها معمولا نوسانات ناگهانی زیادی دارند. این اتفاق ریشه در ساختار گرافها و همبستگی بسیار آنها و همچنین نحوه تجمیع مقادیر و انتقال پیامها بین گرهها حین آموزش و در داخل مدل است اما تا زمانی که روند صعودی در تابع هزینه و دقتها داشته باشیم این مورد قابل چشمپوشی است.
۵.۵. جدول نتایج
در این پروژه سه مدل شبکه عصبی برای پردازش گرافها برای کشف تخلف را پیادهسازی کرده و نتایج آموزش این سه مدل را روی دیتاست تراکنشهای بیتکوین (Elliptic dataset) با یکدیگر مقایسه کردیم و مشاهده کردیم که معماری توجه (GAT) با اختلاف نسبتا چشمگیری عملکرد بهتری نسبت به سایر مدلها دارد. معماریهای موجود در این پروژه صرفا ساخته گردآورنده این پروژه است اما طبیعتا میتوانید این مدلها را به نحو دیگری توسعه و تغییر دهید. (مثلا پیادهسازی مدل GraphSAGE طبق این مقاله)
تمامی کدهای پروژه به همراه دستورالعمل به کارگیری آن در این مخزن گیتهاب موجود است.