ابزار جدید ارائه شده در هسته مرکزی نسخه 11.02: استفاده از هوش مصنوعی و یادگیری ماشینی جهت کنترل صحت انواع داده موجود
در سالیان اخیر به دفعات زیاد و در حوزههای بسیار متنوعی با پدیدهی هوش مصنوعی مواجه بودهایم. اگر تا 20 سال پیش هوشمندی مصنوعی، به صورتی که در رایانهها پیاده شده است، در حد شکست قهرمان شطرنج توسط سختافزار و نرمافزار ساخته شده توسط IBM بوده است، امروزه به وجود این هوشمندی در اشکال و کاربردهای متنوعی عادت کردهایم – تا جایی که گاهی حتی دیگر مثلا از اینکه پلاک اتومبیل از روی تصویر دوربین، توسط رایانه تشخیص داده میشود تعجب نمیکنیم. البته تا رسیدن به سیستمهای رایانهای خودآگاه فاصلهی قابل توجهی داریم. اما به هر حال پیشرفتهای وسیع و موثری حاصل شده است.
میتوانیم بگوییم که هوش مصنوعی شامل مجموعهای از علوم و تکنیکهای حل مسئله است که در آنها تمام مسیری که برای یافتن پاسخ طی میشود لزوما توسط انسان از قبل قابل پیشبینی نیست. اینکه به نظر میرسد سیستم (نرمافزار) بدون نیاز به انسان قادر به حل مسئله است به "هوش" تعبیر شده است و چون هوش طبیعی را برای انسان قائل شدهاند، به این یکی «هوش مصنوعی» گفتهاند. یک زیرمجموعهی مهم از هوش مصنوعی، «یادگیری ماشینی» است. این مفهوم به روشهایی اشاره دارد که در آنها قوانین پردازش از ابتدا و مثلا توسط برنامهنویس تعیین نمیشوند بلکه در آنها سیستم از روی دادهها، به نحوی، قوانین را نیز استخراج میکند و به همین دلیل این شبهه پیش میآید که سیستم مشغول یادگیری است. یک زیرمجموعه از یادگیری ماشینی، یادگیری عمیق یا Deep Learning است. در آنها سیستم با استفاده از یک شبکه عصبی پیادهسازی میشود و از آنجا که این شبکهها ممکن است لایههای (عمق) زیاد داشته باشند به آن Deep گفته میشود. شبکههای عصبی پارامترهای متعدد ولی استانداردی دارند. مکانیزم تعیین این پارامترها همان است که به آن انطباق (fit کردن) یا به عبارتی «یادگیری» میگویند. در شبکههای عصبی این یادگیری با روش خاصی و مبتنی بر دادههای بسیار متنوع و متعدد انجام میشود.
دادههای بزرگ (Big Data) به همان دادههای متعدد و متنوعی که به عنوان ورودی به یک شبکه عصبی تغذیه میشوند گفته میشود. بزرگ در اینجا فقط به معنی اندازهی دادهها نیست. بلکه بیشتر به تعداد، تنوع و همخانواده بودن دادهها با یکدیگر توجه میشود – مثلا تعداد بسیار زیادی تصویر از چهرهی اشخاص در وضعیتهای مختلف به همراه اطلاعات شناسایی آنها به شبکه عصبی داده میشود. در هر مورد یک دستگاه معادلات تشکیل داده و حل میشود که در نهایت پارامترهای شبکه عصبی را به صورتی تغییر میدهد (بهینه میکند) که احتمال بدست دادن نتایج مطلوب از دادهها حداکثر شود. پس از این به اصطلاح «یادگیری»، سیستم میتواند در برخورد با دادههای (تصاویر) جدید، شخص موجود در آنها را شناسایی نماید. استفاده از روشهای مبتنی بر هوش مصنوعی و یادگیری ماشینی در بررسی دادهها و استخراج مفاهیم از آنها را دادهکاوی (Data Mining و اخیرا با گسترش بیشتر، علوم داده – Data Science) میگویند. پس در واقع دادهای کاویده (حاصل – استخراج) نمیشود بلکه از کاوش دادهها «اطلاعاتی» حاصل میشوند که پیش از این شاید حتی از وجود آنها بیخبر بودهایم.
یادگیری ماشینی و علوم داده
گفتیم که یک زیرمجموعهی مهم از هوش مصنوعی، یادگیری ماشینی است. این به روشهایی اشاره دارد که در آنها قوانین پردازش از ابتدا و مثلا توسط برنامهنویس تعیین نمیشوند بلکه توسط خود سیستم و از روی دادهها استخراج میشوند. سیستمهای یادگیری ماشینی بسته به نتیجهای که از آنها انتظار داریم به دو گروه تقسیم میشوند؛ آنها که نتیجهی منفصل (گسسته) و Enumerated دارند و در مقابل، آنها که نتیجهی پیوستهی عددی و غیرمنفصل دارند. مثلا حاصل سیستمی که قرار است از روی یک تصویر، چهرهی اشخاص را شناسایی کند، در بین تعدادی نتیجه که از پیش مشخص است (اشخاص) قرار میگیرد و یک نتیجهی منفصل است. اما حاصل سیستمی که قرار است سود یک شرکت را پیشبینی کند یک مقدار عددی پیوسته و غیرمنفصل است.
از طرف دیگر سیستمهای یادگیری ماشینی بسته به اینکه محدودهی نتایج آنها از قبل مشخص باشد یا خیر نیز به دو گروه تقسیم میشوند؛ نظارت شده (Supervised) یا بدون نظارت (Unsupervised). مثلا یک سیستم تشخیص چهره باید ابتدا با تعدادی تصویر از اشخاص از پیش معلوم آموزش داده شود (درست این است که بگوییم مدلی داریم که باید با دادههای برچسبداری fit شود). بعد میتوان از آن انتظار داشت که با دریافت یک تصویر از بین اشخاصی که قبلا تصویر آنها را دیده است، شخص یا اشخاصی که در تصویر هستند را شناسایی نماید. این یک سیستم نظارت شده یا Supervised است. در مقابل اگر سیستمی داشته باشیم که قرار باشد با بررسی تصویر تعدادی از اشخاص، بدون اینکه از قبل با آنها fit شده باشد اشخاص مختلف را از هم تمیز دهد و مثلا تکرار یا تعداد اشخاص را تعیین کند، آن سیستم، بدون نظارت یا Unsupervised است. راهحلهای Supervised با نتیجهی منفصل یا گسسته را Classification و با نتیجهی پیوسته را Regression میگویند. موارد Unsupervised با نتیجهی گسسته را Clustering و با نتیجهی پیوسته را Dimension Reduction میگویند.
مدلهای مبتنی بر Deep Learning ماهیتا نظارت شده یا Supervised هستند. موارد بدون نظارت یا Unsupervised در Deep Learning به دو مسئله تفکیک میشوند؛ ابتدا یک مدل روی دادهها اعمال میشود تا نتیجههای مقدماتی حاصل شود و سپس یک مدل دیگر با همان نتایج fit میشود و حاصل نهایی را تولید میکند. مدلهای مبتنی بر Deep Learning، برای آماده شدن نیاز به حجم بسیار انبوهی از دادهها دارند – مثلا تمام بازیهای شطرنج ثبت شده در تاریخ یا تمام نوشتههای ادیبان عصر ویکتوریا. در مقابل، سایر مدلها (که مثلا به آنها Shallow Learning گفته میشود) قادرند با هر مقدار دادهای که در اختیار دارند نتیجهی معقولی بدست دهند. هر دو رشته (عمیق و کمعمق) کماکان در حال پیشرفت هستند و کاربردهای خود را دارند – یکی جایگزین دیگری نشده است.
یکی از کاربردهای مهم یادگیری ماشینی در حال حاضر استخراج اطلاعات از دادهها است که به آن دادهکاوی نیز گفته میشود. به مرور زمان، شاخهی عامتری از دانش، تحت عنوان علوم داده (Data Science) جمعآوری و توسعه داده شده است. برای هر 4 گروه اصلی مدلهای یادگیری ماشینی کاربردهایی در علوم داده قابل تصور است؛ طبقهبندی دادهها یا تعیین برچسب برای آنها، پیشبینی مقادیر داده در آینده برحسب مقادیر و نتایج قبلی و مقادیر پیشبینی یا برنامهریزی شده برای برخی از پارامترها، بازنمایی دادهها در فضاهای n بعدی و سپس کاستن از تعداد ابعاد برای تشخیص دادههایی که از نظر مفهومی به هم نزدیک هستند، همگی از کاربردهای انواع مدلهای یادگیری ماشینی در علوم داده هستند.
تشخیص ناهنجاری در دادهها با کمک یادگیری ماشینی
استفاده از یادگیری ماشینی یکی از فعالیتهای تحقیقاتی ما بوده که سعی کردیم نتیجهای از آنرا در نگارش 11.02 سیستم ارائه دهیم. اهدافی که در این فعالیت داشتهایم، پیشرفت سیستم مالی یکپارچهی نوسا با پیگیری و استفاده از دانش و تکنولوژی نوین در کنار کاربردی بودن سوژه و قابل پیادهسازی و قابل ارائه بودن آن بوده است. به این منظور به مفهومی به نام تشخیص یا کشف ناهنجاری (Anomaly Detection) پرداختهایم.
تشخیص ناهنجاری در دادهها یکی از کاربردهای مهم مدلهای مبتنی بر یادگیری ماشینی در علوم داده است. این یک مفهوم بسیار باسابقه (تقریبا به قدمت کارتهای اعتباری) است. هدف ابتدایی این بوده که در برخورد با تراکنشهای هر کارت اعتباری، مواردی که به نظر غیرعادی (ناهنجار) میآیند کشف شود و تایید آن تراکنش، مشروط به تماس با صاحب کارت اعتباری و تایید مجدد وی باشد. مثلا اگر کارت اعتباری شخصی که ساکن تهران است در فاصلهی زمانی نزدیکی در تهران و شیراز بکار رفته باشد احتمال زیادی وجود دارد که یکی از این دو تراکنش، دزدی (Fraud) باشد.
در زمانهای قدیم این کنترل با یکسری الگوریتم از پیش طرح و تعیین شده (Deterministic) با توجه به مکان، زمان، مبلغ و نوع کالا یا خدمت خریداری شده انجام میشد. اما با استفاده از یادگیری ماشینی میتوان خیلی در این زمینه بهتر عمل کرد؛ فرض کنید مدل را با تعداد بسیار زیادی تراکنش تغذیه کنیم و همزمان برای هر تراکنش، یک برچسب با مقادیر دوگانه (معتبر / نامعتبر) نیز به عنوان حاصل به مدل بدهیم که مشخصکنندهی تراکنشهای ناهنجار باشد. از این پس سیستم قادر خواهد بود با دقت معقولی ناهنجار بودن یک تراکنش جدید را تشخیص (و عملا پیشنهاد) دهد. این روش کلاسیک برای ما دو اشکال دارد؛ یکی اینکه باید تعداد بسیار زیادی تراکنش از قبل داشته باشیم – که آنها را به یک مدل یادگیری Shallow یا Deep بدهیم. دیگر اینکه اعتبار تراکنشهای قبلی باید توسط شخص یا اشخاصی تعیین شده باشند تا یادگیری میسر باشد. استفاده از روشهای یادگیری ماشینی مبتنی بر Deep Learning یک محدودیت دیگر هم برای ما به همراه میداشت؛ دادههای مشتریان ما با هم تفاوتهای اساسی (ساختاری و مقداری) دارند و در نتیجه نمیتوانیم پارامترهای یک مدل Deep را با استفاده از دادههای همهی کاربران نوسا، به صورتی که برای همهی آنها قابل استفاده و استناد باشد، آماده کنیم (ضمن اینکه دسترسی یا حتی اجازهی استفاده از این دادهها را نیز نداریم). در نتیجه واضح است که روشهای کلاسیک پیشگفته برای اکثر قریب به اتفاق مشتریان ما کارایی نخواهند داشت.
در 20 سال اخیر مدلهای ریاضی بسیار جالبی به صورت بدون نظارت (Unsupervised) توسعه داده شدهاند که برای تشخیص ناهنجاری قابل استفاده هستند. یکی از این روشها مدلی است که برای محاسبهی Local Outlier Factor توسعه داده شده است. این مدل مبتنی بر یک روش (پارامتریک) برای تشخیص فاصله بین دادهها است. در این روش دادهها به صورت n عدد اعشاری به عنوان مختصات در یک فضای n بعدی دریافت میشوند. این مدل، مبتنی بر فاصلهی تشخیص داده شده در بین دادهها و یک الگوریتم مثل kdtree یا brute یا مانند آنها (پارامتریک) و دریافت تعدادی پارامتر اضافی، دادهها را در چند همسایگی قرار میدهد – یعنی مدل از انواع Clustering است. برای هر داده برحسب اینکه در همسایگی آن (آنچه تشخیص داده شده است) چه تعداد دادهی دیگر قرار دارند (پارامتریک) و نیز اینکه از مرکز همسایگی چه میزان فاصله دارد و بسته به اینکه همسایگی مربوط چقدر «چگال» باشد یک فاکتور (امتیاز – میزان) محاسبه میشود. از روی این فاکتور موارد ناهنجاری (Outlierها) تشخیص داده میشوند. این یک عدد بزرگتر از 1 است که 1 به معنی اطمینان از عادی بودن داده (ناهنجار نبودن) آن است و تا دو میلیارد (یا بیشتر) هم میرود که به معنی اطمینان مطلق از ناهنجار بودن داده است.
روشی که ما در استفاده از این مدل بکار میبریم مبتنی است بر محاسبه و بازنمایی همان عدد در یک فیلد از گزارش، به نام "میزان ناهنجاری" و تشخیص را به عهدهی کاربر قرار میدهیم. گزارش را بر حسب میزان ناهنجاری به ترتیب نزولی بازنمایی خواهیم کرد. این محاسبات را برای برخی از گزارشهای سیستم پیاده کردهایم. در این گزارشها میزان ناهنجاری به صورت یک فیلد در گزارش تعبیه شده و در فرمهای گزارش قابل بازنمایی است.