برمجة مختلفة


مع أربعة معلمات ، يمكنني أن أسأل فيل ، ومع خمسة يمكنني أن أجعله يحرك جذعه.
- جون فون نيومان

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


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


بعد ذلك ، نقلب لوحة قماشية تحتوي على نص غير مهم ، ونريد أن نعرف ما هو التمايز التلقائي ، وحتى نشره من المنجنيق!


القوة الغاشمة مع الفوائد


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


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


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


هيكل الترميز ، مسترجع


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


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



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


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


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


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


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


إذن ما هي البرمجة المتباينة؟


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


قضايا الإدارة المختلفة


بعد ذلك ، نظهر أن التباين يمكن أن يحقق بعض مهام الإدارة البسيطة ولكن الكلاسيكية ، والتي نستخدم فيها عادةً Reinforcement Learning (RL) كمربع أسود. لا تكشف النماذج المختلفة (نماذج ∂P) عن استراتيجيات تحكم أكثر فاعلية فحسب ، بل تتعلم أيضًا العديد من أوامر الحجم بشكل أسرع. الرمز متاح للدراسة - في معظم الحالات ، يتعلم في بضع ثوان على أي كمبيوتر محمول.


اتبع التدرج


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



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


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


 # what you did in school gradient(x -> 3x^2 + 2x + 1, 5) # (32,) # something a little more advanced gradient((wind, angle, weight) -> Trebuchet.shoot(wind, angle, weight), -2, 45, 200) # (4.02, -0.99, 0.051) 

رمي الاشياء


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



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



بعد حوالي خمس دقائق من التدريب (على نفس المعالج الأساسي لجهاز الكمبيوتر المحمول) ، يبدو الأمر كما يلي:



إذا كنت تريد التأثير على المسار ، فقم بزيادة سرعة الرياح:



ينحرف بنسبة 16 سم ، أو حوالي 0.3 ٪. ماذا عن استهداف trebuchet مباشرة؟ من السهل القيام بذلك مع النسب التدرج ، بالنظر إلى أن لدينا التدرجات. ومع ذلك ، هذه عملية تكرارية بطيئة تستغرق حوالي 100 مللي ثانية في كل مرة. على العكس من ذلك ، يستغرق تشغيل الشبكة العصبية 5 μs (عشرون ألف مرة أسرع) مع فقدان طفيف للدقة. هذه الخدعة ، التي تسمى "انعكاس الدالة التقريبية من خلال التدرجات" ، شائعة جدًا ويمكن استخدامها ليس فقط مع الأنظمة الديناميكية ، ولكن أيضًا مع خوارزمية نقل النمط السريعة .


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


عربة ، يجتمع القطب


هناك تحد إداري أكثر قابلية للتمييز يتمثل في CartPole ، "عالم الترحيب " لتعزيز التعلم. يكمن التحدي في معرفة كيفية تحقيق التوازن بين العمود الرأسي عن طريق دفع قاعدته إلى اليسار أو اليمين. يشبه إعدادنا بشكل عام حالة Trebuchet: إن تطبيق Julia يتيح لنا أن ننظر مباشرة في المكافآت التي تتلقاها البيئة على أنها خسائر. usP يتيح لنا التبديل بسهولة من نموذج بسيط إلى نموذج RL.



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


f (x) = \ left \ {\ start {matrix} \، 1، \، x \ geqslant0 \\ -1، \، x <0 \ end {matrix} \ right.



بمعنى آخر ، نجعل التدرج يتصرف كما لو وكانت وظيفة مماثلة. بالنظر إلى مقدار الفكرة الرياضية للتمييز المستخدمة بالفعل في ML ، قد لا يكون من المستغرب أن نخدع هنا ببساطة ؛ للتدريب ، كل ما نحتاج إليه هو إشارة لإعلامنا بالسير العشوائي الزائف حول مساحة المعلمة ، والباقي هو التفاصيل. النتائج تتحدث عن نفسها. في الحالات التي تحتاج إلى تدريب أساليب RL على مئات الحلقات قبل حل المشكلة ، تحتاج نماذج ∂P فقط إلى حوالي 5 حلقات للفوز في النهاية.



البندول و Backprop عبر الزمن


أحد الأهداف المهمة لـ RL (تعلم التعزيز) هو التعامل مع الأجر المؤجل عندما لا يساعدنا الإجراء في تحسين نتائج عدة خطوات متتالية. عندما تكون البيئة مختلفة ، تتيح لك ∂P تدريب العامل على الانتشار الخلفي في الوقت المناسب ، كما هو الحال في شبكة متكررة! في هذه الحالة ، تصبح حالة البيئة "حالة مخفية" تتغير بين خطوات الوقت.



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



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



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


الخريطة ليست الإقليم


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


المقطع الختامي


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


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


مراجع



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


All Articles