Neyron tarmoqlar bilan ishlash: disk raskadrovka uchun nazorat ro'yxati

Neyron tarmoqlar bilan ishlash: disk raskadrovka uchun nazorat ro'yxati

Mashinani o'rganish dasturiy mahsulotlar kodi ko'pincha murakkab va juda chalkash. Undagi xatolarni aniqlash va yo'q qilish ko'p resurs talab qiladigan vazifadir. Hatto eng oddiy oldinga yo'naltirilgan neyron tarmoqlari tarmoq arxitekturasiga jiddiy yondashish, og'irliklarni ishga tushirish va tarmoqni optimallashtirishni talab qiladi. Kichkina xato noxush muammolarga olib kelishi mumkin.

Ushbu maqola neyron tarmoqlaringizni disk raskadrovka qilish algoritmi haqida.

Skillbox tavsiya qiladi: Amaliy kurs Noldan boshlab Python dasturchisi.

Sizga eslatib o'tamiz: "Habr" ning barcha o'quvchilari uchun - "Habr" promo-kodidan foydalangan holda har qanday Skillbox kursiga yozilishda 10 000 rubl chegirma.

Algoritm besh bosqichdan iborat:

  • oson boshlash;
  • yo'qotishlarni tasdiqlash;
  • oraliq natijalar va ulanishlarni tekshirish;
  • parametr diagnostikasi;
  • ishni nazorat qilish.

Agar biror narsa sizga boshqalardan ko'ra qiziqroq bo'lib tuyulsa, darhol ushbu bo'limlarga o'tishingiz mumkin.

Oson boshlash

Murakkab arxitekturaga, tartibga solishga va o'rganish tezligini rejalashtiruvchiga ega bo'lgan neyron tarmoqni disk raskadrovka qilish odatdagidan ko'ra qiyinroq. Bu erda biz biroz qiyinchilik qilyapmiz, chunki nuqta o'zi bilvosita disk raskadrovka bilan bog'liq, ammo bu hali ham muhim tavsiya.

Oddiy boshlash - bu soddalashtirilgan modelni yaratish va uni bitta ma'lumotlar to'plamiga (nuqtasiga) o'rgatishdir.

Avval biz soddalashtirilgan modelni yaratamiz

Tez boshlash uchun biz bitta yashirin qatlamli kichik tarmoq yaratamiz va hamma narsa to'g'ri ishlashini tekshiramiz. Keyin biz modelni asta-sekin murakkablashtiramiz, uning strukturasining har bir yangi tomonini (qo'shimcha qatlam, parametr va boshqalar) tekshiramiz va davom etamiz.

Biz modelni bitta ma'lumotlar to'plami (nuqtasi) bo'yicha o'qitamiz

Loyihangiz uchun tezkor aql-idrok tekshiruvi sifatida siz tizimning to'g'ri ishlayotganligini tasdiqlash uchun trening uchun bir yoki ikkita ma'lumot nuqtasidan foydalanishingiz mumkin. Neyron tarmoq o'qitish va sinovdan o'tkazishda 100% aniqlikni ko'rsatishi kerak. Agar bunday bo'lmasa, model juda kichik yoki sizda allaqachon xatolik bor.

Har bir narsa yaxshi bo'lsa ham, davom etishdan oldin modelni bir yoki bir nechta davrga tayyorlang.

Yo'qotishlarni baholash

Yo'qotishlarni baholash modelning ish faoliyatini yaxshilashning asosiy usuli hisoblanadi. Yo'qotish muammoga mos kelishini va yo'qotish funktsiyalari to'g'ri shkalada baholanishini ta'minlashingiz kerak. Agar siz bir nechta yo'qotish turlaridan foydalansangiz, ularning barchasi bir xil tartibda va to'g'ri o'lchamda ekanligiga ishonch hosil qiling.

Dastlabki yo'qotishlarga ehtiyot bo'lish muhimdir. Agar model tasodifiy taxmin bilan boshlangan bo'lsa, haqiqiy natija kutilgan natijaga qanchalik yaqin ekanligini tekshiring. IN Andrey Karpatining ishi quyidagilarni taklif qiladi:: “Kichik miqdordagi parametrlar bilan boshlaganingizda kutgan natijani olishingizga ishonch hosil qiling. Ma'lumotlarning yo'qolishini darhol tekshirish yaxshiroqdir (regulyatsiya darajasi nolga o'rnatilgan). Misol uchun, Softmax klassifikatoriga ega CIFAR-10 uchun biz dastlabki yo'qotish 2.302 bo'lishini kutamiz, chunki kutilgan diffuz ehtimollik har bir sinf uchun 0,1 ga teng (chunki 10 ta sinf mavjud) va Softmax yo'qolishi to'g'ri sinfning salbiy log ehtimolligidir. kabi - ln (0.1) = 2.302.”

Ikkilik misol uchun shunga o'xshash hisob oddiygina sinflarning har biri uchun amalga oshiriladi. Bu erda, masalan, ma'lumotlar: 20% 0 va 80% 1. Kutilayotgan dastlabki yo'qotish -0,2ln (0,5) -0,8ln (0,5) = 0,693147 gacha bo'ladi. Agar natija 1 dan katta bo'lsa, bu neyron tarmog'ining og'irliklari to'g'ri muvozanatlanmaganligini yoki ma'lumotlar normallashtirilmaganligini ko'rsatishi mumkin.

Oraliq natijalar va ulanishlarni tekshirish

Neyron tarmoqni disk raskadrovka qilish uchun tarmoq ichidagi jarayonlar dinamikasini va alohida oraliq qatlamlarning ulanishdagi rolini tushunish kerak. Bu erda siz duch kelishi mumkin bo'lgan keng tarqalgan xatolar:

  • gradle yangilanishlari uchun noto'g'ri ifodalar;
  • vazn yangilanishlari qo'llanilmaydi;
  • portlovchi gradientlar.

Agar gradient qiymatlari nolga teng bo'lsa, bu optimallashtiruvchida o'rganish tezligi juda sekin ekanligini yoki siz gradientni yangilash uchun noto'g'ri ifodaga duch kelganingizni anglatadi.

Bundan tashqari, har bir qatlamning faollashtirish funktsiyalari, og'irliklari va yangilanishlari qiymatlarini kuzatish kerak. Masalan, parametrlarni yangilash hajmi (og'irliklar va noaniqliklar) 1-e3 bo'lishi kerak.

"Dying ReLU" yoki deb nomlangan hodisa mavjud "yo'qolib borayotgan gradient muammosi", ReLU neyronlari uning og'irliklari uchun katta salbiy taraflama qiymatini o'rgangandan so'ng nolga teng bo'lganda. Ushbu neyronlar hech qachon ma'lumotlarning istalgan nuqtasida qayta ishga tushmaydi.

Raqamli yondashuv yordamida gradientni yaqinlashtirish orqali ushbu xatolarni aniqlash uchun gradient tekshiruvidan foydalanishingiz mumkin. Agar u hisoblangan gradientlarga yaqin bo'lsa, orqaga tarqalish to'g'ri amalga oshirilgan. Gradient tekshiruvini yaratish uchun CS231-dan ushbu ajoyib resurslarni tekshiring shu yerda и shu yerda, shuningdek bilan dars Bu mavzu bo'yicha Endryu Nga.

Fayzan Shayx neyron tarmog'ini vizualizatsiya qilishning uchta asosiy usulini ko'rsatadi:

  • Preliminaries - bu bizga o'rgatilgan modelning umumiy tuzilishini ko'rsatadigan oddiy usullardir. Bularga neyron tarmoqning alohida qatlamlarining shakllari yoki filtrlarining chiqishi va har bir qatlam ichidagi parametrlar kiradi.
  • Faollashtirishga asoslangan. Ularda biz ularning funktsiyalarini tushunish uchun individual neyronlar yoki neyronlar guruhlarining faollashuvini hal qilamiz.
  • Gradientlarga asoslangan. Ushbu usullar namunaviy treningning oldinga va orqaga o'tishlari natijasida hosil bo'lgan gradientlarni manipulyatsiya qilishga moyildir (shu jumladan, aniqlik xaritalari va sinfni faollashtirish xaritalari).

Alohida qatlamlarning faollashuvi va ulanishlarini vizualizatsiya qilish uchun bir nechta foydali vositalar mavjud, masalan. ConX и Tensorboard.

Neyron tarmoqlar bilan ishlash: disk raskadrovka uchun nazorat ro'yxati

Parametr diagnostikasi

Neyron tarmoqlar bir-biri bilan o'zaro ta'sir qiluvchi ko'plab parametrlarga ega, bu esa optimallashtirishni murakkablashtiradi. Aslida, ushbu bo'lim mutaxassislar tomonidan faol izlanishlar mavzusidir, shuning uchun quyida keltirilgan takliflar faqat maslahat sifatida ko'rib chiqilishi kerak.

Paket hajmi (to'plam hajmi) - Agar siz to'plam hajmi xato gradientini aniq baholash uchun etarlicha katta bo'lishini istasangiz, lekin tarmoqni tartibga solish uchun stokastik gradient tushishi (SGD) uchun etarlicha kichik bo'lishini istasangiz. Partiyaning kichik o'lchamlari mashg'ulot jarayonida shovqin tufayli tez yaqinlashuvga va keyinchalik optimallashtirishda qiyinchiliklarga olib keladi. Bu batafsilroq tasvirlangan shu yerda.

O'rganish darajasi - juda past sekin konvergentsiyaga yoki mahalliy minimallarda qolib ketish xavfiga olib keladi. Shu bilan birga, yuqori o'rganish tezligi optimallashtirishning farqlanishiga olib keladi, chunki siz yo'qotish funktsiyasining chuqur, ammo tor qismidan o'tish xavfini tug'dirasiz. Neyron tarmoqni o'rgatishda tezlikni rejalashtirishdan foydalanishga harakat qiling. CS231n bilan yangilangan bu muammoga bag'ishlangan katta bo'lim mavjud.

Gradientni kesish  — maksimal qiymat yoki chegaraviy normada orqaga tarqalish vaqtida parametr gradientlarini kesish. Uchinchi bandda duch kelishi mumkin bo'lgan har qanday portlovchi gradient bilan bog'liq muammolarni bartaraf etish uchun foydalidir.

To'plamni normallashtirish - har bir qatlamning kirish ma'lumotlarini normallashtirish uchun ishlatiladi, bu bizga ichki kovariativ siljish muammosini hal qilish imkonini beradi. Agar siz Dropout va Batch Norma-dan birgalikda foydalansangiz, ushbu maqolani ko'rib chiqing.

Stokastik gradient tushishi (SGD) - SGD ning bir nechta navlari mavjud bo'lib, ularda impuls, moslashuvchan o'rganish tezligi va Nesterov usuli qo'llaniladi. Biroq, ularning hech biri o'rganish samaradorligi va umumlashtirish nuqtai nazaridan aniq ustunlikka ega emas (tafsilotlar bu yerda).

Muntazamlashtirish - umumlashtirilishi mumkin bo'lgan modelni yaratish uchun juda muhim, chunki u modelning murakkabligi yoki haddan tashqari parametr qiymatlari uchun jarima qo'shadi. Bu modeldagi farqni sezilarli darajada oshirmasdan kamaytirishning bir usuli. Ko'proq batafsil ma'lumot - bu erda.

Har bir narsani o'zingiz baholash uchun siz tartibga solishni o'chirib qo'yishingiz va ma'lumotlarni yo'qotish gradientini o'zingiz tekshirishingiz kerak.

Tashlab ketish tiqilib qolishning oldini olish uchun tarmog'ingizni tartibga solishning yana bir usuli. Trening davomida mashg'ulotni tark etish faqat neyronning ma'lum bir ehtimollik p (giperparametr) bilan faolligini saqlab turish yoki teskari holatda uni nolga o'rnatish orqali amalga oshiriladi. Natijada, tarmoq har bir o'quv partiyasi uchun boshqa parametrlar to'plamidan foydalanishi kerak, bu esa dominant bo'lib qolgan ba'zi parametrlardagi o'zgarishlarni kamaytiradi.

Muhim: Agar siz ham tashlab ketish, ham to'plamni normallashtirishdan foydalansangiz, ushbu operatsiyalar tartibiga yoki hatto ularni birgalikda ishlatishga ehtiyot bo'ling. Bularning barchasi hali ham faol muhokama qilinmoqda va to'ldirilmoqda. Ushbu mavzu bo'yicha ikkita muhim munozara mavjud Stackoverflow-da и Arxiv.

Ishni nazorat qilish

Bu ish jarayonlari va tajribalarni hujjatlashtirish haqida. Agar biror narsani hujjatlashtirmasangiz, masalan, qanday o'rganish tezligi yoki sinf og'irliklari ishlatilishini unutishingiz mumkin. Nazorat tufayli siz oldingi tajribalarni osongina ko'rishingiz va takrorlashingiz mumkin. Bu takroriy tajribalar sonini kamaytirish imkonini beradi.

Biroq, katta hajmdagi ish sharoitida qo'lda hujjatlarni rasmiylashtirish qiyin vazifaga aylanishi mumkin. Bu yerda Comet.ml kabi vositalar maʼlumotlar toʻplamini, kod oʻzgarishlarini, eksperimental tarixni va ishlab chiqarish modellarini, jumladan modelingiz haqidagi asosiy maʼlumotlarni (giperparametrlar, model unumdorligi koʻrsatkichlari va atrof-muhit maʼlumotlari) avtomatik tarzda qayd etishda yordam beradi.

Neyron tarmoq kichik o'zgarishlarga juda sezgir bo'lishi mumkin va bu model ishlashining pasayishiga olib keladi. Ishingizni kuzatish va hujjatlashtirish sizning muhit va modellashtirishni standartlashtirish uchun qilishingiz mumkin bo'lgan birinchi qadamdir.

Neyron tarmoqlar bilan ishlash: disk raskadrovka uchun nazorat ro'yxati

Umid qilamanki, bu post neyron tarmog'ingizni disk raskadrovka qilishni boshlashingiz uchun boshlang'ich nuqta bo'lishi mumkin.

Skillbox tavsiya qiladi:

Manba: www.habr.com

a Izoh qo'shish