Tuesday 2 January 2018

الانتقال المتوسط - العصبية - شبكة


جون بولينارياس دليل خطوة بخطوة لتنفيذ الشبكة العصبية في C من جون A. بوليناريا من كلية علوم الحاسب الآلي من جامعة برمنغهام، المملكة المتحدة. تحتوي هذه الوثيقة على دليل خطوة بخطوة لتنفيذ شبكة عصبية بسيطة في C. وهو يهدف أساسا للطلاب الذين يرغبون (أو قيل ل) دمج عنصر التعلم الشبكة العصبية في نظام أكبر أنها بناء. ومن الواضح أن هناك العديد من أنواع الشبكات العصبية التي يمكن للمرء أن ينظر في استخدامها - وهنا سوف أركز على نوع واحد مشترك ومفيد بشكل خاص، وهي شبكة بث ثلاث طبقات للأمام إلى الأمام (طبقة متعددة). هذا النوع من الشبكة سيكون مفيدا عندما يكون لدينا مجموعة من ناقلات الإدخال ومجموعة المقابلة من ناقلات الإخراج، ونظامنا يجب أن تنتج الناتج المناسب لكل المدخلات التي تعطى. وبطبيعة الحال، إذا كان لدينا بالفعل مجموعة خالية من الضوضاء خالية من ناقلات المدخلات والمخرجات، ثم جدول بحث بسيط يكفي. ومع ذلك، إذا أردنا تعميم النظام. أي إنتاج مخرجات مناسبة للمدخلات التي لم يسبق لها مثيل من قبل، ثم الشبكة العصبية التي تعلمت كيفية رسم الخرائط بين المدخلات والمخرجات المعروفة (أي مجموعة التدريب لدينا) غالبا ما تقوم بعمل جيد جدا للمدخلات الجديدة أيضا. سوف أفترض أن القارئ هو بالفعل على دراية C، وللمزيد من التفاصيل حول الشبكات العصبية بشكل عام، ببساطة الرجوع إلى القارئ إلى مجموعة الأخبار comp. ai. neural-نيتس والشبكات العصبية المرتبطة التعليمات. لذلك، دعونا نبدأ. الخلايا العصبية واحدة (أي وحدة المعالجة) يأخذ مجموع المدخلات في وتنتج تفعيل الإخراج خارج. سأأخذ هذا ليكون الدالة السيني على الرغم من وظائف التنشيط الأخرى غالبا ما تستخدم (على سبيل المثال الخطي أو الزائدي الظل). وهذا له تأثير سحق مجموعة لانهائية من في إلى مجموعة 0 إلى 1. كما أن لديها خاصية مريحة أن مشتق يأخذ شكل بسيط بشكل خاص سيغموادريفاتيف سيغمواد (1.0 - سيغمود) عادة، فإن المدخلات في إلى الخلايا العصبية معين يكون والمبلغ المرجح من تفعيل الإخراج التغذية من عدد من الخلايا العصبية الأخرى. فمن المريح أن نفكر في التنشيط التي تتدفق من خلال طبقات من الخلايا العصبية. لذلك، إذا كان هناك NumUnits1 الخلايا العصبية في الطبقة 1، والتفعيل الكلي المتدفقة إلى طبقة الخلايا العصبية 2 لدينا هو مجرد مجموع على Layer1OutiWeighti. حيث ويتي هو قوة الوزن للاتصال بين وحدة ط في طبقة 1 ووحدتنا في طبقة 2. كل الخلايا العصبية سيكون لها أيضا التحيز، أو يستريح الدولة، التي تضاف إلى مجموع المدخلات، وأنه من المريح أن ندعو هذا الوزن 0 . يمكننا ثم كتابةLayer2In Weight0 تبدأ مع التحيز ل (i 1 ط لوت NumUnits1 ط) Layer2In Layer1Outi ويتي إضافة في المساهمات المرجح من طبقة 1 Layer2Out 1.0 (1.0 إكس (-Layer2In)) حساب السيني لإعطاء تفعيل وعادة ما يكون طبقة 2 وحدات كثيرة كما أنه من المناسب كتابة الأوزان بين الوحدة i في الطبقة 1 والوحدة j في الطبقة 2 كمصفوفة وتيج. وبالتالي للحصول على إخراج وحدة j في طبقة 2 لدينا Layer2Inj Weight0j ل (i 1 i لوت NumUnits1 ط) Layer2Inj Layer1Outi ويتيج Layer2Outj 1.0 (1.0 إكس (-Layer2Inj)) تذكر أنه في C مؤشرات الصفيف تبدأ من الصفر، وليس واحد ، لذلك نحن نعلن متغيراتنا أسدوبل Layer1OutNumUnits11 ضعف Layer2InNumUnits21 ضعف Layer2OutNumUnits21 ضعف WeightNumUnits11NumUnits21 (أو، على الأرجح، تعلن المؤشرات واستخدام كالوك أو مالوك لتخصيص الذاكرة). بطبيعة الحال، نحن بحاجة إلى حلقة أخرى للحصول على جميع النواتج 2 الطبقة (j 1 j لوت NumUnits2 j) Layer2Inj الوزن0j ل (i 1 i لوت NumUnits1 ط) لاير 2Inj Layer1Outi ويتيج Layer2Outj 1.0 (1.0 إكس (-Layer2Inj)) ثلاث شبكات طبقة ضرورية وكافية لمعظم الأغراض، لذلك لدينا طبقة 2 النواتج تغذية في طبقة ثالثة في نفس الطريقة كما أعلاه يمكن أن تبدأ التعليمات البرمجية لتصبح مربكة في هذه المرحلة - أجد أن الحفاظ على مؤشر منفصل ط، ي، ك لكل طبقة يساعد، كما يفعل تدوين بديهية للتمييز بين طبقات مختلفة من الأوزان Weight12 و Weight23. ولأسباب واضحة، بالنسبة لشبكات الطبقة الثلاث، يكون من التقليدي استدعاء الطبقة 1 طبقة الإدخال وطبقة الطبقة المخفية 2 والطبقة 3 طبقة المخرجات. شبكتنا وبالتالي يأخذ على شكل مألوف أن نستخدمها لبقية هذه الوثيقة أيضا، لحفظ الحصول على كل في S و أوت الخلط، يمكننا كتابة لايرنين كما سومن. وبالتالي يمكن كتابة التعليمات البرمجية لدينا عموما سيكون لدينا مجموعة كاملة من أنماط التدريب نومباترن، أي أزواج من المدخلات والمخرجات المستهدفة الهدف، وصفت من قبل مؤشر ص. وتتعلم الشبكة عن طريق التقليل إلى أدنى حد من بعض الخطأ في مخرجات الشبكات الفعلية مقارنة بالمخرجات المستهدفة. على سبيل المثال، سيعطى خطأ التربيع الإجمالي على جميع وحدات الإخراج k وجميع أنماط التدريب p بواسطة الخطأ 0.0 (p 1 p لوت نومباترن p) بالنسبة إلى k (k 1 k لوت نوموتبوت k) خطأ 0.5 (تارجيتك - أوتبوتك) (تارجيتك - أوتبوتيك) (يتم تضمين عامل 0.5 تقليديا لتبسيط الجبر في اشتقاق خوارزمية التعلم.) إذا قمنا بإدراج رمز أعلاه لحساب مخرجات الشبكة في حلقة p من هذا، ونحن في نهاية المطاف مع إجازة ترك القارئ للاستغناء مع أي مؤشرات لا يحتاجون إليها لأغراض نظامهم الخاص (على سبيل المثال مؤشرات سومه و سومو). وتتمثل المرحلة التالية في ضبط الأوزان تكرارا لتقليل أخطاء الشبكة. وهناك طريقة قياسية للقيام بذلك هي عن طريق الانحدار النسب على وظيفة الخطأ. يمكننا حساب مقدار الخطأ الذي يتم تغييره من خلال تغيير طفيف في كل وزن (أي حساب المشتقات الجزئية d خطأ d الوزن) وتحويل الأوزان بمقدار صغير في الاتجاه الذي يقلل من الخطأ. الأدب هو الكامل من الاختلافات على هذا النهج العام - سأبدأ مع معيار على الخط العودة مع خوارزمية الزخم. ليس هذا هو المكان المناسب للذهاب من خلال جميع الرياضيات، ولكن بالنسبة للمبلغ مربع الخطأ أعلاه يمكننا حساب وتطبيق واحد التكرار (أو عصر) من التغييرات المطلوبة الوزن الدلتاويتيه ودلتاويثو باستخدام خطأ 0.0 ل (p 1 p لوت نومباترن p) (j 1 j لوت نومهيدن j) سومهبي WTHH0j ل (i 1 i لوت نومينبوت i) سومهب إنبوتبي ويثيهيج هيدنبي 1.0 (1.0 إكس إكس (-SumHpj)) (k 1 k لوت نوموتبوت k) سومكك الوزن HO0k ل (j 1 j لوت نومهيدن j) سوموبك هيدنبي ويثوجك أوتبوتك 1.0 (1.0 إكس) - SumOpk) خطأ 0.5 (تارجيتك - أوتبوتك) (تارجيتك - أوتبوتك) دلتاوك (تارجيتك - أوتبوتك) أوتبوتك (1.0 - أوتبرك) ل (j 1 j لوت نومهيدن j) سومدوج 0.0 ل (k 1 k لوت نوموتبوت k) سومدوج ويثوجك الدلتاوك الدلتاج سومدوج هيدنبي (1.0 - هيدنبي) ل (j 1 j لوت نومهيدن j) الدلتاويتيه 0j إيتا الدلتا ألفا دلتاWeHH0j الوزنIH0j الدلتاويهIH0j ل (i 1 i لوت نومينبوت ط) دلتاويتيهيج إيتا إنبوتبي دلتا دلتا ألفا ويهيج ويتهيج دلتاالبحيرةالهيج (k 1 k لوت نومبوتب k) دلتاWeHO0k و دلتا دلتا ألفا دلتاWeHH0k الوزن HO0k دلتاWeHHO0K ل (j 1 j لوت نومهيدن j) دلتا ويهوجك و هيدنبي دلتا دلتا ألفا ويهوجك ويثوجك دلتاويثوجك (هناك بوضوح الكثير من نطاق لإعادة ترتيب، والجمع بين وتبسيط الحلقات هنا - سأترك ذلك للقارئ أن تفعل مرة واحدة فهموا ما أقسام رمز منفصلة تقوم به.) ويتغير الوزن دلتاويتيه ودلتاويثو كل تتكون من عنصرين. أولا، المكون إيتا هو إسهام الانحدار النسب. ثانيا، المكون ألفا هو مصطلح الزخم الذي يحافظ بشكل فعال على متوسط ​​متحرك للمساهمة في تغيير نسب الانحدار، وبالتالي ينعم التغييرات الإجمالية للوزن. تحديد القيم الجيدة لمعلمات التعلم إيتا و ألفا عادة ما تكون مسألة من التجربة والخطأ. يجب أن يكون ألفا بالتأكيد في نطاق 0 إلى 1، وقيمة غير صفرية عادة ما تسرع التعلم. العثور على قيمة جيدة ل إيتا سوف تعتمد على المشكلة، وأيضا على القيمة التي تم اختيارها ألفا. إذا تم تعيينه منخفضة جدا، فإن التدريب سيكون بطيئا دون داع. وجوده كبير جدا سوف يسبب تغيرات الوزن للتأرجح بعنف، ويمكن أن تبطئ أو حتى منع التعلم تماما. (أنا عادة تبدأ من خلال محاولة إتا 0.1 واستكشاف آثار مضاعفة مرارا وتكرارا أو خفضه.) وسوف تتألف عملية التدريب كاملة من تكرار التحديثات الوزن أعلاه لعدد من الحقائب (باستخدام آخر لحلقة) حتى يتم تلبية بعض كريريون خطأ، على سبيل المثال الخطأ يقع تحت بعض عدد صغير المختار. (لاحظ أنه مع سيغمويدس على المخرجات، يمكن أن يصل الخطأ فقط بالضبط صفر إذا كانت الأوزان تصل إلى اللانهاية ملاحظة أيضا أنه في بعض الأحيان التدريب يمكن أن تتعثر في الحد الأدنى المحلي من وظيفة الخطأ وأبدا في أي مكان الحد الأدنى الفعلي.) لذلك، ونحن بحاجة إلى التفاف كتلة الأخيرة من التعليمات البرمجية في شيء مثل ل (عصر 1 عصر لوت لارجينومبر عصر) أعلاه كود لواحدة إذا كسر (خطأ لوت سمالنومبر) إذا تم تقديم أنماط التدريب في نفس النظام المنظم خلال كل عصر، فمن ممكن لتذبذب الوزن أن يحدث. ولذلك فمن الجيد عموما استخدام ترتيب عشوائي جديد لأنماط التدريب لكل عصر. إذا وضعنا مؤشرات نمط التدريب نومباترن p في ترتيب عشوائي في رانبات مجموعة. ثم هو مجرد مسألة استبدال حلقة نمط التدريب لدينا توليد رانبات مجموعة عشوائية ليست بهذه البساطة جدا، ولكن التعليمات البرمجية التالية سوف تفعل هذه المهمة بطبيعة الحال، يجب على المرء أن يحدد بعض الأوزان الشبكة الأولية لبدء عملية التعلم. بدء جميع الأوزان في الصفر عموما ليست فكرة جيدة، حيث أن هذا غالبا ما يكون الحد الأدنى المحلي من وظيفة الخطأ. فمن الطبيعي أن تهيئة جميع الأوزان مع القيم العشوائية الصغيرة. إذا راندو () المفضلة لديك وظيفة مولد رقم عشوائي أن يعود توزيع مسطح من أرقام عشوائية في نطاق 0-1، و سمولوت هو الحد الأقصى المطلق للأوزان الأولية الخاصة بك، ثم قسم مناسب من رمز التهيئة الوزن سيكون ملاحظة، أنه من فكرة جيدة لتعيين كل الدلتاوي الأولي إلى الصفر في نفس الوقت. لدينا الآن ما يكفي من التعليمات البرمجية لوضع برنامج الشبكة العصبية العمل. لقد قطع ولصق رمز أعلاه في ملف nn. c (الذي متصفح يجب أن تسمح لك لحفظ في مساحة الملفات الخاصة بك). لقد أضفت معيار يتضمن، أعلن جميع المتغيرات، الثابت ترميز بيانات التدريب شور القياسية والقيم ل إيتا. ألفا و سمولوت. تعريف راندو بسيطة (). وأضاف بعض البيانات المطبوعة لإظهار ما تقوم به الشبكة، وملفوفة الكثير كله في الرئيسي (). يجب أن يتم تجميع الملف وتشغيله بالطريقة العادية (على سبيل المثال باستخدام أوامر أونيكس سيسي nn. c - O - lm - o ن و ن). لقد تركت الكثير من القارئ للقيام به لتحويل هذا إلى برنامج مفيد، على سبيل المثال: قراءة بيانات التدريب من ملف السماح المعلمات (إيتا ألفا. سمالوت نومهيدن الخ) أن تتنوع خلال وقت التشغيل يتم تحديد أحجام مجموعة مناسبة وتخصيصها الذاكرة أثناء التشغيل حفظ الأوزان إلى ملف، وقراءتها مرة أخرى في مرة أخرى رسم الأخطاء، وتنشيط الإخراج، وما إلى ذلك أثناء التدريب وهناك أيضا العديد من الاختلافات الشبكة التي يمكن تنفيذها، على سبيل المثال: التعلم دفعة، (الخطي، تانه، الخ) ريال مدريد (بدلا من ثنائي) النواتج قيمة تتطلب وظائف الانتاج الخطي أوتبوتسك سوموك دلتاوك تارجيتك - أوتبوتك كروس-إنتروبي وظيفة التكلفة بدلا من سوم تربيع خطأ خطأ - (تارجيتك سجل (أوتبوتك) 1.0 - تارجيتك) سجل (1.0 - أوتبرك)) دلتاوك تارجيتك - أوتبوتك مجموعات التدريب والتحقق والاختبار منفصلة تسوس الوزن تنظيم ولكن من هنا، أنت وحدك. آمل أن تجد هذه الصفحة مفيدة. هذه الصفحة هو الحفاظ على جون بوليناريا. آخر تحديث في 18 نوفمبر 2002.The العلماء والمهندسين دليل لمعالجة الإشارات الرقمية التي كتبها ستيفن W. سميث، دكتوراة. الفصل 26: الشبكات العصبية (وأكثر) بنية الشبكة العصبية البشر والحيوانات الأخرى معالجة المعلومات مع الشبكات العصبية. وتتكون هذه من تريليونات الخلايا العصبية (الخلايا العصبية) تبادل نبضات كهربائية موجزة تسمى إمكانات العمل. خوارزميات الكمبيوتر التي تحاكي هذه الهياكل البيولوجية تسمى رسميا الشبكات العصبية الاصطناعية لتمييزها عن الأشياء اسفنجي داخل الحيوانات. ومع ذلك، فإن معظم العلماء والمهندسين ليست هذه الرسمية وتستخدم مصطلح الشبكة العصبية لتشمل كل من النظم البيولوجية وغير البيولوجية. ويرجع البحث في الشبكة العصبية إلى رغبتين: الحصول على فهم أفضل للدماغ البشري، وتطوير أجهزة الكمبيوتر التي يمكن أن تتعامل مع المشاكل المجردة وضعف التعريف. على سبيل المثال، تواجه أجهزة الكمبيوتر التقليدية صعوبة في فهم الكلام والتعرف على وجوه الشعوب. في المقابل، والبشر القيام بشكل جيد للغاية في هذه المهام. وقد حاولت العديد من هياكل الشبكة العصبية المختلفة، وبعضها على أساس تقليد ما يرى عالم الأحياء تحت المجهر، وبعضها يقوم على تحليل أكثر الرياضية للمشكلة. ويظهر الشكل الأكثر استخداما في الشكل 26-5. وتتكون هذه الشبكة العصبية في ثلاث طبقات، تسمى طبقة الإدخال، طبقة مخفية، وطبقة الإخراج. تتكون كل طبقة من عقد أو أكثر. ممثلة في هذا الرسم البياني من قبل الدوائر الصغيرة. خطوط بين العقد تشير إلى تدفق المعلومات من عقدة واحدة إلى أخرى. في هذا النوع الخاص من الشبكة العصبية، وتتدفق المعلومات فقط من المدخلات إلى الإخراج (وهذا هو، من اليسار إلى اليمين). أنواع أخرى من الشبكات العصبية لديها اتصالات أكثر تعقيدا، مثل مسارات ردود الفعل. عقد طبقة الإدخال سلبي. وهذا يعني أنها لا تعدل البيانات. ويتلقون قيمة واحدة على مدخالتهم، ويكررون القيمة إلى مخرجاتهم المتعددة. وبالمقارنة، فإن العقد من الطبقة الخفية والمخرجات نشطة. وهذا يعني أنها تعدل البيانات كما هو مبين في الشكل 26-6. المتغيرات: X1 1، X1 2 8230 X1 15 عقد البيانات التي سيتم تقييمها (انظر الشكل 26-5). على سبيل المثال، قد تكون قيم بيكسل من صورة، وعينات من إشارة صوتية، وأسعار سوق الأوراق المالية في الأيام المتعاقبة، وما إلى ذلك. قد تكون أيضا مخرجات بعض الخوارزميات الأخرى، مثل المصنفات في مثال الكشف عن السرطان: والسطوع، حافة الحدة، وما إلى ذلك يتم تكرار كل قيمة من طبقة الإدخال وإرسالها إلى جميع العقد المخفية. وهذا ما يسمى بنية مترابطة تماما. وكما هو مبين في الشكل 26-6، تضرب القيم التي تدخل عقدة مخفية بالأوزان. مجموعة من الأرقام المحددة سلفا المخزنة في البرنامج. ثم تضاف المدخلات المرجحة لإنتاج رقم واحد. يظهر هذا في الرسم البياني بالرمز، المجموع. قبل مغادرة العقدة، يتم تمرير هذا الرقم من خلال وظيفة رياضية غير الخطية تسمى السيني. هذا هو منحنى على شكل s الذي يحد من إنتاج العقد. وهذا هو، المدخلات إلى السيني هو قيمة بين - ININ و إنفين، في حين أن انتاجها يمكن أن يكون إلا بين 0 و 1. النواتج من الطبقة المخفية ممثلة في الرسم البياني التدفق (الشكل 26-5) من المتغيرات: X2 1، X2 2، X2 3 و X2 4. كما هو الحال من قبل، يتم تكرار كل من هذه القيم وتطبيقها على الطبقة التالية. وتجمع العقد النشطة لطبقة المخرجات وتعديل البيانات لإنتاج قيمتي إخراج هذه الشبكة، X3 1 و X3 2. الشبكات العصبية يمكن أن يكون لها أي عدد من الطبقات، وأي عدد من العقد لكل طبقة. تستخدم معظم التطبيقات بنية الطبقة الثلاث بحد أقصى بضع مئات من عقد الإدخال. الطبقة المخفية عادة حوالي 10 حجم طبقة الإدخال. وفي حالة الكشف عن الهدف، تحتاج طبقة المخرجات إلى عقدة واحدة فقط. ويتم تحديد خرج هذه العقدة لتوفير إشارة موجبة أو سلبية لحضور الأهداف أو غيابها في بيانات الدخل. الجدول 26-1 هو برنامج لتنفيذ مخطط التدفق في الشكل 26-5. النقطة الرئيسية هي أن هذا العمارة بسيط جدا ومعمم جدا. هذا الرسم البياني تدفق نفسه يمكن استخدامها لكثير من المشاكل، بغض النظر عن المراوغات الخاصة بهم. قدرة الشبكة العصبية لتوفير التلاعب البيانات المفيدة يكمن في التحديد السليم للأوزان. هذا هو خروج كبير من معالجة المعلومات التقليدية حيث يتم وصف الحلول في خطوة بخطوة الإجراءات. وكمثال على ذلك، تخيل شبكة عصبية للتعرف على الأشياء في إشارة السونار. لنفترض أن 1000 عينة من الإشارة يتم تخزينها في جهاز كمبيوتر. كيف يحدد الكمبيوتر ما إذا كانت هذه البيانات تمثل غواصة أو حوت أو جبل تحت سطح البحر أو لا شيء على الإطلاق. دسب التقليدية سوف تتعامل مع هذه المشكلة مع الرياضيات والخوارزميات، مثل الارتباط وتحليل الطيف الترددي. مع الشبكة العصبية، يتم تغذية 1000 عينة ببساطة في طبقة الإدخال، مما أدى إلى قيم ظهرت من طبقة الانتاج. عن طريق تحديد الأوزان المناسبة، يمكن تكوين الإخراج للإبلاغ عن مجموعة واسعة من المعلومات. على سبيل المثال، قد يكون هناك نواتج ل: الغواصة (يسنو)، الحيتان (يسنو)، الجبل تحت البحر (يسنو)، وما إلى ذلك مع الأوزان الأخرى، قد تصنف النواتج الكائنات على النحو التالي: المعادن أو غير المعدنية، البيولوجية أو غير البيولوجية، العدو أو حليف، وما إلى ذلك لا خوارزميات، لا قواعد، لا إجراءات سوى علاقة بين المدخلات والمخرجات تمليها قيم الأوزان المحددة. الشكل 26-7a يظهر نظرة فاحصة على وظيفة السيني، وصفها رياضيا من خلال المعادلة: الشكل الدقيق للسيني ليست مهمة، إلا أنه عتبة ناعمة. للمقارنة، عتبة بسيطة تنتج قيمة واحد عندما x غ 0، وقيمة صفر عندما س لوت 0. السيني يؤدي نفس وظيفة درس الأساسية، ولكن هو أيضا اختلافات. كما هو مبين في الشكل 26-7b. في حين أن المشتقة لا تستخدم في الرسم البياني التدفق (الشكل 25-5)، بل هو جزء حاسم من العثور على الأوزان المناسبة للاستخدام. المزيد عن هذا قريبا. ميزة السيني هي أن هناك اختصار لحساب قيمة مشتقاته: على سبيل المثال، إذا كان x 0، ثم s (x) 0.5 (حسب المقياس 26-1)، ويتم حساب المشتقة الأولى: s ( x) 0.5 (1 - 0.5) 0.25. هذا ليس مفهوما حاسما، مجرد خدعة لجعل الجبر أقصر. لن تكون الشبكة العصبية أكثر مرونة إذا كان السيني يمكن تعديلها اليسار أو اليمين، مما يجعلها تركز على بعض قيمة أخرى من x 0 الجواب هو نعم، ومعظم الشبكات العصبية تسمح لهذا. هو بسيط جدا لتنفيذ عقدة إضافية تضاف إلى طبقة الإدخال، مع مدخلاتها دائما وجود قيمة واحدة. عندما يتم ضرب هذا في أوزان الطبقة الخفية، فإنه يوفر تحيز (دس تعويض) لكل سيني. وتسمى هذه الإضافة عقدة التحيز. ويتم التعامل مع نفس العقد الأخرى، باستثناء المدخلات المستمرة. ويمكن إجراء الشبكات العصبية دون السيني أو اللاخطية مماثلة للإجابة على هذا، ننظر إلى شبكة من ثلاث طبقات من الشكل 26-5. إذا كانت سيغمويدس غير موجودة، فإن الطبقات الثلاث تنهار في طبقتين فقط. وبعبارة أخرى، يمكن الجمع بين موجزات وأوزان الطبقات الخفية والمخرجات في طبقة واحدة، مما أدى إلى اثنين فقط من طبقة network. The دليل العلماء والمهندسين لمعالجة الإشارات الرقمية التي كتبها ستيفن W. سميث، دكتوراة. الفصل 26: الشبكات العصبية (وأكثر) تدريب الشبكة العصبية يمكن تفسير أفضل تصميم الشبكة العصبية على سبيل المثال. ويبين الشكل 26-8 المشكلة سنهاجم، وتحديد الحروف الفردية في صورة النص. وقد تلقت هذه المهمة التعرف على نمط الكثير من الاهتمام. فمن السهل بما فيه الكفاية أن العديد من النهج تحقيق النجاح الجزئي، ولكن من الصعب بما فيه الكفاية أنه لا توجد حلول مثالية. وقد استندت العديد من المنتجات التجارية الناجحة على هذه المشكلة، مثل: قراءة العناوين على رسائل التوجيه البريدي، إدخال المستند إلى معالجات النصوص، وما إلى ذلك. الخطوة الأولى في تطوير الشبكة العصبية هي إنشاء قاعدة بيانات من الأمثلة. بالنسبة لمشكلة التعرف على النص، يتم ذلك عن طريق طباعة الأحرف الكبيرة 26: A، B، C، D 8230 Y، Z، 50 مرة على ورقة. بعد ذلك، يتم تحويل هذه الرسائل 1300 إلى صورة رقمية باستخدام واحدة من العديد من أجهزة المسح الضوئي المتاحة للحواسيب الشخصية. ثم يتم تقسيم هذه الصورة الرقمية الكبيرة إلى صور صغيرة من 10times10 بكسل، كل تحتوي على حرف واحد. يتم تخزين هذه المعلومات كقاعدة بيانات 1.3 ميغابايت: 1300 صورة 100 بكسل لكل صورة 8 بت لكل بكسل. سوف نستخدم أول 260 صورة في قاعدة البيانات هذه لتدريب الشبكة العصبية (أي تحديد الأوزان)، والباقي لاختبار أدائها. يجب أن تحتوي قاعدة البيانات أيضا على طريقة لتحديد الحرف الوارد في كل صورة. على سبيل المثال، يمكن إضافة بايت إضافية إلى كل صورة 10times10، تحتوي على الأحرف رمز أسي. في مخطط آخر، يمكن أن يشير موقف كل صورة 10times10 في قاعدة البيانات إلى ما هو الحرف. على سبيل المثال، قد تكون الصور من 0 إلى 49 جميعها A، وقد تكون الصور 50-99 كلها B، إلخ. لهذه المظاهرة، سيتم تصميم الشبكة العصبية لمهمة تعسفية: تحديد أي من الصور 10times10 تحتوي على حرف علة. أي A، E، I، O، U. قد لا يكون هذا التطبيق العملي، ولكنه يوضح قدرة الشبكة العصبية على تعلم مشاكل التعرف على الأنماط المجردة جدا. من خلال تضمين عشرة أمثلة من كل حرف في مجموعة التدريب، فإن الشبكة (نأمل) تعلم الملامح الرئيسية التي تميز الهدف من الصور غير المستهدفة. والشبكة العصبية المستخدمة في هذا المثال هي البنية التقليدية الثلاثية الطبقات، المترابطة تماما، كما هو مبين في الأشكال. 26-5 و 26-6. هناك 101 العقد في طبقة الإدخال (100 بكسل القيم بالإضافة إلى عقدة التحيز)، 10 العقد في طبقة مخفية، والعقدة 1 في طبقة الانتاج. عندما يتم تطبيق صورة 100 بكسل لإدخال الشبكة، نريد أن تكون قيمة الإخراج قريبة من واحد إذا كان حرف علة موجودا، وقرب الصفر إذا لم يكن حرف علة موجودا. لا تقلق من أن إشارة الإدخال تم الحصول عليها كمصفوفة ثنائية الأبعاد (10times10)، في حين أن المدخلات إلى الشبكة العصبية هي صفيف واحد الأبعاد. هذا هو فهمك لكيفية ترابط قيم بكسل الشبكة العصبية سوف تجد علاقات خاصة بها. ويعرض الجدول 26-2 البرنامج الرئيسي لحساب الأوزان الشبكية العصبية، مع الجدول 26-3 الذي يحتوي على ثلاثة بروتينات فرعية تسمى من البرنامج الرئيسي. عناصر الصفيف: من X11 إلى X1100، تحمل قيم طبقة الإدخال. وبالإضافة إلى ذلك، X1101 يحمل دائما قيمة 1، وتوفير المدخلات لعقدة التحيز. وترد قيم الإخراج من العقد المخفية في عناصر الصفيف: X21 إلى X210. المتغير، X3، يحتوي على قيمة إخراج الشبكات. وترد الأوزان من طبقة خفية في صفيف، و. ، حيث يحدد المؤشر الأول العقدة المخفية (1 إلى 10)، والمؤشر الثاني هو عقدة طبقة الإدخال (1 إلى 101). تقام أوزان طبقة الإخراج في WO1 إلى WO10. وهذا يجعل ما مجموعه 1020 قيم الوزن التي تحدد كيفية تشغيل الشبكة. الإجراء الأول من البرنامج هو تعيين كل وزن إلى قيمة أولية تعسفية باستخدام مولد رقم عشوائي. كما هو مبين في الخطوط من 190 إلى 240، يتم تعيين قيم الأوزان الخفية للقيم الأولية بين -0.0005 و 0.0005، في حين أن أوزان طبقة الإخراج تتراوح بين -0.5 و 0.5. يتم اختيار هذه النطاقات لتكون نفس ترتيب الحجم الذي يجب أن تكون عليه الأوزان النهائية. ويستند ذلك إلى: (1) مدى القيم في إشارة الدخل، و (2) عدد المدخلات التي يتم جمعها في كل عقدة، و (3) مدى القيم التي ينشط فيها السيني، وهو مدخل يبلغ حوالي -5 لوت x لوت 5، ومخرجات من 0 إلى 1. على سبيل المثال، عندما تضرب 101 مدخلات ذات قيمة نموذجية 100 في القيمة النموذجية للوزن 0.0002، يكون مجموع المنتجات حوالي 2، وهو في المدى النشط من المدخلات سيغمويدس. إذا قمنا بتقييم أداء الشبكة العصبية باستخدام هذه الأوزان العشوائية، فإننا نتوقع أن يكون نفس التخمين العشوائي. خوارزمية التعلم يحسن أداء الشبكة عن طريق تغيير تدريجيا كل وزن في الاتجاه الصحيح. ويسمى هذا الإجراء تكرارية، ويتم التحكم في البرنامج من قبل حلقة فور-نيكست في خطوط 270-400. كل تكرار يجعل الأوزان أكثر كفاءة قليلا في فصل الهدف من الأمثلة غير المستهدفة. وعادة ما يتم تنفيذ حلقة التكرار حتى يتم إجراء أي تحسينات أخرى. في الشبكات العصبية النموذجية، قد يكون هذا في أي مكان من عشرة إلى عشرة آلاف التكرارات، ولكن بضع مئات أمر شائع. هذا المثال ينفذ 800 تكرار. ولكي تعمل هذه الاستراتيجية التكرارية، يجب أن تكون هناك معلمة واحدة تصف مدى جودة أداء النظام حاليا. يخدم المتغير إسوم (لمجموع الخطأ) هذه الوظيفة في البرنامج. الإجراء الأول داخل حلقة التكرار هو تعيين إسوم إلى الصفر (خط 290) بحيث يمكن استخدامه كمجمع. في نهاية كل تكرار، يتم طباعة قيمة إسوم على شاشة الفيديو (الخط 380)، بحيث يمكن للمشغل ضمان أن يتم إحراز تقدم. وسوف تبدأ قيمة إسوم عالية، وتقل تدريجيا مع تدريب الشبكة العصبية على التعرف على الأهداف. ويبين الشكل 26-9 أمثلة على كيفية انخفاض إسوم مع استمرار التكرار. يتم تقييم جميع الصور 260 في مجموعة التدريب خلال كل التكرار، كما تسيطر عليها حلقة فور-نيكست في خطوط 310-360. يستخدم الروتين الفرعي 1000 لاسترداد الصور من قاعدة بيانات الأمثلة. وبما أن هذا ليس شيئا ذا أهمية خاصة هنا، فإننا سوف نصف فقط المعلمات التي تم تمريرها من وإلى هذا الروتين الفرعي. يتم إدخال سوبروتين 1000 مع المعلمة، ليتر، بين 1 و 260. عند العودة، قيم عقدة الإدخال، X11 إلى X1100، تحتوي على قيم بكسل للصورة في قاعدة البيانات المقابلة ل ليتر. قيمة العقدة التحيز، X1101، يتم إرجاعها دائما مع قيمة ثابتة واحدة. سوبروتين 1000 ترجع أيضا معلمة أخرى، كوريكت. يحتوي هذا على قيمة الإخراج المطلوبة للشبكة لهذه الرسالة بالذات. وهذا هو، إذا كانت الرسالة في الصورة هي حرف علة، سيتم إرجاع الصحيح مع قيمة واحدة. إذا كان الحرف في الصورة ليست حرف علة، سيتم إرجاع كوريكت مع قيمة صفر. بعد أن يتم تحميل الصورة التي يتم العمل عليها في X11 خلال X1100، روتين 2000 يمر البيانات من خلال الشبكة العصبية الحالية لإنتاج قيمة عقدة الانتاج، X3. وبعبارة أخرى، الروتين الفرعي 2000 هو نفس البرنامج في الجدول 26-1، باستثناء عدد مختلف من العقد في كل طبقة. يحسب هذا الروتين الفرعي أيضا مدى تحديد الشبكة الحالية الرسالة كهدف أو غير مستهدف. في السطر 2210، يتم حساب المتغير إليت (للخطأ-الأحرف) على أنه الفرق بين قيمة المخرجات التي تم إنشاؤها فعليا، X3 والقيمة المطلوبة، كوريكت. وهذا يجعل قيمة إليت بين -1 و 1. يتم جمع كل القيم 260 ل إليت (الخط 340) لتشكيل إسوم، الخطأ الكلي التربيعي للشبكة لمجموعة التدريب بأكملها. يظهر الخط 2220 خيارا يتم تضمينه غالبا عند حساب الخطأ: تعيين أهمية مختلفة للأخطاء بالنسبة للأهداف وغير المستهدفة. على سبيل المثال، أذكر مثال السرطان الوارد في وقت سابق من هذا الفصل، وعواقب إحداث خطأ إيجابي كاذب مقابل خطأ سلبي كاذب. في المثال الحالي، سوف نعلن تعسفا أن الخطأ في الكشف عن الهدف هو خمسة أضعاف سيئة مثل الخطأ في الكشف عن غير المستهدفة. في الواقع، هذا يخبر الشبكة للقيام بعمل أفضل مع الأهداف، حتى لو كان ذلك يضر أداء نونتارجيتس. سوبروتين 3000 هو قلب استراتيجية الشبكة العصبية، وخوارزمية لتغيير الأوزان على كل التكرار. وسوف نستخدم تشبيه لشرح الرياضيات الأساسية. النظر في مأزق مظلي العسكرية انخفض خلف خطوط العدو. المظلات على الأرض في منطقة غير مألوفة، إلا أن تجد أنه مظلمة جدا انه غير قادر على رؤية أكثر من بضعة أقدام بعيدا. أوامره هي الذهاب إلى أسفل وادي أقرب لبدء ما تبقى من مهمته. والمشكلة هي، دون أن يكون قادرا على رؤية أكثر من بضعة أقدام، وكيف انه جعل طريقه إلى الطابق الوادي وضع طريقة أخرى، وقال انه يحتاج الى خوارزمية لضبط له x و y موقف على سطح الأرض من أجل تقليل له الارتفاع . هذا هو مماثل لمشكلة تعديل الأوزان الشبكة العصبية، بحيث يتم تقليل الخطأ الشبكات، إسوم. وسوف ننظر في خوارزميتين لحل هذه المشكلة: تطور وأشد النسب. في تطور، مظلي يأخذ قفزة الطيران في بعض الاتجاه العشوائي. إذا كان الارتفاع الجديد أعلى من السابق، انه يشتم ويعود إلى موقع البداية له، حيث يحاول مرة أخرى. إذا كان الارتفاع الجديد أقل. فهو يشعر بقدر من النجاح، ويكرر العملية من الموقع الجديد. في نهاية المطاف انه سوف تصل إلى الجزء السفلي من الوادي، على الرغم من أن في مسار غير فعالة جدا وغير عشوائية. ويسمى هذا الأسلوب التطور لأنه هو نفس النوع من الخوارزمية المستخدمة من قبل الطبيعة في التطور البيولوجي. كل جيل جديد من الأنواع لديه اختلافات عشوائية من السابق. إذا كانت هذه الاختلافات مفيدة للأنواع، فمن المرجح أن يتم الاحتفاظ بها وتمريرها إلى الجيل التالي. هذا هو نتيجة للتحسين السماح للحيوان لتلقي المزيد من الطعام، هربا من أعدائها، وإنتاج المزيد من النسل، وما إذا كانت سمة جديدة ضارة، والحيوانات المحرومة يصبح الغداء لبعض المفترس، ويتم تجاهل الاختلاف. في هذا المعنى، كل جيل جديد هو تكرار الإجراء الأمثل التطوري. عندما يتم استخدام تطور خوارزمية التدريب، يتم تغيير كل وزن في الشبكة العصبية قليلا عن طريق إضافة قيمة من مولد رقم عشوائي. إذا كانت الأوزان المعدلة تجعل شبكة أفضل (أي قيمة أقل ل إسوم)، يتم الاحتفاظ بالتغييرات وإلا يتم تجاهلها. في حين أن هذا يعمل، فإنه بطيء جدا في التقارب. هذه هي المصطلحات المستخدمة لوصف أن التحسين المستمر يجري نحو الحل الأمثل (الجزء السفلي من الوادي). وبعبارات أكثر بساطة، فإن البرنامج سوف تحتاج أيام للوصول إلى حل، بدلا من دقائق أو ساعات. لحسن الحظ، فإن خوارزمية النسب الأكثر حدة هي أسرع بكثير. هذه هي الطريقة التي يمكن أن تستجيب المظلي بشكل طبيعي: تقييم الطريقة التي هبوطا. والتحرك في هذا الاتجاه. فكر في الوضع بهذه الطريقة. المظلي يمكن أن تتحرك خطوة واحدة إلى الشمال، وتسجيل التغيير في الارتفاع. بعد عودته إلى منصبه الأصلي، يمكنه أن يأخذ خطوة واحدة إلى الشرق، ويسجل هذا التغيير في الارتفاع. باستخدام هذين القيمين، وقال انه يمكن تحديد أي اتجاه هبوطا. لنفترض أن المظلي يسقط 10 سم عندما يتحرك خطوة واحدة في الاتجاه الشمالي، ويسقط 20 سم عندما يتحرك خطوة واحدة في الاتجاه الشرقي. للسفر مباشرة إلى أسفل، وقال انه يحتاج إلى التحرك على طول كل محور مبلغ يتناسب مع المنحدر على طول هذا المحور. في هذه الحالة، وقال انه قد تتحرك شمالا من قبل 10 خطوات والشرق ب 20 خطوة. هذا يتحرك له أسفل الجزء الأكثر انحدارا من المنحدر مسافة راديك 10 2 20 2 خطوات. بدلا من ذلك، يمكن أن تتحرك في خط مستقيم إلى الموقع الجديد، 22.4 خطوات على طول قطري. النقطة الرئيسية هي: يتم تحقيق النسب الأكثر حدة من خلال التحرك على طول كل محور مسافة يتناسب مع المنحدر على طول هذا المحور. سوبروتين 3000 تنفذ نفس خوارزمية لائقة أشد لأوزان الشبكة. Before entering subroutine 3000, one of the example images has been applied to the input layer, and the information propagated to the output. This means that the values for: X1 , X2 and X3 are all specified, as well as the current weight values: WH. and WO . In addition, we know the error the network produces for this particular image, ELET. The hidden layer weights are updated in lines 3050 to 3120, while the output layer weights are modified in lines 3150 to 3190. This is done by calculating the slope for each weight, and then changing each weight by an amount proportional to that slope . In the paratrooper case, the slope along an axis is found by moving a small distance along the axis (say, Delta x ), measuring the change in elevation (say, Delta E ), and then dividing the two (Delta E Delta x ). The slope of a neural network weight can be found in this same way: add a small increment to the weight value (Delta w ), find the resulting change in the output signal (Delta X3 ), and divide the two (Delta X3 Delta w ). Later in this chapter we will look at an example that calculates the slope this way. However, in the present example we will use a more efficient method. Earlier we said that the nonlinearity (the sigmoid) needs to be differentiable . Here is where we will use this property. If we know the slope at each point on the nonlinearity, we can directly write an equation for the slope of each weight (Delta X3 Delta w) without actually having to perturb it. Consider a specific weight, for example, WO1, corresponding to the first input of the output node. Look at the structure in Figs. 26-5 and 26-6, and ask: how will the output ( X3 ) be affected if this particular weight ( w ) is changed slightly, but everything else is kept the same The answer is: where SLOPE O is the first derivative of the output layer sigmoid, evaluated where we are operating on its curve. In other words, SLOPE O describes how much the output of the sigmoid changes in response to a change in the input to the sigmoid. From Eq. 26-2, SLOPE O can be calculated from the current output value of the sigmoid, X3. This calculation is shown in line 3160. In line 3170, the slope for this weight is calculated via Eq. 26-3, and stored in the variable DX3DW (i. e. Delta X3 Delta w). Using a similar analysis, the slope for a weight on the hidden layer, such as WH1,1, can be found by: SLOPE H1 is the first derivative of the hidden layer sigmoid, evaluated where we are operating on its curve. The other values, X11 and WO1, are simply constants that the weight change sees as it makes its way to the output. In lines 3070 and 3080, the slopes of the sigmoids are calculated using Eq. 26-2. The slope of the hidden layer weight, DX3DW is calculated in line 3090 via Eq. 26-4. Now that we know the slope of each of the weights, we can look at how each weight is changed for the next iteration. The new value for each weight is found by taking the current weight, and adding an amount that is proportional to the slope: This calculation is carried out in line 3100 for the hidden layer, and line 3180 for the output layer. The proportionality constant consists of two factors, ELET, the error of the network for this particular input, and MU, a constant set at the beginning of the program. To understand the need for ELET in this calculation, imagine that an image placed on the input produces a small error in the output signal. Next, imagine that another image applied to the input produces a large output error. When adjusting the weights, we want to nudge the network more for the second image than the first. If something is working poorly, we want to change it if it is working well, we want to leave it alone. This is accomplished by changing each weight in proportion to the current error, ELET. To understand how MU affects the system, recall the example of the paratrooper. Once he determines the downhill direction, he must decide how far to proceed before reevaluating the slope of the terrain. By making this distance short, one meter for example, he will be able to precisely follow the contours of the terrain and always be moving in an optimal direction. The problem is that he spends most of his time evaluating the slope, rather than actually moving down the hill. In comparison, he could choose the distance to be large, say 1000 meters. While this would allow the paratrooper to move rapidly along the terrain, he might overshoot the downhill path. Too large of a distance makes him jump all over the country-side without making the desired progress. In the neural network, MU controls how much the weights are changed on each iteration. The value to use depends on the particular problem, being as low as 10 -6. or as high as 0.1. From the analogy of the paratrooper, it can be expected that too small of a value will cause the network to converge too slowly. In comparison, too large of a value will cause the convergence to be erratic, and will exhibit chaotic oscillation around the final solution. Unfortunately, the way neural networks react to various values of MU can be difficult to understand or predict. This makes it critical that the network error (i. e. ESUM) be monitored during the training, such as printing it to the video screen at the end of each iteration. If the system isnt converging properly, stop the program and try another value for MU.

No comments:

Post a Comment