Mündəricat[Gizlət][Göstər]
Son illərdə neyroşəbəkələrin populyarlığı artdı, çünki onlar geniş spektrli tapşırıqlarda son dərəcə yaxşı olduqlarını göstərdilər.
Onların təsvirin və səsin tanınması, təbii dilin işlənməsi və hətta Go və şahmat kimi mürəkkəb oyunları oynamaq üçün əla seçim olduğu göstərilib.
Bu yazıda sizə neyron şəbəkəsini öyrətməyin bütün prosesini izah edəcəyəm. Bir neyron şəbəkəsini öyrətmək üçün bütün addımları qeyd edib izah edəcəyəm.
Addımları nəzərdən keçirərkən, praktik bir nümunənin də olduğundan əmin olmaq üçün sadə bir nümunə əlavə etmək istərdim.
Beləliklə, gəlin və neyron şəbəkələri emal etməyi öyrənək
Gəlin sadədən başlayaq və nə olduğunu soruşaq sinir şəbəkələri Birinci yerdə.
Neyron şəbəkələri tam olaraq nədir?
Neyron şəbəkələri insan beyninin işini simulyasiya edən kompüter proqramıdır. Onlar böyük həcmli məlumatlardan və insanların aşkar etməkdə çətinlik çəkə biləcəyi ləkə nümunələrindən öyrənə bilərlər.
Neyron şəbəkələri son illərdə şəkil və səsin tanınması, təbii dilin işlənməsi və proqnozlaşdırıcı modelləşdirmə kimi vəzifələrdə çox yönlü olması səbəbindən populyarlıq qazanmışdır.
Bütövlükdə, neyron şəbəkələr geniş tətbiqlər üçün güclü vasitədir və geniş çeşidli işlərə yanaşma tərzimizi dəyişdirmək şansına malikdir.
Niyə Onlar Haqqında Bilməliyik?
Neyron şəbəkələri başa düşmək çox vacibdir, çünki onlar kompüter görmə, nitqin tanınması və təbii dilin işlənməsi daxil olmaqla müxtəlif sahələrdə kəşflərə səbəb olub.
Məsələn, neyron şəbəkələri özü idarə edən avtomobillər, avtomatik tərcümə xidmətləri və hətta tibbi diaqnostika sahəsində son inkişafların mərkəzində dayanır.
Neyron şəbəkələrin necə fəaliyyət göstərdiyini və onların necə dizayn ediləcəyini anlamaq bizə yeni və ixtiraçı tətbiqlər yaratmağa kömək edir. Və bəlkə də gələcəkdə daha böyük kəşflərə səbəb ola bilər.
Dərslik haqqında qeyd
Yuxarıda dediyim kimi, neyroşəbəkə təliminin mərhələlərini misal göstərməklə izah etmək istərdim. Bunu etmək üçün MNIST məlumat dəsti haqqında danışmalıyıq. Bu, neyron şəbəkələri ilə başlamaq istəyən yeni başlayanlar üçün məşhur seçimdir.
MNIST, Dəyişdirilmiş Milli Standartlar və Texnologiya İnstitutunun qısaldılmasıdır. Maşın öyrənmə modellərini, xüsusən də neyron şəbəkələrini öyrətmək və sınaqdan keçirmək üçün adətən istifadə olunan əlyazma rəqəmlər toplusudur.
Kolleksiyada 70,000-dan 0-a qədər olan əlyazma rəqəmlərindən ibarət 9 boz rəngli fotoşəkil var.
MNIST məlumat dəsti məşhur bir meyardır təsvirin təsnifatı tapşırıqlar. O, tez-tez tədris və öyrənmə üçün istifadə olunur, çünki o, yığcamdır və həlli asan, lakin maşın öyrənməsi alqoritmlərinin cavab verməsi çətin bir problem yaradır.
MNIST verilənlər bazası TensorFlow, Keras və PyTorch daxil olmaqla bir neçə maşın öyrənmə çərçivələri və kitabxanalar tərəfindən dəstəklənir.
İndi biz MNIST məlumat dəsti haqqında bilirik, gəlin neyron şəbəkəsini öyrətmək addımlarımıza başlayaq.
Neyron şəbəkəsini öyrətmək üçün əsas addımlar
Lazımi Kitabxanaları idxal edin
Neyron şəbəkəsini ilk dəfə məşq etməyə başladıqda, modeli dizayn etmək və öyrətmək üçün lazımi alətlərə sahib olmaq çox vacibdir. Neyron şəbəkəsinin yaradılmasında ilkin addım TensorFlow, Keras və NumPy kimi tələb olunan kitabxanaları idxal etməkdir.
Bu kitabxanalar neyron şəbəkənin inkişafı üçün tikinti blokları kimi xidmət edir və mühüm imkanları təmin edir. Bu kitabxanaların birləşməsi mürəkkəb neyron şəbəkə dizaynlarının yaradılmasına və sürətli təlimə imkan verir.
Nümunəmizə başlamaq üçün; TensorFlow, Keras və NumPy daxil olmaqla tələb olunan kitabxanaları idxal edəcəyik. TensorFlow açıq mənbəli maşın öyrənmə çərçivəsidir, Keras yüksək səviyyəli neyron şəbəkə API-sidir və NumPy ədədi hesablama Python kitabxanasıdır.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Dataset yükləyin
Dataset indi yüklənməlidir. Verilənlər dəsti neyron şəbəkənin öyrədiləcəyi verilənlər toplusudur. Bu, fotoşəkillər, audio və mətn daxil olmaqla istənilən növ məlumat ola bilər.
Verilənlər toplusunu iki hissəyə bölmək vacibdir: biri neyron şəbəkəni öyrətmək üçün, digəri isə öyrədilmiş modelin düzgünlüyünü qiymətləndirmək üçün. Verilənlər dəstini idxal etmək üçün TensorFlow, Keras və PyTorch daxil olmaqla bir neçə kitabxanadan istifadə edilə bilər.
Nümunəmiz üçün MNIST məlumat dəstini yükləmək üçün Keras-dan da istifadə edirik. Datasetdə 60,000 təlim fotoşəkili və 10,000 sınaq şəkli var.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Məlumatların əvvəlcədən işlənməsi
Məlumatların ilkin işlənməsi neyron şəbəkəsinin hazırlanmasında mühüm mərhələdir. Bu, məlumatların neyron şəbəkəsinə daxil edilməzdən əvvəl hazırlanmasını və təmizlənməsini nəzərdə tutur.
Piksel dəyərlərinin miqyası, verilənlərin normallaşdırılması və etiketlərin bir-isti kodlaşdırmaya çevrilməsi ilkin emal prosedurlarına misaldır. Bu proseslər neyron şəbəkəyə daha effektiv və dəqiq öyrənməyə kömək edir.
Məlumatların əvvəlcədən işlənməsi həmçinin həddən artıq uyğunlaşmanı minimuma endirməyə və neyron şəbəkənin performansını yaxşılaşdırmağa kömək edə bilər.
Neyron şəbəkəni öyrətməzdən əvvəl məlumatları əvvəlcədən emal etməlisiniz. Buraya etiketlərin bir-isti kodlaşdırmaya dəyişdirilməsi və piksel dəyərlərinin 0 ilə 1 arasında olması daxildir.
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)
Modeli müəyyənləşdirin
Neyroşəbəkə modelinin müəyyənləşdirilməsi prosesi onun arxitekturasını, məsələn, təbəqələrin sayı, hər təbəqəyə düşən neyronların sayı, aktivləşdirmə funksiyaları və şəbəkə növü (ötürülən, təkrarlanan və ya konvolyusiya) kimi qurulmasını nəzərdə tutur.
İstifadə etdiyiniz neyron şəbəkə dizaynı həll etməyə çalışdığınız problemin növü ilə müəyyən edilir. Yaxşı müəyyən edilmiş neyron şəbəkə dizaynı neyron şəbəkəsini daha səmərəli və dəqiq etməklə öyrənməyə kömək edə bilər.
Bu nöqtədə neyron şəbəkə modelini təsvir etmək vaxtıdır. Bu misal üçün hər birində 128 neyron olan iki gizli təbəqə və 10 neyron olan softmax çıxış təbəqəsi olan sadə modeldən istifadə edin.
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')
])
Modeli tərtib edin
Zərər funksiyası, optimallaşdırıcı və ölçülər neyron şəbəkə modelinin tərtibi zamanı müəyyən edilməlidir. Neyron şəbəkənin çıxışı düzgün proqnozlaşdırmaq qabiliyyəti itki funksiyası ilə ölçülür.
Təlim zamanı neyron şəbəkənin dəqiqliyini artırmaq üçün optimallaşdırıcı onun çəkilərini dəyişdirir. Təlim zamanı neyron şəbəkənin effektivliyi metriklərdən istifadə etməklə ölçülür. Neyron şəbəkəyə öyrədilməzdən əvvəl model yaradılmalıdır.
Bizim nümunəmizdə indi modeli qurmalıyıq.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Modeli məşq edin
İtki funksiyasını minimuma endirmək üçün şəbəkənin çəkilərini dəyişdirərkən hazırlanmış verilənlər toplusunun neyron şəbəkəsi vasitəsilə ötürülməsi neyron şəbəkəsinin öyrədilməsi kimi tanınır.
Doğrulama verilənlər bazası təlim zamanı neyron şəbəkəsini sınamaq üçün onun effektivliyini izləmək və həddindən artıq uyğunlaşmanın qarşısını almaq üçün istifadə olunur. Təlim prosesi bir qədər vaxt apara bilər, buna görə də neyron şəbəkənin uyğunsuzluğun qarşısını almaq üçün lazımi şəkildə öyrədilməsinə əmin olmaq vacibdir.
Təlim məlumatlarından istifadə edərək, indi modeli öyrədə bilərik. Bunun üçün partiyanın ölçüsünü (model yenilənməmişdən əvvəl işlənmiş nümunələrin sayı) və dövrlərin sayını (tam verilənlər bazası üzrə təkrarların sayı) müəyyən etməliyik.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Modelin qiymətləndirilməsi
Test verilənlər bazasında neyron şəbəkənin performansını yoxlamaq onun qiymətləndirilməsi prosesidir. Bu mərhələdə test verilənlər toplusunu emal etmək üçün təlim keçmiş neyron şəbəkəsindən istifadə edilir və dəqiqlik qiymətləndirilir.
Neyron şəbəkənin yeni, sınanmamış məlumatlardan düzgün nəticəni nə qədər effektiv proqnozlaşdıra bilməsi onun dəqiqliyinin ölçüsüdür. Modelin təhlili neyron şəbəkənin nə qədər yaxşı işlədiyini müəyyən etməyə kömək edə bilər və onu daha da yaxşılaşdırmaq yollarını təklif edə bilər.
Nəhayət, təlimdən sonra test məlumatlarından istifadə edərək modelin performansını qiymətləndirə bilərik.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Hamısı budur! MNIST verilənlər bazasında rəqəmləri aşkar etmək üçün neyron şəbəkəsini öyrətdik.
Məlumatların hazırlanmasından təlim keçmiş modelin effektivliyinin qiymətləndirilməsinə qədər, neyron şəbəkənin təlimi bir neçə prosesi əhatə edir. Bu təlimatlar yeni başlayanlara neyron şəbəkələri səmərəli şəkildə qurmaq və öyrətməkdə kömək edir.
Müxtəlif problemləri həll etmək üçün neyron şəbəkələrdən istifadə etmək istəyən yeni başlayanlar bu təlimatlara əməl etməklə bunu edə bilərlər.
Nümunənin vizuallaşdırılması
Daha yaxşı başa düşmək üçün bu nümunə ilə nə etdiyimizi vizuallaşdırmağa çalışaq.
Matplotlib paketi bu kod fraqmentində təlim verilənlər bazasından təsadüfi seçilmiş fotoşəkilləri çəkmək üçün istifadə olunur. Əvvəlcə Matplotlib-in “pyplot” modulunu idxal edirik və onu “plt” kimi adlandırırıq. Sonra, ümumi ölçüsü 10 ilə 10 düym olan, 5 sıra və 5 alt sütunlu bir rəqəm düzəldirik.
Sonra, hər birində təlim verilənlər toplusundan bir şəkil göstərərək, alt xətləri təkrarlamaq üçün for loopundan istifadə edirik. Şəkli göstərmək üçün “imshow” funksiyasından istifadə edilir, fotoşəkilləri boz rəngdə göstərmək üçün “cmap” seçimi “boz” olaraq təyin edilir. Hər bir alt süjetin başlığı kolleksiyadakı əlaqəli təsvirin etiketinə də təyin edilir.
Nəhayət, şəkildə çəkilmiş şəkilləri göstərmək üçün “göstər” funksiyasından istifadə edirik. Bu funksiya bizə verilənlər bazasından fotoşəkil nümunələrini vizual olaraq qiymətləndirməyə imkan verir ki, bu da məlumatları anlamaqda və hər hansı mümkün narahatlığı müəyyən etməkdə kömək edə bilər.
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()
Vacib Neyron Şəbəkə Modelləri
- İrəli Verilən Neyron Şəbəkələri (FFNN): Məlumatın yalnız bir şəkildə, giriş qatından çıxış qatına bir və ya bir neçə gizli təbəqə vasitəsilə yayıldığı sadə neyron şəbəkə növü.
- Convolutional Neyron Networks (CNN): Şəkillərin aşkarlanması və emalında geniş istifadə olunan neyron şəbəkəsi. CNN-lər şəkillərdən xüsusiyyətləri avtomatik tanımaq və çıxarmaq üçün nəzərdə tutulub.
- Təkrarlanan Neyron Şəbəkələri (RNN): Şəkillərin aşkarlanması və emalında geniş istifadə olunan neyron şəbəkəsi. CNN-lər şəkillərdən xüsusiyyətləri avtomatik tanımaq və çıxarmaq üçün nəzərdə tutulub.
- Uzun Qısamüddətli Yaddaş (LSTM) Şəbəkələri: Standart RNN-lərdə yoxa çıxan gradient problemini aradan qaldırmaq üçün yaradılmış RNN forması. Ardıcıl məlumatlarda uzunmüddətli asılılıqlar LSTM-lərlə daha yaxşı tutula bilər.
- Avtokodlayıcılar: Nəzarətsiz öyrənmə neyron şəbəkəsi, burada şəbəkəyə giriş məlumatlarını çıxış qatında təkrar istehsal etmək öyrədilir. Məlumatların sıxılması, anomaliyaların aşkarlanması və təsvirin səssizləşdirilməsi avtomatik kodlayıcılarla həyata keçirilə bilər.
- Generativ Düşmən Şəbəkələri (GAN): Generativ neyron şəbəkəsi, təlim verilənlər toplusu ilə müqayisə edilə bilən yeni məlumatlar istehsal etmək üçün öyrədilmiş neyron şəbəkəsinin bir formasıdır. GAN-lar iki şəbəkədən ibarətdir: təzə məlumatlar yaradan generator şəbəkəsi və yaradılmış məlumatların keyfiyyətini qiymətləndirən diskriminator şəbəkəsi.
Nəticə, Növbəti Addımlarınız Nə olmalıdır?
Neyron şəbəkənin təlimi haqqında daha çox öyrənmək üçün bir neçə onlayn resurs və kursları araşdırın. Layihələr və ya nümunələr üzərində işləmək neyron şəbəkələri daha yaxşı başa düşməyin üsullarından biridir.
İkili təsnifat problemləri və ya şəkil təsnifatı tapşırıqları kimi asan nümunələrlə başlayın və sonra təbii dil emalı və ya kimi daha çətin tapşırıqlara keçin. gücləndirici öyrənmə.
Layihələr üzərində işləmək sizə real təcrübə əldə etməyə və neyron şəbəkə təlimi bacarıqlarınızı təkmilləşdirməyə kömək edir.
Siz həmçinin digər öyrənənlər və peşəkarlarla qarşılıqlı əlaqə yaratmaq, işinizi bölüşmək, şərhlər və yardım almaq üçün onlayn maşın öyrənməsi və neyron şəbəkə qruplarına və forumlarına qoşula bilərsiniz.
LSRS MONRAD-KROHN
⁶ĵSəhvləri minimuma endirmək üçün python proqramını görmək istərdim. Növbəti təbəqəyə çəki dəyişiklikləri üçün xüsusi seçim qovşaqları