Mundarija[Yashirish][Show]
So'nggi yillarda neyron tarmoqlar mashhurlikka erishdi, chunki ular keng ko'lamli vazifalarni bajarishda juda yaxshi ekanligini ko'rsatdi.
Ular tasvir va audioni aniqlash, tabiiy tilni qayta ishlash va hatto Go va shaxmat kabi murakkab o‘yinlarni o‘ynash uchun ajoyib tanlov ekanligi ko‘rsatilgan.
Ushbu postda men sizga neyron tarmog'ini o'qitishning butun jarayonini ko'rsataman. Men neyron tarmog'ini o'rgatishning barcha bosqichlarini aytib o'taman va tushuntiraman.
Men qadamlarni ko'rib chiqsam, amaliy misol ham borligiga ishonch hosil qilish uchun oddiy misol qo'shmoqchiman.
Shunday qilib, keling va neyron tarmoqlarni qanday qayta ishlashni o'rganamiz
Oddiydan boshlaylik va nima ekanligini so'raymiz neyron tarmoqlari birinchi navbatda.
Neyron tarmoqlar aynan nima?
Neyron tarmoqlar - bu inson miyasining ishlashini simulyatsiya qiluvchi kompyuter dasturlari. Ular katta hajmdagi ma'lumotlardan va odamlarni aniqlash qiyin bo'lgan nuqta naqshlaridan o'rganishlari mumkin.
Neyron tarmoqlar so'nggi yillarda rasm va audioni aniqlash, tabiiy tilni qayta ishlash va bashoratli modellashtirish kabi vazifalardagi ko'p qirraliligi tufayli mashhurlik kasb etdi.
Umuman olganda, neyron tarmoqlar keng ko'lamli ilovalar uchun kuchli vosita bo'lib, keng ko'lamli ishlarga yondashuvimizni o'zgartirish imkoniyatiga ega.
Nega ular haqida bilishimiz kerak?
Neyron tarmoqlarni tushunish juda muhim, chunki ular kompyuterni ko'rish, nutqni aniqlash va tabiiy tilni qayta ishlash kabi turli sohalarda kashfiyotlarga olib keldi.
Neyron tarmoqlar, masalan, oʻzi boshqariladigan avtomobillar, avtomatik tarjima xizmatlari va hatto tibbiy diagnostika sohasidagi soʻnggi ishlanmalarning markazida.
Neyron tarmoqlar qanday ishlashini va ularni qanday loyihalashni tushunish bizga yangi va ixtirochi ilovalarni yaratishga yordam beradi. Va, ehtimol, bu kelajakda yanada katta kashfiyotlarga olib kelishi mumkin.
Qo'llanma haqida eslatma
Yuqorida aytganimdek, neyron tarmoqni o'rgatish bosqichlarini misol qilib tushuntirmoqchiman. Buning uchun biz MNIST ma'lumotlar to'plami haqida gapirishimiz kerak. Bu neyron tarmoqlar bilan ishlamoqchi bo'lgan yangi boshlanuvchilar uchun mashhur tanlovdir.
MNIST qisqartma bo'lib, Modifikatsiyalangan Milliy standartlar va texnologiyalar institutini anglatadi. Bu qo'lda yozilgan raqamli ma'lumotlar to'plami bo'lib, u odatda mashinani o'rganish modellarini, xususan, neyron tarmoqlarni o'rgatish va sinab ko'rish uchun ishlatiladi.
To'plamda 70,000 dan 0 gacha bo'lgan qo'lda yozilgan raqamlarning 9 XNUMX kul rangdagi fotosuratlari mavjud.
MNIST ma'lumotlar to'plami mashhur mezondir tasvir tasnifi vazifalar. U tez-tez o'qitish va o'rganish uchun ishlatiladi, chunki u ixcham va oson ishlaydi, shu bilan birga mashinani o'rganish algoritmlari uchun javob berish qiyin.
MNIST ma'lumotlar to'plamini TensorFlow, Keras va PyTorch kabi bir nechta mashina o'rganish tizimi va kutubxonalari qo'llab-quvvatlaydi.
Endi biz MNIST ma'lumotlar to'plami haqida bilamiz, keling, neyron tarmog'ini o'rgatish bosqichlarimizni boshlaylik.
Neyron tarmoqni o'rgatishning asosiy bosqichlari
Kerakli kutubxonalarni import qilish
Neyron tarmoqni birinchi marta o'qitishni boshlaganda, modelni loyihalash va o'rgatish uchun zarur vositalarga ega bo'lish juda muhimdir. Neyron tarmog'ini yaratishning dastlabki bosqichi TensorFlow, Keras va NumPy kabi kerakli kutubxonalarni import qilishdir.
Ushbu kutubxonalar neyron tarmog'ining rivojlanishi uchun qurilish bloklari bo'lib xizmat qiladi va muhim imkoniyatlarni taqdim etadi. Ushbu kutubxonalarning kombinatsiyasi murakkab neyron tarmoq dizaynlarini yaratish va tezkor o'qitish imkonini beradi.
Bizning misolimizni boshlash uchun; biz TensorFlow, Keras va NumPy-ni o'z ichiga olgan kerakli kutubxonalarni import qilamiz. TensorFlow ochiq manbali mashinani o'rganish tizimi, Keras yuqori darajadagi neyron tarmoq API'si va NumPy raqamli hisoblash Python kutubxonasidir.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Ma'lumotlar to'plamini yuklang
Endi ma'lumotlar to'plami yuklanishi kerak. Ma'lumotlar to'plami - bu neyron tarmog'i o'qitiladigan ma'lumotlar to'plami. Bu har qanday turdagi ma'lumotlar, jumladan, fotosuratlar, audio va matn bo'lishi mumkin.
Ma'lumotlar to'plamini ikki qismga bo'lish juda muhim: biri neyron tarmoqni o'rgatish uchun, ikkinchisi esa o'qitilgan modelning to'g'riligini baholash uchun. Ma'lumotlar to'plamini import qilish uchun TensorFlow, Keras va PyTorch kabi bir nechta kutubxonalardan foydalanish mumkin.
Bizning misolimiz uchun MNIST ma'lumotlar to'plamini yuklash uchun Keras-dan ham foydalanamiz. Ma'lumotlar to'plamida 60,000 10,000 ta o'quv fotosuratlari va XNUMX XNUMX ta sinov rasmlari mavjud.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Ma'lumotlarni oldindan qayta ishlash
Ma'lumotlarni oldindan qayta ishlash neyron tarmog'ini o'qitishning muhim bosqichidir. Bu ma'lumotlarni neyron tarmoqqa yuborishdan oldin tayyorlash va tozalashni o'z ichiga oladi.
Piksel qiymatlarini masshtablash, ma'lumotlarni normallashtirish va teglarni bir martalik kodlashga aylantirish oldindan ishlov berish protseduralariga misoldir. Ushbu jarayonlar neyron tarmoqqa yanada samarali va aniq o'rganishga yordam beradi.
Ma'lumotni oldindan qayta ishlash, shuningdek, ortiqcha o'rnatishni minimallashtirish va neyron tarmog'ining ish faoliyatini yaxshilashga yordam beradi.
Neyron tarmoqni o'rgatishdan oldin ma'lumotlarni oldindan qayta ishlashingiz kerak. Bunga teglarni bir martalik kodlashga o'zgartirish va piksel qiymatlarini 0 dan 1 gacha o'lchash kiradi.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Modelni aniqlang
Neyron tarmoq modelini aniqlash jarayoni uning arxitekturasini o'rnatishni o'z ichiga oladi, masalan, qatlamlar soni, har bir qatlamdagi neyronlar soni, faollashtirish funktsiyalari va tarmoq turi (oldinga uzatish, takroriy yoki konvolyutsiya).
Siz foydalanadigan neyron tarmoq dizayni siz hal qilmoqchi bo'lgan muammo turiga qarab belgilanadi. Yaxshi aniqlangan neyron tarmog'i dizayni neyron tarmoqni o'rganishda uni samaraliroq va aniqroq qilish orqali yordam berishi mumkin.
Ayni paytda neyron tarmoq modelini tasvirlash vaqti keldi. Ushbu misol uchun har birida 128 neyronga ega ikkita yashirin qatlamli oddiy model va 10 ta neyronga ega softmax chiqish qatlamidan foydalaning.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Modelni kompilyatsiya qilish
Yo'qotish funktsiyasi, optimallashtiruvchi va ko'rsatkichlar neyron tarmoq modelini kompilyatsiya qilishda ko'rsatilishi kerak. Neyron tarmog'ining chiqishni to'g'ri prognoz qilish qobiliyati yo'qotish funktsiyasi bilan baholanadi.
Trening davomida neyron tarmoqning aniqligini oshirish uchun optimallashtiruvchi uning og'irliklarini o'zgartiradi. Trening davomida neyron tarmoqning samaradorligi ko'rsatkichlar yordamida o'lchanadi. Neyron tarmoqni o'rgatishdan oldin model yaratilishi kerak.
Bizning misolimizda biz hozirda modelni qurishimiz kerak.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Modelni o'rgating
Tayyorlangan ma'lumotlar to'plamini neyron tarmoq orqali o'tkazish va yo'qotish funktsiyasini minimallashtirish uchun tarmoqning og'irliklarini o'zgartirish neyron tarmoqni o'rgatish deb nomlanadi.
Tasdiqlash ma'lumotlar to'plami neyron tarmog'ini uning samaradorligini kuzatish va haddan tashqari o'rnatishning oldini olish uchun mashg'ulot paytida sinab ko'rish uchun ishlatiladi. Trening jarayoni biroz vaqt talab qilishi mumkin, shuning uchun neyron tarmoq mos kelmasligini oldini olish uchun tegishli tarzda o'qitilganligiga ishonch hosil qilish muhimdir.
Trening ma'lumotlaridan foydalanib, biz endi modelni o'rgatishimiz mumkin. Buning uchun biz partiya hajmini (model yangilanishidan oldin qayta ishlangan namunalar soni) va davrlar sonini (to'liq ma'lumotlar to'plami bo'ylab takrorlanishlar soni) aniqlashimiz kerak.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Modelni baholash
Sinov ma'lumotlar to'plamida neyron tarmoqning ishlashini tekshirish uni baholash jarayonidir. Ushbu bosqichda o'qitilgan neyron tarmoq test ma'lumotlar to'plamini qayta ishlash uchun ishlatiladi va aniqlik baholanadi.
Neyron tarmoq yangi, sinab ko'rilmagan ma'lumotlardan to'g'ri natijani qanchalik samarali prognoz qila olishi uning aniqligi o'lchovidir. Modelni tahlil qilish neyron tarmoq qanchalik yaxshi ishlashini aniqlashga yordam beradi va uni yanada yaxshilash yo'llarini taklif qiladi.
Nihoyat, treningdan so'ng test ma'lumotlari yordamida modelning ishlashini baholashimiz mumkin.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Ana xolos! MNIST ma'lumotlar to'plamidagi raqamlarni aniqlash uchun neyron tarmoqni o'rgatganmiz.
Ma'lumotlarni tayyorlashdan tortib o'qitilgan modelning samaradorligini baholashgacha, neyron tarmoqni o'qitish bir nechta jarayonlarni o'z ichiga oladi. Ushbu ko'rsatmalar yangi boshlanuvchilarga neyron tarmoqlarni samarali qurish va o'qitishda yordam beradi.
Turli muammolarni hal qilish uchun neyron tarmoqlardan foydalanmoqchi bo'lgan yangi boshlanuvchilar buni ushbu ko'rsatmalarga rioya qilish orqali amalga oshirishlari mumkin.
Misolni vizualizatsiya qilish
Keling, yaxshiroq tushunish uchun ushbu misol bilan nima qilganimizni tasavvur qilishga harakat qilaylik.
Matplotlib to'plami ushbu kod parchasida o'quv ma'lumotlar to'plamidan tasodifiy fotosuratlarni tanlash uchun ishlatiladi. Birinchidan, biz Matplotlib-ning "pyplot" modulini import qilamiz va uni "plt" deb nomlaymiz. Keyin, umumiy o'lchami 10 dan 10 dyuym bo'lgan holda, biz 5 qator va 5 ta pastki chiziqli ustunli rasmni yaratamiz.
Keyin, har birida o'quv ma'lumotlar to'plamidan rasmni ko'rsatib, pastki chizmalarni takrorlash uchun for tsiklidan foydalanamiz. Rasmni ko'rsatish uchun “imshow” funksiyasidan foydalaniladi, “cmap” opsiyasi fotosuratlarni kulrang rangda ko'rsatish uchun “kulrang” ga o'rnatiladi. Har bir kichik uchastkaning sarlavhasi, shuningdek, to'plamdagi bog'langan rasmning yorlig'iga o'rnatiladi.
Nihoyat, rasmdagi chizilgan rasmlarni ko'rsatish uchun biz "ko'rsatish" funksiyasidan foydalanamiz. Ushbu funktsiya bizga ma'lumotlar to'plamidagi fotosuratlar namunasini vizual baholash imkonini beradi, bu bizga ma'lumotlarni tushunishga va har qanday mumkin bo'lgan tashvishlarni aniqlashga yordam beradi.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Muhim neyron tarmoq modellari
- Oldinga neyron tarmoqlari (FFNN): Neyron tarmog'ining oddiy turi bo'lib, unda axborot faqat bitta yo'l bilan, ya'ni kirish qatlamidan chiqish qatlamiga bir yoki bir nechta yashirin qatlamlar orqali tarqaladi.
- Konvolyutsion neyron tarmoqlari (CNN): Tasvirni aniqlash va qayta ishlashda keng qo'llaniladigan neyron tarmoq. CNN avtomatik ravishda rasmlardan xususiyatlarni tanib olish va chiqarish uchun mo'ljallangan.
- Takroriy neyron tarmoqlari (RNN): Tasvirni aniqlash va qayta ishlashda keng qo'llaniladigan neyron tarmoq. CNN avtomatik ravishda rasmlardan xususiyatlarni tanib olish va chiqarish uchun mo'ljallangan.
- Uzoq qisqa muddatli xotira (LSTM) tarmoqlari: Standart RNN-larda yo'qolgan gradientlar muammosini bartaraf etish uchun yaratilgan RNN shakli. Ketma-ket ma'lumotlardagi uzoq muddatli bog'liqliklarni LSTMlar bilan yaxshiroq olish mumkin.
- Avtokoderlar: Nazorat qilinmagan o'quv neyron tarmog'i, unda tarmoq o'zining chiqish sathida kirish ma'lumotlarini qayta ishlab chiqarishga o'rgatiladi. Ma'lumotni siqish, anomaliyalarni aniqlash va tasvirni denozizatsiya qilish avtomatik kodlovchilar yordamida amalga oshirilishi mumkin.
- Generativ raqib tarmoqlari (GAN): Generativ neyron tarmoq - bu o'quv ma'lumotlar to'plami bilan taqqoslanadigan yangi ma'lumotlarni ishlab chiqarishga o'rgatilgan neyron tarmoq shakli. GANlar ikkita tarmoqdan iborat: yangi ma'lumotlarni yaratuvchi generator tarmog'i va yaratilgan ma'lumotlar sifatini baholovchi diskriminator tarmog'i.
Xulosa, keyingi qadamlaringiz qanday bo'lishi kerak?
Neyron tarmoqni o'qitish haqida ko'proq ma'lumot olish uchun bir nechta onlayn resurslar va kurslarni o'rganing. Loyihalar yoki misollar ustida ishlash neyron tarmoqlarni yaxshiroq tushunish usullaridan biridir.
Ikkilik tasniflash muammolari yoki rasmlarni tasniflash vazifalari kabi oson misollar bilan boshlang, so'ngra tabiiy tilni qayta ishlash yoki boshqa qiyinroq vazifalarga o'ting. takomillashtirishni o'rganish.
Loyihalar ustida ishlash haqiqiy tajriba orttirishga va neyron tarmoqlarni o'qitish ko'nikmalarini oshirishga yordam beradi.
Shuningdek, siz boshqa oʻquvchilar va mutaxassislar bilan muloqot qilish, ishingizni baham koʻrish, sharhlar va yordam olish uchun onlayn mashinalarni oʻrganish va neyron tarmoqlari guruhlari va forumlariga qoʻshilishingiz mumkin.
LSRS MONRAD-KROHN
⁶ĵXatolarni minimallashtirish uchun python dasturini ko'rishni istardim. Keyingi qatlamga vazn o'zgarishi uchun maxsus tanlov tugunlari