نيورل نيٽ ورڪن سان ڪم ڪرڻ: ڊيبگنگ لاءِ چيڪ لسٽ

نيورل نيٽ ورڪن سان ڪم ڪرڻ: ڊيبگنگ لاءِ چيڪ لسٽ

مشين لرننگ سافٽ ويئر پروڊڪٽس جو ڪوڊ اڪثر پيچيده ۽ ڪافي پريشان ڪندڙ هوندو آهي. ان ۾ ڪيڙن کي ڳولڻ ۽ ختم ڪرڻ هڪ وسيلا-گھڻي ڪم آهي. جيتوڻيڪ آسان ترين فيڊ فارورڊ نيورل نيٽ ورڪ نيٽ ورڪ فن تعمير، وزن جي شروعات، ۽ نيٽ ورڪ کي بهتر ڪرڻ لاء هڪ سنجيده طريقي جي ضرورت آهي. هڪ ننڍڙي غلطي اڻ وڻندڙ ​​مسئلا پيدا ڪري سگهي ٿي.

هي آرٽيڪل توهان جي نيورل نيٽ ورڪ کي ڊيبگ ڪرڻ لاءِ هڪ الگورتھم بابت آهي.

Skillbox سفارش ڪري ٿو: عملي ڪورس شروع کان پٿون ڊولپر.

اسان توهان کي ياد ڏياريون ٿا: "Habr" جي سڀني پڙهندڙن لاءِ - 10 روبل جي رعايت جڏهن "Habr" پروموشنل ڪوڊ استعمال ڪندي ڪنهن به اسڪل باڪس ڪورس ۾ داخلا.

الورورٿم پنجن مرحلن تي مشتمل آهي:

  • آسان شروعات؛
  • نقصان جي تصديق؛
  • وچولي نتيجا ۽ ڪنيڪشن چيڪ ڪرڻ؛
  • پيٽرولر جي تشخيص؛
  • ڪم جو ڪنٽرول.

جيڪڏهن ڪا شيء توهان کي باقي کان وڌيڪ دلچسپ لڳي ٿي، توهان فوري طور تي انهن حصن ڏانهن وڃو.

آسان شروعات

هڪ پيچيده فن تعمير، باقاعده ڪرڻ، ۽ سکيا جي شرح شيڊولر سان هڪ اعصابي نيٽ ورڪ باقاعده هڪ کان وڌيڪ ڊيب ڪرڻ ڏکيو آهي. اسان هتي ٿورڙي مشڪل ٿي رهيا آهيون، ڇاڪاڻ ته اهو نقطو اڻ سڌي طرح ڊيبگنگ سان لاڳاپيل آهي، پر اهو اڃا تائين هڪ اهم سفارش آهي.

هڪ سادي شروعات آهي هڪ سادي نموني ٺاهڻ ۽ ان کي ڊيٽا جي هڪ سيٽ (پوائنٽ) تي تربيت ڏيڻ.

پهرين اسان هڪ سادي نموني ٺاهي

جلدي شروع ڪرڻ لاءِ، اسان ھڪڙي ڳجھي پرت سان ھڪڙو ننڍڙو نيٽ ورڪ ٺاھيو ۽ چيڪ ڪريو ته سڀ ڪجھ صحيح ڪم ڪري ٿو. ان کان پوء اسان تدريجي نموني کي پيچيده ڪريون ٿا، ان جي جوڙجڪ جي هر نئين پاسو (اضافي پرت، پيٽرولر، وغيره) جي جانچ ڪندي، ۽ اڳتي وڌو.

اسان ڊيٽا جي ھڪڙي سيٽ (پوائنٽ) تي ماڊل کي تربيت ڏيون ٿا

جيئن توهان جي پروجيڪٽ جي تڪڙي صفائي چيڪ ڪريو، توهان تصديق ڪرڻ لاءِ هڪ يا ٻه ٽريننگ ڊيٽا پوائنٽس استعمال ڪري سگهو ٿا ته ڇا سسٽم صحيح ڪم ڪري رهيو آهي. اعصابي نيٽ ورڪ کي تربيت ۽ جانچ ۾ 100٪ درستگي ڏيکارڻ گهرجي. جيڪڏهن اهو معاملو ناهي، پوء يا ته ماڊل تمام ننڍڙو آهي يا توهان وٽ اڳ ۾ ئي هڪ بگ آهي.

جيتوڻيڪ سڀ ڪجهه ٺيڪ آهي، ماڊل تيار ڪريو هڪ يا وڌيڪ دورن لاءِ اڳتي وڌڻ کان اڳ.

نقصان جي تشخيص

ماڊل جي ڪارڪردگي کي بهتر ڪرڻ جو بنيادي طريقو نقصان جو اندازو آهي. توهان کي پڪ ڪرڻ جي ضرورت آهي ته نقصان مناسب آهي مسئلي سان ۽ نقصان جي ڪم کي درست پيماني تي درجه بندي ڪئي وئي آهي. جيڪڏهن توهان هڪ کان وڌيڪ نقصان جي قسم استعمال ڪندا آهيو، پڪ ڪريو ته اهي سڀئي ساڳيا ترتيب آهن ۽ صحيح طور تي ماپيل آهن.

اهو ضروري آهي ته ابتدائي نقصان تي ڌيان ڏيڻ گهرجي. چيڪ ڪريو ته حقيقي نتيجو متوقع نتيجن کي ڪيترو ويجهو آهي جيڪڏهن ماڊل هڪ بي ترتيب اندازي سان شروع ڪيو. IN Andrey Karpathy جي ڪم هيٺ ڏنل مشورو ڏئي ٿو:: "پڪ ڪريو ته توھان اھو نتيجو حاصل ڪندا آھيو جنھن جي توھان توقع ڪندا آھيو جڏھن توھان شروع ڪندا آھيو ھڪڙي ننڍڙي تعداد سان. اهو بهتر آهي ته فوري طور تي ڊيٽا جي نقصان جي جانچ ڪريو (صفر تي مقرر ڪيل ريگيوليشن جي درجي سان). مثال طور، CIFAR-10 لاءِ Softmax classifier سان، اسان کي ابتدائي نقصان 2.302 ٿيڻ جي اميد آهي ڇاڪاڻ ته متوقع ڊفيوز امڪان هر طبقي لاءِ 0,1 آهي (جيئن ته 10 طبقا آهن) ۽ Softmax نقصان صحيح طبقي جي منفي لاگ جو امڪان آهي. جيئن - ln (0.1) = 2.302.

بائنري مثال لاءِ، ھڪڙو ساڳيو حساب صرف ھر ھڪڙي طبقي لاءِ ٺاھيو ويو آھي. هتي، مثال طور، ڊيٽا آهي: 20٪ 0 جي ۽ 80٪ 1 جي. متوقع ابتدائي نقصان -0,2ln (0,5) -0,8ln (0,5) = 0,693147 تائين ٿيندو. جيڪڏهن نتيجو 1 کان وڌيڪ آهي، اهو ظاهر ڪري سگھي ٿو ته نيورل نيٽ ورڪ وزن صحيح طور تي متوازن نه آهي يا ڊيٽا عام نه آهي.

وچولي نتيجا ۽ ڪنيڪشن چيڪ ڪرڻ

هڪ اعصابي نيٽ ورڪ کي ڊيب ڪرڻ لاء، اهو ضروري آهي ته نيٽ ورڪ جي اندر عمل جي متحرڪ ۽ انفرادي وچولي تہه جي ڪردار کي سمجهڻ لاء جيئن اهي ڳنڍيل آهن. هتي اهي عام غلطيون آهن جن کي توهان منهن ڏئي سگهو ٿا:

  • گريڊ اپڊيٽ لاء غلط اظهار؛
  • وزن اپڊيٽ لاڳو نه آهن؛
  • ڌماڪيدار مادو.

جيڪڏهن تدريسي قدر صفر آهن، ان جو مطلب اهو آهي ته اصلاح ڪندڙ ۾ سکيا جي شرح تمام سست آهي، يا اهو آهي ته توهان گريڊينٽ کي اپڊيٽ ڪرڻ لاءِ غلط اظهار کي منهن ڏئي رهيا آهيو.

ان کان سواء، اهو ضروري آهي ته هر هڪ پرت جي چالو ڪرڻ جي ڪارڪردگي، وزن ۽ تازه ڪاري جي قدرن جي نگراني ڪرڻ. مثال طور، پيٽرولر اپڊيٽ جي شدت (وزن ۽ تعصب) 1-e3 هجڻ گهرجي.

اتي ھڪڙو رجحان آھي "مرڻ ReLU" يا "گم ٿيڻ واري تدريسي مسئلو"، جڏهن ري ايل يو نيورسن پنهنجي وزن لاءِ وڏي منفي تعصب جي قيمت سکڻ کان پوءِ صفر کي ٻاھر ڪڍندو. اهي نيورون ڪڏهن به ڊيٽا ۾ ڪنهن به نقطي تي ٻيهر فائر نه ڪيا ويا آهن.

توھان انھن غلطين کي سڃاڻڻ لاءِ گريڊيئنٽ چيڪنگ استعمال ڪري سگھو ٿا انگن اکرن کي استعمال ڪندي گريڊيئنٽ کي لڳ ڀڳ. جيڪڏهن اهو ڳڻپيوڪر گريجوئيٽ جي ويجهو آهي، ته پوءِ پٺڀرائي صحيح طريقي سان لاڳو ڪئي وئي هئي. گريجوئيٽ چيڪ ٺاهڻ لاءِ، CS231 کان هنن عظيم وسيلن کي چيڪ ڪريو هتي и هتي، انهي سان گڏ سبق Andrew Nga هن موضوع تي.

فيضان شيخ هڪ اعصابي نيٽ ورڪ کي ڏسڻ لاء ٽي مکيه طريقا ڏيکاري ٿو:

  • ابتدائي سادي طريقا آھن جيڪي اسان کي تربيتي ماڊل جي عام جوڙجڪ ڏيکاريندا آھن. انهن ۾ شامل آهن شڪلين جي پيداوار يا فلٽرن جي انفرادي پرتن جي نيورل نيٽ ورڪ ۽ هر پرت اندر پيرا ميٽر.
  • فعال ٿيڻ جي بنياد تي. انهن ۾، اسان انفرادي نيورسن يا نيورسن جي گروپن جي سرگرمين کي سمجھڻ لاء انهن جي افعال کي سمجھندا آهيون.
  • گريجوئيٽ جي بنياد تي. اهي طريقا گريجوئيٽ کي هٿي وٺرائيندا آهن جيڪي ماڊل ٽريننگ جي اڳتي ۽ پوئتي پاسن مان ٺاهيا ويندا آهن (بشمول سلائيسي نقشا ۽ ڪلاس ايڪٽيويشن نقشا).

انفرادي پرت جي چالو ڪرڻ ۽ ڪنيڪشن کي ڏسڻ لاءِ ڪيترائي مفيد اوزار آھن، مثال طور. ڪنڪس и ٽينسر بورڊ.

نيورل نيٽ ورڪن سان ڪم ڪرڻ: ڊيبگنگ لاءِ چيڪ لسٽ

پيٽرولر جي تشخيص

اعصابي نيٽ ورڪن وٽ ڪيترائي پيٽرول آھن جيڪي ھڪ ٻئي سان لهه وچڙ ۾ آھن، جيڪي اصلاح کي پيچيده ڪن ٿا. دراصل، هي سيڪشن ماهرن جي فعال تحقيق جو موضوع آهي، تنهن ڪري هيٺ ڏنل تجويزن کي صرف مشوري طور سمجهيو وڃي، شروعاتي نقطي جنهن مان تعمير ڪجي.

پيڪيج جي ماپ (بيچ جي سائيز) - جيڪڏھن توھان چاھيو ٿا ته بيچ جي سائيز ايتري وڏي ھجي جو صحيح نقص جي گريڊيئنٽ تخميني حاصل ڪري سگھي، پر توھان جي نيٽ ورڪ کي باقاعده ڪرڻ لاءِ اسٽوچسٽڪ گريڊيئنٽ ڊيسينٽ (SGD) لاءِ ڪافي آھي. ٽريننگ جي عمل دوران شور ۽ بعد ۾ اصلاح جي مشڪلاتن جي ڪري ننڍي بيچ جي سائيز تيزيءَ سان ڪنورجنسي ٿيندي. اهو وڌيڪ تفصيل سان بيان ڪيو ويو آهي هتي.

سکيا جي شرح - تمام گھٽ ھلندو سست ڪنورجنسي يا مقامي مينيما ۾ ڦاسي وڃڻ جو خطرو. ساڳئي وقت، هڪ اعلي سکيا جي شرح اصلاح جي ڦيرڦار جو سبب بڻائيندو ڇو ته توهان نقصان جي فنڪشن جي گہرے پر تنگ حصي ذريعي جمپ ڪرڻ جو خطرو آهي. ڪوشش ڪريو رفتار جي شيڊول کي گھٽائڻ لاءِ ان کي گھٽائڻ لاءِ جڏهن نيورل نيٽ ورڪ کي تربيت ڏيو. CS231n سان تاريخ تائين اتي هڪ وڏو حصو هن مسئلي لاء وقف آهي.

گريجوئيٽ ڪلپنگ  - وڌ ۾ وڌ قدر يا حد کان گهٽ معيار تي پوئتي پروپئگيشن دوران پيراميٽر گريڊينٽ کي تراشڻ. ڪنهن به ڌماڪي واري درجي جي مسئلن کي حل ڪرڻ لاءِ مفيد آهي توهان کي پوائنٽ ٽي ۾ منهن ڏئي سگهو ٿا.

بيچ normalization - هر پرت جي ان پٽ ڊيٽا کي عام ڪرڻ لاءِ استعمال ڪيو ويو، جيڪو اسان کي اندروني ڪووريٽ شفٽ جي مسئلي کي حل ڪرڻ جي اجازت ڏئي ٿو. جيڪڏهن توهان ڊراپ آئوٽ ۽ بيچ نارما گڏجي استعمال ڪري رهيا آهيو، هي آرٽيڪل ڏسو.

اسٽوچاسٽڪ گرڊيئينٽ ڊيسنٽ (SGD) - SGD جا ڪيترائي قسم آھن جيڪي استعمال ڪن ٿا رفتار، موافقت واري سکيا جي شرح ۽ Nesterov طريقو. تنهن هوندي، انهن مان ڪنهن کي به واضح فائدو نه آهي ٻنهي سکيا جي ڪارڪردگي ۽ عام ڪرڻ جي لحاظ کان (تفصيل هتي).

باقاعدي - هڪ عام قابل ماڊل تعمير ڪرڻ لاء اهم آهي، ڇاڪاڻ ته اهو ماڊل پيچيدگي يا انتهائي پيٽرولر جي قيمت لاء سزا شامل ڪري ٿو. هي هڪ طريقو آهي ماڊل ويرينس کي گهٽائڻ جو بغير ان جي تعصب وڌائڻ کان سواءِ. وڌيڪ تفصيلي ڄاڻ - هتي.

پنهنجو پاڻ کي هر شي جو جائزو وٺڻ لاء، توهان کي باقاعده ڪرڻ کي غير فعال ڪرڻ جي ضرورت آهي ۽ پاڻ کي ڊيٽا جي نقصان جي درجه بندي کي جانچڻ جي ضرورت آهي.

ڇڏڻ توهان جي نيٽ ورڪ کي هموار ڪرڻ جو هڪ ٻيو طريقو آهي ڪنجيشن کي روڪڻ لاءِ. ٽريننگ دوران، ڊراپ آئوٽ صرف نيورون جي سرگرمي کي برقرار رکڻ سان ڪيو ويندو آهي هڪ خاص امڪاني پي (هائپر پيراميٽر) سان يا ان جي سامهون واري صورت ۾ صفر کي ترتيب ڏيڻ سان. نتيجي طور، نيٽ ورڪ کي لازمي طور تي هر ٽريننگ بيچ لاءِ پيٽرول جو مختلف ذيلي سيٽ استعمال ڪرڻ گهرجي، جيڪو ڪجهه پيٽرولر ۾ تبديلين کي گھٽائي ٿو جيڪو غالب ٿي وڃي ٿو.

اھم: جيڪڏھن توھان استعمال ڪري رھيا آھيو ٻئي ڊراپ آئوٽ ۽ بيچ نارملائيزيشن، انھن عملن جي ترتيب جي باري ۾ محتاط رھو يا انھن کي گڏجي استعمال ڪرڻ سان. اهو سڀ اڃا تائين فعال طور تي بحث ڪيو پيو وڃي ۽ اضافي طور تي. هتي هن موضوع تي ٻه اهم بحث آهن Stackoverflow تي и آرڪسائيو.

ڪم جو ڪنٽرول

اهو ڪم فلوز ۽ تجربن کي دستاويز ڪرڻ بابت آهي. جيڪڏھن توھان ڪجھ به دستاويز نه ڪريو، توھان وساري سگھو ٿا، مثال طور، ڪھڙي سکيا جي شرح يا ڪلاس وزن استعمال ڪيا ويا آھن. ڪنٽرول ڪرڻ جي مهرباني، توهان آساني سان ڏسي سگهو ٿا ۽ اڳئين تجربن کي ٻيهر پيدا ڪري سگهو ٿا. هي توهان کي نقل ڪيل تجربن جي تعداد کي گهٽائڻ جي اجازت ڏئي ٿو.

بهرحال، دستي دستاويزن ڪم جي وڏي مقدار جي صورت ۾ هڪ ڏکيو ڪم بڻجي سگهي ٿو. هي اهو آهي جتي ٽولز جهڙوڪ Comet.ml توهان کي خودڪار طريقي سان لاگ ان ڊيٽا سيٽ، ڪوڊ تبديلين، تجرباتي تاريخ، ۽ پيداوار جا ماڊل، بشمول توهان جي ماڊل بابت اهم معلومات (هائيپرپيراميٽر، ماڊل ڪارڪردگي ميٽرڪس، ۽ ماحولياتي معلومات) شامل ڪرڻ ۾ مدد ڏيڻ لاء.

هڪ اعصابي نيٽ ورڪ ننڍڙي تبديلين لاء تمام حساس ٿي سگهي ٿو، ۽ اهو ماڊل ڪارڪردگي ۾ گهٽتائي جو سبب ٿيندو. توهان جي ڪم کي ٽريڪ ڪرڻ ۽ دستاويز ڪرڻ پهريون قدم آهي جيڪو توهان وٺي سگهو ٿا پنهنجي ماحول ۽ ماڊلنگ کي معياري بڻائڻ لاءِ.

نيورل نيٽ ورڪن سان ڪم ڪرڻ: ڊيبگنگ لاءِ چيڪ لسٽ

مون کي اميد آهي ته هي پوسٽ توهان جي نيورل نيٽ ورڪ کي ڊيبگ ڪرڻ شروع ڪرڻ لاء هڪ شروعاتي نقطو ٿي سگهي ٿو.

Skillbox سفارش ڪري ٿو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو