مقدمة لتحسين قوي [... وقائمة تسوق صغيرة نسيت ...]

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

في هذا المنشور ، سننظر في مشاكل التحسين مع عدم اليقين في البيانات وتقريبها من خلال مشكلات محدبة حتمية. هذه واحدة من الحيل الرئيسية في التحسين القوي - وهي تقنية تتيح لك التعامل مع مهام التحسين الحساسة للغاية للتغيرات في بيانات الإدخال.

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

ونعم ، هذا مثال على منشور ينمو فيه التعقيد أضعافا مضاعفة (القمامة بالفعل) ...

ماذا يعني "حل" مشكلة التحسين؟


لنبدأ بتذكير موجز.

تبدو مهمة التحسين بشكل عام كما يلي:

 m i n x i n R n  f ( x )ق . ر .س ط ن س 



هنا f ( x ) تسمى وظيفة الهدف ، و اكس - مجموعة صالحة.

عن طريق حل مشكلة التحسين نعني هذه النقطة x ف ي X في الذي تم تنفيذه من أجله:

f ( x ) - f ( x ) g e q 0 ، q u a d f o r a l l i x n n X    

،


هذا هو المفهوم القياسي لحل مشكلة التحسين دون شك.

ما هي مشكلة التحسين مع عدم اليقين؟


حان الوقت لنتساءل عن أصل الوظيفة f ( x ) والقيود اكس .

مفيد جدا للمشاركة

  • المنطق الهيكلي للمشكلة (وبعبارة أخرى ، ما هي الوظائف المستخدمة) ،
  • القيود الفنية (مستقلة عن المنطق البشري أو البيانات) ،
  • المعلمات التي يتم تقييمها من البيانات.

على سبيل المثال ، جاء إلينا رجل أعمال وأظهر مشكلة البرمجة الخطية:

 minx inR22.16x1+3.7x2s.t.0.973x1+2.619x2 leq3.32x1 geq0،x2 geq0

،



ترى هذه المهمة لأول مرة. رجل أيضا (ربما لا ، ولكن في السترات الزرقاء كل شيء مجردة جدا!). أنت لا تعرف معنى المتغيرات. ولكن حتى الآن ، مع قدر كبير من الثقة ، يمكننا أن نقول ما يلي:

  1. على الأرجح المهمة خطية ، لأن شخصًا ما قرر ذلك. الخطية هي البنية التي اختارها الشخص.
  2. القيود x1 geq0،x2 geq0 هي التقنية. أي أنها جاءت من "فيزياء" وليست من بيانات (على سبيل المثال ، المبيعات لا يمكن أن تكون سلبية).
  3. معاملات محددة \ {0.973، 2.619، 3.32 \} في الحد 0.973x1+2.619x2 leq3.32دولا في مثالنا تم تقييمها من البيانات. وهذا هو ، في البداية قال أحدهم أن المتغير x1 المرتبطة متغير x2دولا ، ثم قيل أن العلاقة خطية ، وأخيراً ، تم تقدير المعاملات في معادلة الاقتران من البيانات. وينطبق الشيء نفسه على الاحتمالات. \ {2.16، 3.7 \} في وظيفة الهدف.

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

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

هذا في بعض الأحيان يكفي لنا ، ونحن نحلها فقط.

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

ماذا تفعل في هذه الحالة ، وكيف نمذجة حالة عدم اليقين في البيانات؟

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

نقل حالة عدم اليقين من الوظيفة الموضوعية إلى القيود أو العكس
غالبًا ما يكون نقل كل حالة عدم اليقين إلى جزء واحد من المهمة هو الوظيفة أو القيود الموضوعية.

نقل عدم اليقين من وظيفة الهدف إلى القيود

لأية مهمة التحسين

 m i n x i n R n  f 0 ( x ، w )ق رf i ( x ، t h e t a i ) l e q 0 ، q u a d 1 l e q i l e q k     hi(x، betai)=0، quad1 leqi leqmx inX



من الممكن بناء ما يعادلها دون شك في الهدف الوظيفي:

 minx inRn،t inRtstf0(x،w) leqtfi(x، thetai) leq0، quad1 leqi leqkhi(x، betai)=0، quad1 leqi leqmx inX



الحل (x،t) مهمة مكافئة تحتوي على حل للأصل x .

نقل عدم اليقين من القيود إلى الهدف الوظيفي

رسميا لأي مهمة التحسين مع القيود

 minx inRnf(x)s.t.x inX



يمكن للمرء بناء مشكلة معادلة دون قيود

 minx inRnf(x)+IX(x)



باستخدام وظيفة المؤشر

IX(x)= startcases0، quadx inX+ infty، quadx notinX endcases



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


مؤشر ستوكاستيك ، عبر الإنترنت ، تحسين قوي وقائمة المنتجات


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

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

سنقوم بتصميم هذا الموقف: لقد جئنا إلى أوشان مع ورقة في أيدينا للتسوق.

الاهتمام ، والسؤال الأول: كيفية نموذج؟

الإدخال: معلومات حول المنتجات المراد شراؤها والكمية المطلوبة.

للراحة ، يمكننا أن نفكر في النشرة باعتبارها ناقلات عدد صحيح غير سالب y inZn+ .

كمتغيرات ، نأخذ ، على التوالي ، ناقل عدد صحيح غير سالب x فيZn+ - كم وما هي المنتجات التي سنشتريها في النهاية (حلنا).

النقطة صغيرة - خذ نوعًا من الوظيفة الموضوعية f(x،y) ، والتي تقول كم ارتكبنا خطأ في اختيار المنتجات.

اعتمادًا على السياق ، قد يتغير نوع الوظيفة ، ولكن هناك بعض المتطلبات الأساسية لذلك:

  • وظيفة f(x،y) يجب أن يكون الحد الأدنى x= arg minx inRnf(x،y)=y (وهذا هو ، على النحو الأمثل سنشتري بالضبط ما هو مكتوب في النشرة)
  • وظيفة f(x،y) يجب أن يكون محدب في x (ويفضل السلس) - أن تكون قادرة على حساب فعال دقيقة .

وبالتالي ، نحصل على المشكلة:

minx inRnf(x،y)



تخيل الآن أن الورقة ظلت في المنزل ...

لذلك ، مع ملاحظة واحدة ، وصلنا إلى عالم المهام مع عدم اليقين.

فماذا تفعل إذا في هذه المهمة minx inRnf(x،y) غير معروف لنا ذ ؟

الجواب ، مرة أخرى ، يعتمد على السياق.

الاستوكاستك الأمثل

يتضمن الاستوكاستك الأمثل (عادة)

  • حالة عدم اليقين في البيانات ذات طبيعة عشوائية. معرفة كاملة للتوزيع الاحتمالي لقيم المعلمة غير القطعية
  • القيود بما في ذلك عدم اليقين لينة

في مثالنا ، إذا قمنا بتصميمها باستخدام التحسين العشوائي ، فسنقول

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

هذا سيقودنا إلى هذه المهمة:

 minx inRnEy[f(x،y)+ psi(y،z)]s.t.x+z geqy



لاحظ أنه في هذه المهمة ، نتخذ قرارات فعلية مرتين: أولاً ، القرار الرئيسي للشراء في أوشان ، الذي نتحمل المسؤولية عنه x ، ثم "تصحيح الخطأ" مع z .

المشاكل الرئيسية في هذا النهج هي:

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

التحسين عبر الإنترنت

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

في سياق مثال لعبة لدينا ، فإننا:

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

تحسين قوي

التحسين القوي هو امتداد منطقي لفكرة حل minimax.

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

علاوة على ذلك ، أريد أن يتم دفع اللغز إلى محلل منتظم - وهم لا يفهمون القيود "لأي تنفيذ لمتغير عشوائي" (إذا لم يكن هناك عدد محدد من هذه التطبيقات).

في مشكلة المنشور ، يجب اتخاذ القرار هنا والآن وتبقى سارية تحت أي ظرف من الظروف:

 minx inRn،t inRts.t.f(x،y) leqt quad forallyx geqy quad forally



من الواضح أنه حتى في مثال اللعب هذا ، إذا كنت لا تحتاج إلى شيء منه ذ ، ثم لا يوجد حل له معنى.

إذا كيف يمكنك التعامل مع هذه المهام؟

بناء نسخة قوية من المهمة باستخدام مثال مهمة LP


النظر في مشكلة التحسين الخطي مع عدم اليقين:

 minx inRncTx+ds.t.Ax leqb



المعلمات  تبدأpmatrixcT،dA،b endpmatrix كانت مستمدة من البيانات وتشمل عدم اليقين.

الافتراض 1: العديد من القيم (التطبيقات)  تبدأpmatrixcT،dA،b endpmatrix يمكن أن تكون معلمة ، أي هناك مثل هذا  تبدأpmatrixcT0،d0A0،b0 endpmatrix، startpmatrixcT1،d1A1،b1 endpmatrix، dots، startpmatrixcTk،dkAk،bk endpmatrix أن أي تنفيذ البيانات  تبدأpmatrixcT،dA،b endpmatrix يكمن في المجموعة:

\ تبدأ {pmatrix} c ^ T ، d \\ A ، b \ end {pmatrix} \ in U = \ left \ {\ تبدأ {pmatrix} c_0 ^ T ، d_0 \\ A_0 ، b_0 \ end {pmatrix} + \ sum_ {i = 1} ^ k \ zeta_i \ تبدأ {pmatrix} c_i ^ T ، d_i \\ A_i ، b_i \ end {pmatrix} | \ quad \ zeta \ في Q \ subset R ^ k \ right \}



هنا  تبدأpmatrixcT0،d0A0،b0 endpmatrix تسمى البيانات "الاسمية" ، و  تبدأpmatrixcTi،diAi،bi endpmatrix quad(1 leqi leqk) - "التحولات".

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

  1. جمع البيانات التاريخية حول العائد من الأمن: rti= fracStiSt1iSt1i اين Sti هو سعر الأصل i في الوقت t .
  2. العثور على متوسط ​​الغلة التجريبية على الأوراق المالية  hatri= frac1T sumTt=1rti ومصفوفة التجريبية من العائد التغاير  Sigma= |cov(ri،rj) |i،j
  3. حل مشكلة التحسين

     maxx inRn+xT hatrst frac12xT Sigmax leq sigma sumni=1xi leq1


حل المشكلة هو التوزيع الأمثل (حصة) رأس المال في الأوراق المالية.

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

في سياق البارامترات ص بالضبط  hatr بمثابة البيانات "الاسمية".


نحن نعلم بالفعل أنه يمكن إزالة جميع حالات عدم اليقين في المشكلة في الحدود. دعونا نفعل ذلك.

نحن نواجه المشكلة

 minx inRn،t inRtstcTx+d leqt، quad forall تبدأpmatrixcT،d endpmatrix inUAx leqb، quad forall تبدأpmatrixA،b endpmatrix inU



نسخة قوية من المهمة


لقد حان الوقت لواحدة من أروع الحيل في التحسين القوي - كيفية الانتقال من عدد لا حصر له من القيود إلى مجموعة محدودة من القيود الجيدة.

لتبدأ ، والنظر في مثال بسيط عندما

Q = \ {\ zeta \ in R ^ k | \ | \ zeta \ | _2 \ leq 1 \}



جميع القيود في النظام

cTx+d leqt، quad forall تبدأpmatrixcT،d endpmatrix inUAx leqb، quad forall تبدأpmatrixA،b endpmatrix inU


نفس النوع - انها مجرد عدم المساواة الخطية. تعلم كيفية العمل مع واحد - تعلم كيفية العمل مع الجميع.

لذلك ، فإننا نعتبر تقييدًا واحدًا لنوع عدم المساواة:

a ^ Tx \ leq b \ quad \ forall (a، b) \ in U = \ {(a_0، b_0) + \ sum_ {i = 1} ^ k \ zeta_i \ cdot (a_i، b_i) | \ quad \ zeta \ في Q \} \\ (a_0 + \ sum_ {i = 1} ^ k \ zeta_i a_i) ^ Tx \ leq b_0 + \ sum_ {i = 1} ^ k \ zeta_i b_i \ quad \ forall \ zeta \ in Q \\ \ sum_ {i = 1} ^ k \ zeta_i \ cdot (a_i ^ T x - b_i) \ leq b_0 - a_0 ^ Tx \ quad \ forall \ zeta \ in Q \\ \ max _ {\ zeta \ في Q} \ sum_ {i = 1} ^ k \ zeta_i \ cdot (a_i ^ T x - b_i) \ leq b_0 - a_0 ^ Tx



اسمحوا لي أن أشرح ما حدث.

أولاً ، نقلنا جميع الأجزاء مع عدم اليقين إلى الجانب الأيسر من عدم المساواة.  زيتا .
بعد ذلك ، نظرنا إلى أسوأ الحالات (لكل منها) x هو له).
نتيجة لذلك ، حصلنا على السجل التالي:

g(x)=max zeta inQf(x، zeta) leqb0aT0x

.

والخطوة التالية هي لكتابة وظيفة واضحة g(x) . للقيام بذلك ، يكفي حل مشكلة التحسين بواسطة  زيتا واستبدل الأمثل  زيتا :

 max | zeta |2 leq1 sumki=1 zetai(aTixbi)= sqrt sumki=1(aTixbi)2


مما يؤدي إلى عدم المساواة:

 sqrt sumki=1(aTixbi)2+aT0x leqb0



لاحظ أن عدم المساواة الناتج هو محدب وأي x إرضائه يرضي الأصلي aTx leqb لأي تنفيذ (a،b) inU ...

القيد  sqrt sumki=1(aTixbi)2+aT0x leqb0 دعا نسخة قوية من القيد aTx leqb quad forall(a،b) inU .

هذا هو واحد من workhorses الرئيسية في التحسين القوي - تقريب قيود الاحتمال من قبل مجموعة محدودة من القيود المحدبة.

ماذا تفعل مع القيود (غير الخطية) المعقدة؟

بناء إصدارات قوية من القيود باستخدام الازدواجية المخروطية


يمكن تمثيل الكثير من القيود غير الخطية القياسية في شكل مخروطي (أي في النموذج الفأس $ + b \ في K $ اين K هو بعض مخروط محدب مغلق):

  • غير سلبية X geq0 quad leftrightarrow quadx inRn+
  • القيود المعيارية \ | x \ | _p \ leq p \ quad \ leftrightarrow \ quad \ تبدأ {pmatrix} x \\ p \ end {pmatrix} \ in K_p ^ n = \ left \ {(x، t) \ in R ^ n \ الأوقات R_ + | \ quad \ | x \ | _p \ leq t \ right \}
  • القيود على الدقة الايجابية للمصفوفة x1F1+ dotsxnFn+G succeq0

العودة إلى قيود قوية.

نفترض أن مشكلة التحسين فيما يتعلق  زيتا تمكنت من أن تخفض إلى شكل مخروطي

 max zeta sumki=1 zetai(aTixbi)s.tC zeta+d inK



نحن نبني المزدوج لهذه المشكلة.

منذ بعض الوقت قمت بنشر منشور حول الازدواجية المخروطية بالضبط من أجل تكريس القليل من الاهتمام للتقنية نفسها في هذا المنشور.

 min lambda lambdaTdstCT lambda+ startpmatrixaT1xb1 dotsaTkxbk endpmatrix=0k lambda inK



الآن الأمر متروك للشيء الصغير - نظرية الازدواجية الضعيفة:

\ max _ {[\ zeta: \ quad C \ zeta + d \ in K]} \ sum_ {i = 1} ^ k \ zeta_i (a_i ^ Tx-b_i) \ leq \ min _ {\ lambda \ in G} \ lambda ^ Td \\ حيث \\ G = \ left \ {\ lambda | \ quad C ^ T \ lambda + \ start {pmatrix} a_1 ^ Tx - b_1 \\ \ dots \\ a_k ^ Tx - b_k \ end {pmatrix} = 0_k؛ \ quad \ lambda \ in K ^ * \ right \}



لذلك ، كتقريب قوي من القيد الأولي aTx leqb، quad(a،b) inU تقييد يمكن استخدامها

\ lambda ^ Td \ leq b_0 - a_0 ^ Tx \\ G = \ left \ {\ lambda | \ quad C ^ T \ lambda + \ start {pmatrix} a_1 ^ Tx - b_1 \\ \ dots \\ a_k ^ Tx - b_k \ end {pmatrix} = 0_k؛ \ quad \ lambda \ in K ^ * \ right \}


اين  lambda نفس المتغير x .

لذلك قمنا ببناء قيد قوي لعدم المساواة الأصلي.

الخاتمة


درسنا تقنية تقريب القيود (العشوائية) السيئة من قبل مجموعة من تلك محدبة جيدة. قد يكون ذلك مفيدًا ، على سبيل المثال ، إذا:

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

Source: https://habr.com/ru/post/ar436342/


All Articles