الشبكات العصبية ومعالجة العمليات: محاولة تكوين صداقات

تعدين العمليات هو حقل تحليل بيانات يسمح لك بتحليل العمليات بناءً على سجلات أنظمة المعلومات. نظرًا لوجود عدد قليل جدًا من المنشورات حول موضوع استخدام التعلم الآلي في هذا المجال في حبري ، قررنا مشاركة خبرتنا في تطوير نماذج تنبؤية لحل المشكلات الموجهة نحو العملية. كجزء من برنامج VTB ، قام مبتدئ في تكنولوجيا المعلومات للمبتدئين في تكنولوجيا المعلومات ، والمتدربين من فريق عملية التعدين باختبار طرق التعلم الآلي في سياق مهام البحث عن العمليات المصرفية. تحت الخفض ، سنتحدث عن متى وكيف كانت لدينا فكرة حل مثل هذه المشاكل ، وماذا فعلنا والنتائج التي حصلنا عليها.



برنامج IT Junior هو برنامج تدريب سنوي لمتخصصي تكنولوجيا المعلومات المبتدئين في VTB Bank ، والذي بدأ لأول مرة في سبتمبر 2019. يستمر التدريب ستة أشهر. وفقًا لنتائج برنامج 2019 ، انضم أكثر من نصف المتدربين إلى الموظفين وأصبحوا موظفين في الشركة. يمكن العثور على مزيد من المعلومات حول البرنامج وبدء الاختيار ومتطلبات المرشحين هنا . هذه هي الطريقة التي تعامل بها المتدربون في هذا البرنامج مع مهام البنك.

في نظام الإحداثيات الكلاسيكية ، من أجل فهم العملية وإضفاء الطابع الرسمي عليها ، من الضروري:

  • إجراء مقابلة مع الموظفين ؛
  • تحليل التقارير والوثائق المتاحة.

في منهج تعدين العمليات ، يتم تشكيل نموذج العملية الرقمية على أساس ليس فقط رأي الخبراء من المشاركين في العملية ، ولكن أيضًا البيانات ذات الصلة من أنظمة المعلومات.

ونتيجة لذلك ، نحصل على نموذج رقمي موضوعي للعملية ، وهو انعكاس لحركة البيانات الحقيقية في أنظمة تكنولوجيا المعلومات للعملية. يعمل النموذج الناتج في الوقت الفعلي ويسمح لك بعرض الحالة الحالية للعملية بالدرجة اللازمة من التفاصيل.

في سابقة لدينا المادةتحدثنا عن منصة تعدين العمليات لدينا والمهام الحقيقية للبنك ، والتي يتم حلها بمساعدته. سمح لنا الحل الذي تم تنفيذه بتقليل الوقت المطلوب لإعداد التقارير الإلزامية للوكالات الحكومية بشكل كبير ، وساعد أيضًا في تحديد عيوب العملية وتحسينها ، لإنشاء عرض يومي للحالة الحالية للمشتريات في العمل.

وبالتالي ، لم يكن عملاؤنا بحاجة إلى تحديد الوضع الحالي للعملية نوعيًا فحسب ، ولكن أيضًا إلى توقع ظروفها المستقبلية.

بعد ذلك ، سنصف خطوة بخطوة كيف تمكنا من حل مشكلة التنبؤ بمدة عملية الشراء (باستخدام مجموعة بيانات تحدي BPI 2019 كمثال) باستخدام مجموعة من الأحداث المعروفة باستخدام محطة DGX عالية الأداء ، والتي قدمتها لنا NVIDIA للبحث.

تطبيق التعلم الآلي لتعدين العمليات


لحل المشكلة ، قمنا ببناء خط أساس باستخدام CatBoostRegressor ، ثم قمنا بتطوير حل مع شبكة عصبية وتضمين المتغيرات الفئوية.
نظرًا لوجود ميزات فئوية ومادية في بيانات المصدر ، فقد تقرر استخدام التعزيز ، والذي يمكن أن يعالج الميزات الفئوية دون تشفير ، كما يحل المشكلة على إدخال منفصل ومادي.

تم استخدام الشبكات لبناء سمات المواد تمامًا وحل المشكلة على إدخال المواد بالكامل ، ثم مقارنة هذين النهجين وتحديد ما إذا كان ينبغي إزعاجهما مع الشبكات.

بيانات الوصف


تقرر استخدام البيانات الخارجية التي تناسبنا في مجال الأعمال وتمتلك مجموعة مماثلة من الخصائص. تتضمن مجموعة بيانات BPI Challenge 2019 المستخدمة 250 ألف حالة - أي 1.5 مليون حدث. يتم وصف البيانات الأولية بمجموعة من 21 علامة: 18 فئوية (هناك علامات فهرس) ، واثنان منطقيان وواحد حقيقي. تم اختيار وقت تنفيذ عملية الشراء كمتغير الهدف ، الذي يتوافق مع الاحتياجات الحقيقية للشركة. للحصول على وصف تفصيلي للخصائص ، يمكنك الرجوع إلى وصف مجموعة البيانات .

حدود


قبل تدريب النموذج ، تم تقسيم البيانات إلى عينات تدريب (تدريب) واختبار (اختبار) بنسبة 0.8 / 0.2. علاوة على ذلك ، لم يحدث الانقسام حسب الأحداث ، ولكن حسب الحالات.

لتحديد مدى ملاءمة استخدام حل أصلي معقد في شكل شبكة عصبية ، تم بناء خط الأساس باستخدام CatBoost ، مكتبة متقدمة لتعزيز التدرج على أشجار القرار. لبناء خط أساس ، تم تنفيذ الحد الأدنى من المعالجة المسبقة للبيانات (ترميز الميزات الفئوية مع التردد المقابل في البيانات) ، وتم تطوير متغير هدف (مدة الحالة) وعدد من الميزات الجديدة (بالإضافة إلى تلك الموجودة بالفعل في مجموعة البيانات الأصلية):

  • . , : , , , , , .
  • Exponential Moving Average . EMA , .
  • (, , ).

بعد تدريب CatBoostRegressor في مجموعة التدريب ، حصلنا على النتيجة التالية: MAE (متوسط ​​الخطأ المطلق) = 17.5 يومًا (أي أن قيمة المتغير المستهدف المتوقع تكون في المتوسط ​​17.5 يومًا مختلفة عن القيمة الحقيقية). تم استخدام هذه النتيجة لاختبار فعالية الشبكة العصبية. 

أحد التفاصيل الهامة هنا هو تطوير المتغير المستهدف لخط الأساس. 

دعونا لدينا قضية. نشير إليها بواسطة c_i من المجموعة C (مجموعة جميع الحالات في مجموعة البيانات الخاصة بنا). كل حالة عبارة عن تسلسل منظم للأحداث ، على سبيل المثال c_i = (e_0 ، ... ، e_ni) ، حيث ni هو طول الحالة ith. لكل حدث ، لدينا طابع زمني - الوقت المحدد الذي بدأ فيه. باستخدام هذه الطوابع المؤقتة ، يمكنك حساب مدة الحالة بدون الحدث الأخير. ومع ذلك ، فإن تعيين مثل هذا الهدف لكل حدث ، أي جعل المراسلات ek ∈ ​​ci ، ek → ti (ti هي مدة الحالة ith) ، ليس جيدًا جدًا. أولاً ، يمكن أن تحدث أحداث مماثلة (نموذجية) في حالات فترات مختلفة. ثانيًا ، نريد أن نتنبأ بمدة القضية من تتابع معين (مرتبة في الوقت المناسب) للأحداث (وهذا مدفوعًا بحقيقة أننا لا نعرف التسلسل الكامل للأحداث ، أي أننا لا نعرف الحالة من قبلكيف حدث ذلك ، لكننا نريد إجراء تقييم لمدة الحالة بأكملها وفقًا لبعض الأحداث المعروفة (التي حدثت) من هذه الحالة).

لذلك ، نحتاج إلى تقسيم كل حالة إلى حالات طول متتالية من حالة واحدة إلى طول حالة الأحداث المرتبة زمنيًا وتعيين متغير هدف مساو لمدة الحالة التي يتم الحصول على هذه التكرارات منها ، أي المراسلات ci ∈ C ، ci → {sub_cj} ni (ni كما كان من قبل ، طول الحالة ith ، j = 1 و len (sub_cj) = j.

وبالتالي ، نقوم بتقسيم كل حالة إلى حالات متتالية وتعيين مدة الحالة بأكملها لكل حالة متتالية.

المزيد حول التتابعات

كما ذكرنا سابقًا ، نقوم بتقسيم الحالة إلى تتابعات ونخصص مدة القضية لكل منها. سنستخدم التعزيز الذي يتناسب مع حجم بيانات الإدخال. حتى الآن لدينا X = {{sub_c ki } ni k = 1 } t = 1 N ، sub_c ik هو التتابع k-th للحالة i-th ، t i هو طول الحالة i-th ، N هو عدد الحالات. أي أن البعد [∑ N t = 1 n i ، sc، 17]، sc هو متغير يساوي طول تتابع الحالة المقابلة.

بعد ترميز المتغيرات الفئوية حسب تواترها ، لدينا متغيرات حقيقية وبولانية ، بالإضافة إلى متغيرات فئوية مشفرة (لن يتم استخدام متغيرات الفهرس في عملية التعلم). يمكننا أيضًا متوسط ​​القيم على التتابع ، بينما في الميزات الفئوية نحصل على متوسط ​​تواتر حدوث القيم الفئوية ، والتي يمكن اعتبارها أيضًا خاصية مميزة تصف تجميع مجموعة فرعية من الأحداث في حالة ، أي كميزة تصف التتابع. اتركه وانظر ماذا سيحدث.

بعد حساب متوسط ​​sc فوق البعد ، نحصل على البعد التالي: [∑ N t = 1 n i ، 17].

بناء نموذج

استنادًا إلى الحالات ، نقوم بتقسيم القطار إلى قطار آخر وعينة تحقق ، ونأخذ CatBoostRegressor مع المعلمات الافتراضية ، ونقوم بتمرير عينة تدريبية ، والتحقق من صحة عينة التحقق ، واتخاذ أفضل تكرار ، واستخدام MAE كمقياس للتحقق. نحصل على ما يلي (في الشكل أدناه) في الاختبار (سنقوم بشكل منفصل بإعداد الاختبار لخط الأنابيب نفسه الذي تم بناء القطار عليه. تستند جميع الإشارات إلى البيانات الموجودة في الاختبار ، أي ليس لدينا أي علامات تركز على المتغير المستهدف. التحذير الوحيد: إذا كانت الميزات الفئوية في الاختبار لا تفي بالقيمة التي رأيناها في القطار ، فإننا نعتبر تكرار هذه القيمة في الاختبار وتحديث القاموس للترميز).

نتائج خط الأساس



• التكرارات: 500.
• معدل التعلم: 0.1.

معلمات التدريب:

• مدة التدريب: أقل من دقيقتين.
• الحديد: تسلا k80 (من كولاب).

النتائج:

• اختبار MAE: 17.5 يوم.
• متوسط ​​مدة القضية في الاختبار: 66.3 يوم.

الشبكة العصبية


اقامة


لتدريب الشبكة العصبية ، تم تحسين البيانات: تم بناء التضمين للمتغيرات الفئوية ، وتم تعديل توزيع المتغير الهدف. بعد ذلك ، تم تدريب الشبكة العصبية على NVIDIA Tesla K80 (Google Colab) وعلى محطة NVIDIA DGX.

تم الحصول على النتائج التالية:

  • مدة التدريب على NVIDIA K80 (Google Colab): 20 دقيقة.
  • مدة التدريب في محطة NVIDIA DGX: 8 دقائق.

يرجع وقت تدريب الشبكة العصبية إلى الاختلاف في الخصائص التقنية لوحدات معالجة الرسومات المستخدمة:
NVIDIA Tesla K80 (Google Colab)
محطة NVIDIA DGX
1X NVIDIA Tesla K80 12 جيجابايت
4X NVIDIA Tesla V100 32GB

المعالجة المسبقة


علامات جديدة

  • EMA حول قيمة الحدث: نريد أن نحصل على الاتجاه في تكلفة الأنشطة لكل حالة.
  • نوع الخلل: في وصف مجموعة البيانات ، يمكنك العثور على معلومات حول أربعة أنواع من بعض الإحصائيات الوصفية لعملية الشراء (الحدث) - تنقسم هذه الأنواع إلى قيم متغيرين في مجموعة البيانات الأصلية. نقوم ببساطة بتجميعها مرة أخرى (إذا نظرت إلى وصف مجموعة البيانات ، فسيكون واضحًا ما نتحدث عنه).

العلامات

الفئوية نحن ببساطة نرمز القيم الفريدة للإشارات الفئوية بالأرقام الطبيعية بالترتيب ، حتى نتمكن لاحقًا من تعليم التضمين.

التضمين للمتغيرات الفئوية

نحدد أبعاد التضمين لكل متغير فئوي:

  • , ̆ ̆ ̆. ̆ , ̆ ̆ , ̆, . : MUi  = min(CAT_EMBEDDING_DIM; (len(uniquei) + 1) // 2), CAT_EMBEDDING_DIM — , uniquei — i- .
  • , 3, i-̆ ̆ max(3;MUi)+1, 1, , train, unk-.

نقوم بتعديل توزيع الهدف في عينة القطار ، وتبين 

أن التوزيع الأولي تحول إلى اليسار إلى حد كبير بسبب القيم المتطرفة (الحالات التي استمرت 250 ألف يوم) وعدد كبير من الحالات القصيرة ، لذلك نحسب 0.05 و 0.95 في المائة ونترك البيانات من القطار مع الهدف بين هذه المنحدرات.

بعد ذلك ، لا تزال لدينا حالات تستمر لمدة يوم واحد وحوالي 100 يومًا ، أي أن المتغير المستهدف يمر عبر عدة مرات من حيث الحجم. لذلك ، فإن افتراض أن التباين ثابت في توزيع المتغير الهدف حول خوارزمية القرار بالكاد يتم تحقيقه ، أي أن توزيع المتغير الهدف قريب من الطبيعي ، ولكن التباين ليس ثابتًا نظرًا لأن المتغير المستهدف يمكن أن يكون أقل من 1 أو أكثر من 100. لذلك ، على الأقل بطريقة ما مستوى هذا التأثير ، نقوم بتطبيع البيانات.

تظهر النتيجة في الرسم البياني أدناه (الخط الأسود هو التوزيع الطبيعي).



ثم نقسم حسب الحالة بياناتنا في القطار والتحقق من الصحة. هناك أيضًا فارق بسيط واضح هنا: نقوم بتطبيع الهدف بالمتوسط ​​والانحراف ، محسوبًا وفقًا لجميع البيانات ، ثم نقسمه عن طريق القطار والتحقق ، أي أنه يبدو كوجه في القطار ، ولكن نظرًا لأننا نحل مشكلة مساعدة ، لا يبدو أن هذا الوجه حرج.

علامات البناء


فكرة

  • نأخذ فقط إشارات قاطعة من قطارنا ، مشفرة بأرقام طبيعية.
  • نحن لا نأخذ سلاسل فرعية من الحالات ، ولكن ببساطة الأحداث ، أي سطر واحد في بياناتنا للتضمين - وهذا حدث واحد يتميز بميزات فئوية مشفرة.
  • : , ̆, , , , ̆ ̆ ̆. - , ̆, , , ̆ ( ), ( , - ̆ ).
  • ̆ .
  • , 8-̆̆ elu ̆, ( , , , L2-) .
  • , , — , , .
  • Summary: — ̆ ̆ ̆ ̆ — ̆.


  • Batch size = 1000
  • Learning rate = 3e-04.
  • = 15.
  • : Tesla k80 (colab) + Nvidia DGX Station .
  • (colab) – 50 .
  • (Nvidia DGX Station) — 18 .




إعداد البيانات

الآن لدينا عمليات تضمين للمتغيرات الفئوية (هناك فارق بسيط هنا: لقد أخذنا بصدق قيمًا فريدة للمتغيرات الفئوية في قطارنا (ليس على النوع الذي خصصناه لتدريب التضمين ، ولكن على واحد خصصناه في البداية التدريب) ، لذلك هناك فرصة في بيانات الاختبار ستكون هناك قيمة للمتغيرات الفئوية التي لم نرها في القطار ، أي أننا لم نتدرب على تضمين هذه القيمة.

لمثل هذه القيم ، يتم إنشاء خط منفصل في مصفوفات التضمين ، ولكن في حالتنا ، تكمن المشكلة في أنه أثناء التدريب لا يكون متورطًا ، وبالتالي لا يدرس. بناءً على ذلك ، إذا استوفينا قيمة متغير فئوي لم يتم رؤيته من قبل ، فإننا نأخذ هذا المتجه ، ولكن في الواقع يتم أخذه من التوزيع الأولي.

في كيفية تدريب هذا الناقل ، هناك اتجاه لتحسين النموذج. الفكرة هي أن القيم النادرة جدًا في القطار يمكن ترميزها بهذا المتجه ، لأنه إذا رأينا قيمة جديدة فقط في الاختبار ، والتي تشكل مشروطًا 20 ٪ من العينة الأولية بأكملها ، فإن هذه القيمة نادرة وربما تتصرف نفس القيم النادرة في القطار.

في كل حدث ، نستبدل المتغيرات الفئوية بالتضمين المقابل ، ونتصل بالسمات الحقيقية والسمات المنطقية ، نحصل على مصفوفة الحجم [N ، F] ، حيث F هو مجموع أبعاد التضمين للمتغيرات الفئوية ، عدد السمات الحقيقية والقيم المنطقية.

نقوم بتنفيذ مجموعة من الأحداث في تتابع (كما فعلنا سابقًا). المتغير المستهدف للالتساق هو مدة الحالة التي تم الحصول منها على المتطلب. أضف عدد الأحداث ومجموع تكاليف الأحداث في هذا التتابع إلى متجه التكرار.

الآن لدينا مصفوفة ذات حجم ثابت - يمكنك تغذية النموذج (قبل ذلك نقوم بتطبيع المصفوفة).

طريقة التوازي

  • نصنع برج لكل وحدة معالجة.
  • في كل خطوة ، نقسم المعلمات بين الأبراج.
  • .
  • ̆ , .
  • ( , ̆ ̆ ).
  • .
  • , - ( , word2vec-style, ).



  • () () ().
  • ̆ : — , gpu , , gpu .



  • : 7-̆̆ elu.
  • ̆ , .
  • Batch size = 1000.
  • Learning rate = 3e-04.
  • = 15.
  • : Tesla k80 (colab) + Nvidia DGX Station.
  • (colab) = 20 .
  • (Nvidia DGX Station) = 8 .

جزء من الرسم البياني للنموذج.



استهلاك الموارد والتوازي.

يستغرق تدريب الشبكة العصبية على وحدة المعالجة المركزية حوالي أربعة أضعاف الوقت الذي تستغرقه محطة NVIDIA DGX. في هذه الحالة ، يبدو الفرق ضئيلًا - ثماني دقائق على محطة NVIDIA DGX و 32 دقيقة على وحدة المعالجة المركزية. ومع ذلك ، هذا نموذج صغير مع كمية صغيرة من البيانات. عند تنفيذ مشاريع حقيقية ، حيث سيكون هناك عدة مرات أكثر من الحالات والأحداث ، سيستغرق التدريب على وحدة المعالجة المركزية أسبوعًا على الأقل. في هذه الحالة ، سيؤدي استخدام محطة NVIDIA DGX إلى تقليل وقت التدريب إلى يومين ، مما سيزيد من كفاءة العمل بشكل كبير. 

تم الكشف أيضًا عن أن سرعة عملية التعلم تعتمد إلى حد كبير على عدد وحدات معالجة الرسومات المستخدمة ، والتي توضح ميزة محطة NVIDIA DGX.

تم تأكيد ذلك من خلال التجارب السابقة على وحدة معالجة مركزية NVIDIA DGX ووحدة معالجة الرسومات باستخدام مجموعة البيانات الأصلية دون أي معالجة أولية:

  • وقت التعلم على وحدة المعالجة المركزية: 6 دقائق و 18 ثانية.
  • وقت تدريب GPU: 34 ثانية.

تصور تحميل GPU



تصور تحميل CPU



نتائج الشبكة العصبية




  • اختبار MAE = 10 أيام.
  • متوسط ​​مدة القضية في الاختبار = 67 يومًا.
  • زمن الاستدلال = 20 ثانية.

الموجودات


  • قمنا بتنفيذ برنامج تجريبي لتقييم أساليب التعلم الآلي في سياق مهام تعدين العمليات.
  • لقد اختبرنا ووسّعنا قائمة أدواتنا التي سنعمل من خلالها على حل المشكلات المهمة للأعمال.
  • كانت إحدى النتائج المثيرة للاهتمام هي كتابة التنفيذ الخاص بنا للحوسبة المتوازية على 4 بطاقات Tesla v100 ، المجهزة بمحطة DGX: يؤدي استخدام العديد من وحدات معالجة الجرافيكس إلى تسريع التعلم بشكل متزامن تقريبًا من عدد وحدات معالجة الجرافيكس (الرمز متوازي).
  • جعل الانتقال إلى دخول مستمر بالكامل واستخدام الشبكة العصبية من الممكن أن يستغرق أسبوعًا من خط الأساس.
  • يزيد الوقت من بضع دقائق إلى ساعة ونصف (التدريب في العمارة النهائية والتضمين ، ولكن يمكن استخدام التضمين مسبقًا ، بحيث يتم تقليل الوقت إلى 20 دقيقة).

تظهر التجارب الموصوفة أنه في مجال عملية التعدين ، يمكن تطبيق خوارزميات التعلم الآلي والعميق بنجاح. بالإضافة إلى ذلك ، تم الكشف عن أن سرعة عملية التعلم تعتمد إلى حد كبير على عدد وحدات معالجة الرسومات المستخدمة ، مما يدل على ميزة NVIDIA DGX Station.

ما وكيف يمكن تحسينها


التضمين على غرار Word2vec للأحداث

عندما صنعنا نموذجنا ، بما في ذلك التضمين للمتغيرات الفئوية ، لم نأخذ في الاعتبار تسلسل الأحداث المتعلقة ببعضها البعض ، أي الدلالات الغريبة للأحداث داخل الحالات. لمعرفة شيء مفيد من ترتيب الأحداث داخل الحالات ، تحتاج إلى تدريب التضمين لهذه الأحداث.

فكرة

  • نأخذ ميزة فئوية واحدة وواقعية حقيقية ، نقسم الحقيقي على الدلو ، ثم ستتميز كل معاملة بقيمة المتغير الفصلي والدلو الذي تنخفض فيه قيمة المتغير الحقيقي. ضم هاتين القيمتين ، نحصل ، كما كان ، على تناظرية لكلمة الحدث.
  • نعتبر الحالة بمثابة جملة (مجموعة الكلمات في الجملة تتوافق مع مجموعة الأحداث في القضية).
  • ̆ , ̆ ̆, , .
  • ̆, Skipgram CBOW .
  • , ̆, .



  • Skipgram.
  • — 5.

  • Batch size = 1000.
  • Learning rate = 3e-04.
  • = 10.
  • : Tesla k80 (colab) + Nvidia DGX Station.
  • (colab) — 20 .
  • (Nvidia DGX Station) — 8 .
  • Test MAE : 10 ̆. 

العد



باستخدام ميزات التضمين يعطي زيادة بعشرة أعشار اليوم.

في النهاية

  • تحول التضمين ، بالطبع ، إلى غير متعلم ، لأنهم تدربوا قليلاً.
  • هناك حوالي 290 ميزة من التضمين القاطع ، و 20 ميزة من التضمين الدلالي (ليس من المنطقي القيام بذلك لأن حجم القاموس صغير) ، لذلك يمكن تسوية تأثير هذه الميزات الدلالية بسبب عدم التوازن في نسبة الميزات.
  • يجب إضافة الدلالات بين الأحداث بطريقة ما إلى مجموعة التدريب ، لأنه نظرًا لحقيقة ترتيب تسلسل الأحداث (الحالات) ، فإن الترتيب مهم ، ويمكن استخراج المعلومات من هذا.
  • يمكنك استخدام بنيات أكثر تعقيدًا للتضمين.
  • , , — .

All Articles