Mashinada o'rganish qiziqarli! 3-qism: chuqur o'rganish va konvolyutsion neyron tarmoqlari

Yangilanish: Ushbu maqola seriyaning bir qismi. To'liq seriyalarni ko'rib chiqing: 1 qism, 2 qism, 3 qism, 4 qism, 5 qism, 6 qism, 7 qism va 8 qism! Siz shuningdek ushbu maqolani 普通话, Russkiy, 한국어, Português, Tiếng Việt yoki Italiano tillarida o'qishingiz mumkin.

Devning yangilanishi: Men ushbu maqolalar asosida yangi kitob yozdim! Bu nafaqat mening barcha maqolalarimni kengaytiradi va yangilaydi, balki juda ko'p minglab yangi tarkibga va ko'plab kodlash loyihalariga ega. Hozir tekshirib ko'ring!

Siz chuqur o'rganish haqidagi cheksiz yangiliklarni o'qishdan charchadingizmi va buning ma'nosini bilmayapsizmi? Buni o'zgartiraylik!

Bu safar biz chuqur o'rganish yordamida tasvirlardagi ob'ektlarni taniydigan dasturlarni yozishni o'rganamiz. Boshqacha qilib aytganda, biz sizga Google Photos-ga rasmlardagi rasmlarga asoslanib rasmlaringizni qidirishga imkon beradigan qora sehrni tushuntirmoqchimiz:

Endi Google sizga o'zingizning rasmlaringizni tavsif bo'yicha qidirishga imkon beradi - hattoki ular yorliqsiz bo'lsa ham! Bu qanday ishlaydi??

Xuddi 1-qism va 2-qism singari, ushbu qo'llanma mashinani o'rganishga qiziqqan, ammo qaerdan boshlashni bilmagan har bir kishiga mo'ljallangan. Maqsad har kim uchun ochiqdir - bu juda ko'p umumlashtirish mavjudligini anglatadi va biz ko'plab tafsilotlarni o'tkazib yubormoqdamiz. Ammo kim qayg'uradi? Agar bu "ML" ga ko'proq qiziqishni uyg'otadigan bo'lsa, u holda missiya bajarildi!

(Agar siz birinchi va ikkinchi qismni hali o'qimagan bo'lsangiz, ularni hozir o'qing!)

Ob'ektlarni chuqur o'rganish bilan tanishish

xkcd # 1425 (Asl nusxasini bu erda ko'ring)

Siz ilgari ushbu mashhur xkcd komiksini ko'rgan bo'lishingiz mumkin.

Gef 3-yoshli har qanday bola qushning fotosuratini taniy oladi degan g'oyaga asoslanadi, ammo kompyuterni qanday qilib ob'ektlarni tanib olishni bilib olish 50 yildan beri eng yaxshi kompyuter olimlarini hayratda qoldiradi.

So'nggi bir necha yil ichida biz chuqur konvulsion neyron tarmoqlari yordamida ob'ektni aniqlashga yaxshi yondashuvni topdik. Bu William Gibson Sci-Fi romanidan tashkil topgan bir nechta so'zlarga o'xshaydi, lekin agar siz ularni birma-bir buzib qo'ysangiz, g'oyalar mutlaqo tushunarli.

Shunday qilaylik - qushlarni taniy oladigan dastur yozaylik!

Oddiy boshlash

Qushlarning rasmlarini qanday tanishni o'rganishimizdan oldin, keling, sodda narsalarni - qo'lda yozilgan "8" ni qanday qilib tanib olishni bilib olaylik.

2-bo'limda biz neyron tarmoqlari ko'plab oddiy neyronlarning zanjirlarini zanjirlash orqali murakkab muammolarni qanday hal qilishini bilib oldik. Biz uyning necha yotoq xonasi, qancha katta va qaysi mahallada joylashganligini aniqlash uchun kichik neyron tarmog'ini yaratdik.

Shuningdek, biz mashinani o'rganish g'oyasi shundan iboratki, xuddi shu umumiy algoritmlarni turli xil muammolarni hal qilish uchun turli xil ma'lumotlar bilan qayta ishlatish mumkin. Qo'lda yozilgan matnni tanib olish uchun shu neyron tarmoqni o'zgartiraylik. Ammo ishni juda sodda qilish uchun biz faqat bitta harfni - "8" raqamini tan olishga harakat qilamiz.

Mashinada o'rganish faqat ma'lumotlar mavjud bo'lganda ishlaydi - tercihen ko'p ma'lumotlar. Boshlash uchun bizga juda ko'p va juda ko'p "8" s qo'l yozuvi kerak. Yaxshiyamki, tadqiqotchilar shu maqsadda MNIST ma'lumotlar to'plamini qo'lda yozilgan raqamlar to'plamini yaratdilar. MNIST, har birida 18x18 rasm bo'lgan 60 000 ta rasmda yozilgan raqamlarni taqdim etadi. Ma'lumotlar to'plamidan ba'zi "8" lar:

MNIST ma'lumotlar to'plamidan sakkiztasi

Agar siz bu haqda o'ylasangiz, hamma narsa shunchaki raqamlardir

Biz 2-bo'limda qilgan neyron tarmog'i kirish sifatida uchta raqamni oldi ("3" yotoq xonasi, "2000" kvadrat fut va boshqalar). Ammo endi biz rasmlarni neyron tarmog'imiz bilan qayta ishlashni xohlaymiz. Qanday qilib dunyoda biz tasvirlarni shunchaki raqamlar o'rniga neyron tarmoqqa tarqatamiz?

Javob juda oddiy. Neyron tarmoq raqamlarni kirish sifatida oladi. Kompyuter uchun rasm aslida har bir pikselning qorong'i ekanligini ko'rsatadigan raqamlar to'plami:

Tasvirni neyron tarmog'imizga kiritish uchun biz 18x18 pikselli tasvirni 324 raqamdan iborat qator sifatida ko'rib chiqamiz:

324 kirish dastasi, biz shunchaki neyron tarmog'imizni 324 kirish tuguniga ega bo'lish uchun kattalashtiramiz:

E'tibor bering, bizning neyron tarmog'imiz hozirda ikkita chiqish (faqat bitta o'rniga) mavjud. Birinchi natija tasvirning “8” ekanligini taxmin qiladi, ikkinchi natijada esa “8” emasligi taxmin qilinadi. Biz tan olmoqchi bo'lgan har bir ob'ekt turi uchun alohida chiqishga ega bo'lib, ob'ektlarni guruhlarga ajratish uchun neyron tarmoqdan foydalanishimiz mumkin.

Bizning neyron tarmog'imiz oldingisidan ancha katta (3 o'rniga 324 kirish!). Ammo har qanday zamonaviy kompyuter neyron tarmoqni bir necha yuz tugunlari bilan miltillamasdan ishlay oladi. Bu hatto sizning uyali telefoningizda ham yaxshi ishlaydi.

Neyron tarmog'ini "8" va "8" raqamlari bilan tasvirlash bilan o'rgatish, shuning uchun ularni bir-biridan ajratishni o'rganadi.Biz "8" raqamini boqsak, biz tasvirning ehtimolligini aytamiz. “8” 100% va “8” emas ehtimolligi 0% ni tashkil qiladi.

Trening haqidagi ba'zi ma'lumotlar:

Mmm ... shirin, shirin ta'lim to'g'risidagi ma'lumotlar

Biz bunday neyron tarmoqni bir necha daqiqada zamonaviy noutbukda mashq qilishimiz mumkin. Tugatgandan so'ng, biz "8" s rasmlarini juda yuqori aniqlik bilan taniy oladigan neyron tarmog'iga ega bo'lamiz. Dunyo (1980-yillarning oxiri) tasvirni tanib olish dunyosiga xush kelibsiz!

Tunnel ko'rinishi

Piksellarni neyron tarmoqqa tarqatish, aslida rasmni aniqlash uchun ishlaganligi juda yaxshi! Mashinani o'rganish sehrdir! … To‘g‘rimi?

Albatta, bu oddiy emas.

Birinchidan, yaxshi yangilik shundaki, bizning "8" tanib oluvchimiz haqiqatan ham oddiy tasvirlarda yaxshi ishlaydi, chunki harf tasvirning o'rtasida joylashgan:

Ammo hozir juda yomon yangilik:

Harf rasmda yaxshi joylashtirilmagan bo'lsa, bizning "8" tanib oluvchimiz umuman ishlamaydi. Faqatgina mayda pozitsiyaning o'zgarishi hamma narsani buzadi:

Buning sababi, bizning tarmog'imiz faqat mukammal "8" modelini o'rgangan. "8" markazi nima ekanligini mutlaqo tasavvurga ega emas. U aniq bitta naqsh va faqat bitta naqshni biladi.

Bu real dunyoda unchalik foydali emas. Haqiqiy dunyo muammolari hech qachon bu qadar toza va oddiy emas. Shunday qilib, biz "8" to'liq markazlashmagan holatlarda neyron tarmog'imiz qanday ishlashini aniqlashimiz kerak.

Brute Force Idea №1: Slayd oynasi bilan qidirish

Biz allaqachon rasmda markazlashtirilgan "8" ni topish uchun juda yaxshi dastur yaratdik. Tasvirning atrofini sakkiztadan kichik bo'limlarda, bitta bo'limda, biz topgunimizcha skanerlasak nima bo'ladi?

Ushbu yondashuv toymasin deraza deb nomlanadi. Bu shafqatsiz kuchlar echimi. Ba'zi cheklangan holatlarda u yaxshi ishlaydi, ammo bu haqiqatan ham samarasiz. Siz bir xil tasvirni turli o'lchamdagi ob'ektlarni izlash uchun qayta-qayta tekshirishingiz kerak. Biz bundan ham yaxshi ish qila olamiz!

Brute Force Idea # 2: Qo'shimcha ma'lumotlar va chuqur neyron tarmog'i

Biz o'z tarmog'imizni o'qitganimizda, biz uni faqat "8" larni mukammal markazlashtirilganligini ko'rsatdik. Agar biz uni ko'proq ma'lumotlar bilan, shu jumladan tasvir atrofidagi har xil pozitsiyalarda va o'lchovlarda "8" bilan o'rgatsak nima bo'ladi?

Biz hatto yangi o'quv ma'lumotlarini to'plashimiz shart emas. Biz skriptni shunchaki "8" raqami bilan har xil ko'rinishdagi turli xil pozitsiyalarda yaratish uchun yozishimiz mumkin:

Bizda mavjud bo'lgan o'quv rasmlarining turli xil versiyalarini yaratish orqali Sintetik Ta'lim ma'lumotlarini yaratdik. Bu juda foydali texnik!

Ushbu texnikadan foydalangan holda biz osongina cheksiz ta'lim ma'lumotlarini yaratamiz.

Ko'proq ma'lumotlar bizning neyron tarmog'imiz uchun muammoni hal qilishni qiyinlashtiradi, ammo biz tarmoqni kattalashtirish va shu bilan yanada murakkab naqshlarni o'rganishga qodir bo'lsak, buning o'rnini qoplashimiz mumkin.

Tarmoqni kattaroq qilish uchun biz qatlamlarni tugunlar qatlamiga yig'amiz:

Biz buni "chuqur neyron tarmoq" deb ataymiz, chunki u an'anaviy neyron tarmoqqa qaraganda ko'proq qatlamlarga ega.

Bu g'oya 1960-yillarning oxirlaridan beri mavjud. Ammo yaqin vaqtgacha ushbu katta neyron tarmog'ini o'rgatish foydali bo'lish uchun juda sekin edi. Ammo bir marta biz oddiy kompyuter protsessorlari o'rniga 3 o'lchamli grafik kartalarni (masalan, matritsani ko'paytirish uchun ishlab chiqilgan) qanday ishlatishni bilib oldik, katta neyron tarmoqlari bilan ishlash to'satdan amaliy bo'lib qoldi. Aslida, Overwatch-ni o'ynashda ishlatadigan aynan bir NVIDIA GeForce GTX 1080 video kartasi neyron tarmoqlarini aql bovar qilmaydigan darajada tezkor ravishda o'rgatish uchun ishlatilishi mumkin.

Neyron tarmog'imizni haqiqatan ham katta qilib, uni 3d grafik kartasi yordamida tezda o'rgata olsak ham, bu haligacha bizni hal qilishga qodir emas. Tasvirlarni neyron tarmog'imizga qanday qayta ishlashimiz haqida biz aqlli bo'lishimiz kerak.

O'ylab ko'r. Rasmning yuqori qismidagi "8" ni tanib olishni tarmoqqa o'rgatish mantiqqa to'g'ri kelmaydi, chunki uni rasmning pastki qismidagi "8" ni tanib olishga o'rgatish mantiqiy emas.

Neyron tarmog'ini etarlicha aqlli qilish uchun biron bir usul bo'lishi kerak, bunda rasmning biron bir joyida “8” bir xil ekanligini va qo'shimcha mashg'ulotlarsiz ham xuddi shu narsani bilish kerak. Baxtimizga ... bor!

Qaror konvolyutsiya

Inson sifatida siz intuitiv ravishda rasmlarning ierarxiya yoki kontseptual tuzilishga ega ekanligini bilasiz. Ushbu rasmni ko'rib chiqing:

O'g'limning bebaho surati

Inson sifatida siz ushbu rasmdagi ierarxiyani darhol tan olasiz:

  • Zamin o't va beton bilan qoplangan
  • Bola bor
  • Bola otda o'tiradi
  • Baquvvat ot maysa tepasida

Eng muhimi, biz bola qanday bo'lishidan qat'i nazar, bola g'oyasini tan olamiz. Bola paydo bo'lishi mumkin bo'lgan har qanday sirt uchun biz uning g'oyasini qayta o'rganib chiqishimiz shart emas.

Ammo hozirda bizning neyron tarmog'imiz buni qila olmaydi. Tasavvur qiladiki, tasvirning boshqa qismidagi "8" - bu mutlaqo boshqa narsa. Rasmdagi ob'ektni boshqa joyga ko'chirish uni boshqa narsa qilishini tushunmaydi. Bu har bir ob'ektni identifikatsiyalashni har qanday holatda qayta o'rganish kerakligini anglatadi. Bu yutadi.

Biz neyron tarmog'imizga tarjimaning o'zgarmasligi haqida tushuncha berishimiz kerak - "8" - bu "8", rasm qaerda ko'rinmasin.

Biz buni Convolution deb nomlangan jarayon yordamida qilamiz. Yig'ilish g'oyasi qisman kompyutershunoslik va qisman biologiya tomonidan ilhomlantirilgan (ya'ni aqldan ozgan olimlar mushuklarning miyasini mushuklarning tasvirlarini qanday qayta ishlashini aniqlash uchun g'alati problar bilan silkitmoqda).

Konvolyutsiya qanday ishlaydi

Butun rasmlarni asabiy tarmoqqa raqamlarning bitta tarmog'i sifatida berishning o'rniga, biz rasmda qaerda bo'lishidan qat'i nazar, ob'ekt bir xil ekanligi haqidagi fikrni ishlatadigan yanada oqilona narsa qilamiz.

Mana bu qanday bosqichma-bosqich ishlaydi -

1-qadam: Tasvirni bir-birining ustiga tushgan rasmlarga ajrating

Yuqoridagi slayd oynasini qidirishga o'xshab, butun asl rasm ustidan slayd oynasini o'tkazaylik va har bir natijani alohida, mayda rasm plitka sifatida saqlaymiz:

Shunday qilib, biz asl rasmimizni 77 ta kichik o'lchamdagi kichkina rasm plitkalariga aylantirdik.

2-qadam: Har bir rasm mozaikasini kichik neyron tarmoqqa joylashtiring

Avvalroq, biz bitta rasmni "8" ekanligini bilish uchun neyron tarmoqqa bog'ladik. Biz bu erda aniq bir narsani qilamiz, lekin har bir rasm uchun har bir plitka uchun buni qilamiz:

Buni har bir plitka uchun 77 marta takrorlang.

Biroq, bitta katta burilish mavjud: biz har bir plitka uchun bir xil asl tasvirni asabiylashtiramiz. Boshqacha qilib aytganda, biz har bir rasm plitkasiga teng munosabatda bo'lamiz. Agar biron bir berilgan plitkada biron bir qiziq narsa paydo bo'lsa, biz uni qiziqarli deb belgilaymiz.

3-qadam: natijalarni har bir mozaikadan yangi qatorga saqlang

Biz asl plitkalarning joylashishini kuzatishni xohlamaymiz. Shunday qilib, natijani asl rasm bilan bir xil tartibga solib, har bir plitkani panjara ichiga tushirishdan saqlaymiz. Bu quyidagicha:

Boshqacha qilib aytganda, biz katta rasmdan boshladik va biz asl rasmimizning qaysi qismlari eng qiziqarli ekanligini yozadigan biroz kichikroq qator bilan tugadik.

4-qadam: Downsampling

3-qadamning natijasi asl rasmning qaysi qismlari eng qiziqarli ekanligini aniqlaydigan qator edi. Ammo bu qator juda katta:

Massiv hajmini kamaytirish uchun uni maksimal puling deb nomlangan algoritm yordamida qisqartiramiz. Bu go'zal tuyuladi, lekin unday emas!

Biz massivning har 2x2 kvadratini ko'rib chiqamiz va eng katta sonni saqlaymiz:

Bu erda g'oya shundan iboratki, agar biz har bir 2x2 panjara kvadratini tashkil etadigan to'rtta kirish plitalaridan birortasida biron bir qiziq narsani topsak, biz shunchaki eng qiziqini saqlaymiz. Bu eng muhim bitlarni ushlab turganda bizning massivimiz hajmini kamaytiradi.

Yakuniy bosqich: bashorat qiling

Hozircha biz gigant tasvirni juda kichik massivga aylantirdik.

Nima deb o'ylaysan? Bu massiv bu shunchaki raqamlar, shuning uchun biz bu kichik qatorni boshqa neyron tarmoqqa kirishda foydalanishimiz mumkin. Ushbu yakuniy neyron tarmog'i rasmning mos yoki mos kelmasligini hal qiladi. Uni yig'ish bosqichidan farqlash uchun biz uni "to'liq ulangan" tarmoq deb ataymiz.

Shunday qilib, boshidan oxirigacha bizning besh bosqichli quvurimiz quyidagicha:

Yana qadamlar qo'shish

Bizning rasmni qayta ishlash quvurlari bir qator bosqichlardan iborat: yig'ish, maksimal puling va nihoyat to'liq ulangan tarmoq.

Haqiqiy dunyoda muammolarni hal qilayotganda, bu qadamlar birlashtirilishi va istagancha stacked bo'lishi mumkin! Ikkita, uch yoki hatto o'nta konvolyutsiya qatlamiga ega bo'lishingiz mumkin. Siz ma'lumotlarning hajmini kamaytirishni xohlagan joyda maksimal pulingni to'plashingiz mumkin.

Asosiy g'oya katta rasm bilan boshlash va oxirigacha bitta natijaga erishmaguningizcha asta-sekin asta-sekin pastga qaynatishdir. Qisqartirish qadamlari qanchalik ko'p bo'lsa, sizning tarmog'ingiz tanishni o'rganishni yanada murakkablashtiradi.

Masalan, birinchi yig'ish bosqichi o'tkir qirralarni tanishni o'rganishi mumkin, ikkinchi bosqich esa o'tkir qirralarning bilimi yordamida tumshug'larni tanib olishi mumkin, uchinchi bosqich esa tumshuqlar haqidagi ma'lumotlardan foydalangan holda butun qushlarni tanishi mumkin.

Mana sizga haqiqatdan ham chuqur konvulsion tarmoq qanday ko'rinishga ega (siz ilmiy maqolada topasiz).

Bunday holda, ular 224 x 224 pikselli tasvirni boshlaydilar, konversiya va maksimal pulingni ikki marta qo'llaydilar, konvulsiyani yana 3 marta qo'llaydilar, maksimal pulingni qo'llaydilar va keyin ikkita to'liq ulangan qatlamlarga ega bo'ladilar. Buning natijasi shundaki, rasm 1000 toifadan biriga kiritilgan!

To'g'ri tarmoqni qurish

Tasvir klassifikatorini ishlashi uchun qanday bosqichlarni birlashtirish kerakligini qanday bilasiz?

Rostini aytsam, siz bunga ko'p tajriba va sinovlarni amalga oshirish orqali javob berishingiz kerak. Siz hal qiladigan muammoning maqbul tuzilishi va parametrlarini topmasdan oldin 100 ta tarmoqni o'qitishga to'g'ri keladi. Mashinani o'rganish juda ko'p sinovlarni va xatolarni o'z ichiga oladi!

Bizning Qushlarning tasniflagichini yaratish

Endi nihoyat biz rasm qush yoki yo'qligini hal qiladigan dastur yozish uchun etarli ma'lumotga egamiz.

Har doimgidek, boshlash uchun bizga ba'zi ma'lumotlar kerak. Bepul CIFAR10 ma'lumotlar to'plamida 6000 ta qushlarning suratlari va 52000 ta qush bo'lmagan narsalarning rasmlari mavjud. Ammo qo'shimcha ma'lumot olish uchun Caltech-UCSD Birds-200–2011 ma'lumotlar to'plamiga yana 12000 parranda rasmini qo'shamiz.

Bizning birlashtirilgan ma'lumotlar to'plamidan bir nechta qushlar:

Mana, 52000 ta qush bo'lmagan tasvirlar:

Ushbu ma'lumotlar to'plami bizning maqsadlarimiz uchun juda yaxshi ishlaydi, ammo 72000 past o'lchamdagi rasmlar haqiqiy dasturlar uchun juda kichikdir. Agar siz Google darajasidagi ishlashni xohlasangiz, sizga millionlab katta rasmlar kerak bo'ladi. Mashinada o'qishda ko'proq ma'lumotga ega bo'lish deyarli har doim algoritmlarni yaxshiroq bilish muhimroqdir. Endi siz nima uchun Google sizga cheksiz fotosurat saqlashni taklif qilishdan xursand ekanligini bilasiz. Ular sizning shirin, shirin ma'lumotlaringizni xohlashadi!

Tasniflagichni yaratish uchun biz TFLearn-dan foydalanamiz. TFlearn - bu soddalashtirilgan API-ni taqdim etadigan Google TensorFlow chuqur o'rganish kutubxonasi atrofini o'rash. Bu tarmoqning qatlamlarini aniqlash uchun bir nechta kod satrlarini yozishni osonlashtiradigan konvulsion neyron tarmoqlarni yaratishni osonlashtiradi.

Tarmoqni aniqlash va o'rgatish uchun kod:

Agar siz etarlicha tezkor xotira bilan yaxshi video karta bilan mashq qilsangiz (masalan, Nvidia GeForce GTX 980 Ti yoki undan yuqori), bu bir soatdan kamroq vaqt ichida amalga oshiriladi. Agar siz oddiy cpu bilan mashq qilsangiz, ko'proq vaqt talab qilinishi mumkin.

U mashq qilar ekan, aniqlik oshadi. Birinchi pasdan keyin men 75.4% aniqlikni oldim. Bor-yo'g'i 10 ta pasdan keyin u 91,7% ga etdi. 50 yoki undan ortiq paslardan so'ng 95,5% aniqlik aniqlandi va qo'shimcha mashg'ulotlar yordam bermadi, shuning uchun men uni shu erda to'xtatdim.

Tabriklaymiz! Bizning dasturimiz endi qushlarni tasvirlarda tanishi mumkin!

Tarmoqimizni sinab ko'rish

Endi biz o'qitilgan neyron tarmog'iga egamiz, undan foydalanishimiz mumkin! Mana bitta rasmli faylni oladigan va u qushmi yoki yo'qmi bashorat qiladigan oddiy skript.

Ammo haqiqatan ham bizning tarmog'imiz qanchalik samarali ekanligini ko'rish uchun uni ko'plab rasmlar bilan sinab ko'rishimiz kerak. Men yaratgan ma'lumotlar to'plamida tekshirish uchun 15000 rasm saqlangan. Men ushbu 15000 rasmni tarmoq orqali boshqarganimda, bu 95% to'g'ri javobni bashorat qilgan.

Bu juda yaxshi ko'rinadi, shunday emasmi? Xo'sh ... bu bog'liq!

95% qanchalik aniq?

Bizning tarmog'imiz 95% aniqligini ta'kidlaydi. Ammo shayton tafsilotlaridadir. Bu har xil narsalarni anglatishi mumkin.

Masalan, bizning o'quv rasmlarining 5% qush bo'lsa, qolgan 95% qush bo'lmasa? Har safar "qush emas" deb taxmin qilgan dastur 95% aniq bo'ladi! Ammo bu ham 100% befoyda bo'ladi.

Biz nafaqat umumiy aniqlikdan emas, balki raqamlarga ham ko'proq qarashimiz kerak. Tasniflash tizimining qanchalik yaxshi ekanligi to'g'risida xulosa chiqarish uchun uning muvaffaqiyatsiz bo'lgan vaqtini emas, balki qanday qilib muvaffaqiyatsizlikka uchraganiga ham diqqat bilan qarashimiz kerak.

Bizning bashoratlarimiz haqida "to'g'ri" va "noto'g'ri" deb o'ylashning o'rniga, ularni to'rtta alohida toifaga ajratishga ruxsat bering -

  • Birinchidan, bizning tarmog'imiz qushlar deb to'g'ri aniqlangan ba'zi qushlar. Keling, ushbu haqiqiy musbatlarni chaqiraylik:
Qoyil! Bizning tarmog'imiz juda ko'p turli xil qushlarni muvaffaqiyatli taniy oladi!
  • Ikkinchidan, bizning tarmog'imiz "qush emas" deb to'g'ri aniqlangan rasmlar. Bular Haqiqiy Salbiy deb ataladi:
Ot va yuk mashinalari bizni aldamaydi!
  • Uchinchidan, bu erda biz qushlar deb o'ylagan, ammo umuman qush emas bo'lgan ba'zi rasmlar. Bu bizning noto'g'ri ijobiy narsalarimiz:
Ko'plab samolyotlar qushlar uchun yanglishdi! Bu mantiqiy.
  • Va nihoyat, qushlarning tasvirini biz qush deb tan olmaganmiz. Bu bizning noto'g'ri salbiy narsalarimiz:
Bu qushlar bizni aldashdi! Ahmoq tuyaqushlar! Ular hatto qushlarday hisoblanadimi?

Bizning 15000 ta rasmimizni tekshirish to'plamidan foydalanib, har bir toifaga bashoratimiz necha marta tushgan:

Nega biz natijalarimizni shunday buzamiz? Chunki hamma xatolar bir xilda yaratilmaydi.

Tasavvur qiling-a, biz MRG tasviridan saraton kasalligini aniqlash uchun dastur yozayotgan edik. Agar biz saraton kasalligini aniqlasak, bizda yolg'on manfiylardan ko'ra noto'g'ri ijobiy narsalar mavjud edi. Soxta salbiy holatlar yuzaga kelishi mumkin bo'lgan eng yomon vaziyat bo'ladi - dastur kimgadir ular aniq saraton kasalligini yuqtirganliklarini aytishganida, aslida ular buni qilishgan.

Umumiy aniqlikni ko'rib chiqishning o'rniga, biz aniqlik va Eslatmalarni o'lchaymiz. Aniqlik va eslash o'lchovlari bizga qanchalik yaxshi bajarganligimiz haqida aniq tasavvur beradi:

Bu bizga 97% "Qush" ni taxmin qilganimizda, biz haq ekanligimizni anglatadi! Ammo, shuningdek, biz ma'lumotlar to'plamida 90% haqiqiy qushlarni topdik, deb aytadi. Boshqacha qilib aytganda, biz har qanday qushni uchratmasligimiz mumkin, lekin biz uni topganimizda aminmiz!

Bu erdan qayerga borish kerak

Endi siz chuqur konvulsion tarmoqlarning asoslarini bilganingizdan so'ng, turli xil neyron tarmoqlari arxitekturalari bilan qo'lingizni ifloslantirish uchun tflearn bilan bog'liq ba'zi misollarni sinab ko'rishingiz mumkin. U hatto o'rnatilgan ma'lumotlar to'plamlari bilan birga keladi, shuning uchun o'z rasmlaringizni topishingiz shart emas.

Shuningdek, hozirda siz bukishni boshlashingiz va mashinalarni o'qitishning boshqa yo'nalishlari haqida ma'lumotga ega bo'lishingiz kerak. Keyingi Atari o'yinlarini qanday o'ynashni kompyuterlarga o'rgatish uchun algoritmlardan foydalanishni o'rganmaslik kerak.

Agar sizga ushbu maqola yoqqan bo'lsa, iltimos, mening Machine Learning-ga yozilishni o'ylab ko'ring! elektron pochta ro'yxati. Sizga faqat yangi va ajoyib narsalarni ulashganimda elektron pochta xabarlarini yuboraman. Bu kabi ko'proq maqolalar qachon yozganimni aniqlashning eng yaxshi usuli.

Bundan tashqari, meni Twitter-da @ageitgey-da kuzatib borishingiz, to'g'ridan-to'g'ri elektron pochta orqali yuborishingiz yoki linkda topishingiz mumkin. Agar siz mashinangizni o'rganish bo'yicha sizga yoki jamoangizga yordam bera olsam, sizdan eshitishni istayman.

Endi "Mashinada o'qishni" davom eting, bu 4 qism, 5 qism va 6 qism!