Süni intellekt (AI) son illərdə əhəmiyyətli dərəcədə populyarlıq qazandı.
Əgər siz proqram mühəndisi, kompüter alimi və ya ümumiyyətlə məlumat elmi həvəskarısınızsa, o zaman bu sahənin təqdim etdiyi təsvirin işlənməsi, nümunənin tanınması və obyekt aşkarlanmasının heyrətamiz tətbiqləri ilə maraqlanırsınız.
Yəqin ki, haqqında eşitdiyiniz AI-nin ən vacib alt sahəsi Dərin Öyrənmədir. Bu sahə kimi tanınan insan beyninin funksionallığından sonra modelləşdirilmiş güclü alqoritmlərə (kompüter proqramı təlimatları) diqqət yetirir. Sinir şəbəkələri.
Bu yazıda biz Neyron Şəbəkələri konsepsiyasını və bu modelləri necə qurmaq, tərtib etmək, uyğunlaşdırmaq və qiymətləndirmək barədə danışacağıq. Python.
Sinir şəbəkələri
Neyron şəbəkələri və ya NN-lər insan beyninin bioloji fəaliyyətindən sonra modelləşdirilmiş bir sıra alqoritmlərdir. Neyron şəbəkələri neyron adlanan qovşaqlardan ibarətdir.
Şaquli qovşaqların toplusu təbəqələr kimi tanınır. Model bir giriş, bir çıxış və bir sıra gizli təbəqələrdən ibarətdir. Hər bir təbəqə hesablamaların aparıldığı neyronlar adlanan düyünlərdən ibarətdir.
Aşağıdakı diaqramda dairələr qovşaqları, qovşaqların şaquli kolleksiyası isə təbəqələri təmsil edir. Bu modeldə üç təbəqə var.
Bir təbəqənin qovşaqları aşağıda göründüyü kimi ötürmə xətləri vasitəsilə növbəti təbəqəyə birləşdirilir.
Bizim verilənlər bazamız etiketlənmiş məlumatlardan ibarətdir. Bu o deməkdir ki, hər bir məlumat obyektinə müəyyən ad dəyəri təyin edilib.
Beləliklə, heyvanların təsnifatı verilənlər bazası üçün bizim məlumatlarımız kimi pişik və itlərin şəkilləri, etiketlərimiz kimi "pişik" və "it" olacaq.
Qeyd etmək vacibdir ki, modelimiz onları anlamlandırmaq üçün etiketlərin ədədi dəyərlərə çevrilməsi lazımdır, beləliklə, heyvan etiketlərimiz pişik üçün "0" və it üçün "1" olur. Həm məlumatlar, həm də etiketlər modeldən keçir.
Learning
Məlumatlar modelə hər dəfə bir obyekt verilir. Bu məlumatlar hissələrə bölünür və modelin hər bir qovşağından keçir. Düyünlər bu parçalar üzərində riyazi əməliyyatlar həyata keçirir.
Bu dərslik üçün riyazi funksiyaları və ya hesablamaları bilməyə ehtiyac yoxdur, lakin bu modellərin necə işlədiyi barədə ümumi təsəvvürə malik olmaq vacibdir. Bir təbəqədə bir sıra hesablamalardan sonra məlumatlar növbəti təbəqəyə ötürülür və s.
Tamamlandıqdan sonra modelimiz çıxış qatında məlumat etiketini proqnozlaşdırır (məsələn, heyvanların təsnifatı məsələsində biz pişik üçün "0" proqnozunu alırıq).
Daha sonra model bu proqnozlaşdırılan dəyəri faktiki etiket dəyəri ilə müqayisə etməyə davam edir.
Dəyərlər uyğun gələrsə, modelimiz növbəti girişi götürəcək, lakin dəyərlər fərqli olarsa, model hər iki dəyər arasındakı fərqi hesablayacaq, itki adlanır və növbəti dəfə uyğun etiketlər yaratmaq üçün qovşaq hesablamalarını tənzimləyir.
Dərin Öyrənmə Çərçivələri
Neyron şəbəkələrini kodda qurmaq üçün idxal etməliyik Dərin Öyrənmə çərçivələri İnteqrasiya edilmiş İnkişaf Mühitimizdən (IDE) istifadə edən kitabxanalar kimi tanınır.
Bu çərçivələr bu dərslikdə bizə kömək edəcək əvvəlcədən yazılmış funksiyaların toplusudur. Modelimizi qurmaq üçün Keras çərçivəsindən istifadə edəcəyik.
Keras adlı dərin öyrənmə və süni intellekt backendindən istifadə edən Python kitabxanasıdır Tensor axını sadə ardıcıl modellər şəklində NN-ləri asanlıqla yaratmaq.
Keras həm də istifadə oluna bilən özünün mövcud modelləri ilə gəlir. Bu dərslik üçün Keras istifadə edərək öz modelimizi yaradacağıq.
Bu Dərin Öyrənmə çərçivəsi haqqında ətraflı öyrənə bilərsiniz Keras saytı.
Neyron Şəbəkəsinin qurulması (Təlimlik)
Python istifadə edərək Neyron Şəbəkəsinin qurulmasına keçək.
Problem bəyanat
Neyron şəbəkələri süni intellektə əsaslanan problemlərin həlli növüdür. Bu dərslik üçün biz mövcud Pima Indians Diabet Datasını nəzərdən keçirəcəyik burada.
ICU Machine Learning bu məlumat dəstini tərtib edib və Hindistanlı xəstələrin tibbi qeydini ehtiva edir. Bizim modelimiz xəstənin 5 il ərzində şəkər xəstəliyinə tutulması olub-olmadığını təxmin etməlidir.
Dataset Yüklənir
Bizim verilənlər bazamız Microsoft Excel istifadə edərək asanlıqla idarə oluna bilən "diabetes.csv" adlı tək CSV faylıdır.
Modelimizi yaratmazdan əvvəl verilənlər bazamızı idxal etməliyik. Aşağıdakı kodu istifadə edərək, bunu edə bilərsiniz:
pandaları pd olaraq idxal edin
data = pd.read_csv('diabet.csv')
x = data.drop("Nəticə")
y = data[“Nəticə”]
Burada istifadə edirik Pandas CSV fayl məlumatlarımızı manipulyasiya edə bilmək üçün kitabxanadan istifadə etdikdən sonra read_csv() Pandaların daxili funksiyasıdır və bizə faylımızdakı dəyərləri 'data' adlı dəyişənə saxlamağa imkan verir.
Dəyişən x nəticə (etiket) datası olmayan verilənlər bazamızı ehtiva edir. Biz buna x üçün etiketləri silən data.drop() funksiyası ilə nail oluruq, y isə yalnız nəticə (etiket) məlumatlarını ehtiva edir.
Ardıcıl Modelin qurulması
Addım 1: Kitabxanaların idxalı
Birincisi, modelimiz üçün tələb olunan müəyyən parametrlərlə birlikdə TensorFlow və Keras-ı idxal etməliyik. Aşağıdakı kod bizə bunu etməyə imkan verir:
tenzor axınını tf kimi idxal edin
tensorflow idxal keras-dən
tensorflow.keras.models idxal Ardıcıl
tensorflow.keras.layers idxal Aktivləşdirmə, Sıx
tensorflow.keras.optimizers-dən Adamı idxal edir
tensorflow.keras.metrics-dən categorical_crossentropy idxal edin
Modelimiz üçün sıx təbəqələri idxal edirik. Bunlar tam birləşmiş təbəqələrdir; yəni bir təbəqədəki hər bir qovşaq növbəti təbəqədəki başqa bir qovşaqla tam şəkildə bağlıdır.
Biz də idxal edirik aktivləşdirmə qovşaqlara göndərilən məlumatların miqyaslanması üçün lazım olan funksiya. Optimizatorlar itkiləri minimuma endirmək üçün də idxal edilmişdir.
Adam, model yeniləmə qovşağı hesablamalarımızı daha səmərəli edən məşhur optimallaşdırıcıdır kateqoriyalı_krossentropiya istifadə edəcəyimiz itki funksiyasının növü (faktiki və proqnozlaşdırılan etiket dəyərləri arasındakı fərqi hesablayır).
Addım 2: Modelimizin Dizaynı
Yaratdığım modeldə bir giriş (16 vahid ilə), bir gizli (32 vahid ilə) və bir çıxış (2 vahid ilə) təbəqəsi var. Bu nömrələr sabit deyil və tamamilə verilən problemdən asılı olacaq.
Bölmələrin və təbəqələrin düzgün sayını təyin etmək təcrübə vasitəsilə əlavə iş vaxtı yaxşılaşdırıla bilən bir prosesdir. Aktivləşdirmə məlumatlarımızı bir qovşaqdan keçirməzdən əvvəl həyata keçirəcəyimiz miqyaslama növünə uyğundur.
Relu və Softmax bu vəzifə üçün tanınmış aktivləşdirmə funksiyalarıdır.
model = Ardıcıl([
Sıx(vahid = 16, giriş_forma = (1,), aktivləşdirmə = 'relu'),
Sıx (vahid = 32, aktivləşdirmə = 'relu'),
Sıx (vahid = 2, aktivləşdirmə = 'softmax')
])
Modelin xülasəsi belə görünməlidir:
Modelin hazırlanması
Modelimiz iki mərhələdə öyrədiləcək, birincisi modeli tərtib etmək (modelin bir araya gətirilməsi), ikincisi isə modeli verilmiş verilənlər bazasına uyğunlaşdırmaqdır.
Bu, model.compile() funksiyasından sonra model.fit() funksiyasından istifadə etməklə edilə bilər.
model.compile(optimizer = Adam(öyrənmə_dərəcəsi = 0.0001), itki = 'ikili_çarpaz', ölçülər = ['dəqiqlik'])
model.fit(x, y, dövrlər = 30, toplu_ölçüsü = 10)
'Dəqiqlik' metrikasının dəqiqləşdirilməsi təlim zamanı modelimizin düzgünlüyünü müşahidə etməyə imkan verir.
Etiketlərimiz 1 və 0 şəklində olduğundan, faktiki və proqnozlaşdırılan etiketlər arasındakı fərqi hesablamaq üçün ikili itki funksiyasından istifadə edəcəyik.
Məlumat dəsti həmçinin 10 (batch_size) dəstlərinə bölünür və modeldən 30 dəfə (epoxalar) keçəcək. Verilən verilənlər bazası üçün x verilənlər, y isə verilənlərə uyğun etiketlər olacaqdır.
Proqnozlardan istifadə edərək modelin sınaqdan keçirilməsi
Modelimizi qiymətləndirmək üçün biz proqnozlaşdıran() funksiyasından istifadə edərək test məlumatlarına dair proqnozlar veririk.
proqnozlar = model.predict(x)
Və bu qədər!
İndi siz yaxşı başa düşməlisiniz Dərin Öyrənmə tətbiqi, Neyron Şəbəkələri, onların ümumilikdə necə işlədiyini və Python kodunda modeli necə qurmaq, öyrətmək və sınaqdan keçirmək.
Ümid edirəm ki, bu dərslik sizə öz Dərin Öyrənmə modellərinizi yaratmaq və tətbiq etmək üçün başlanğıc verir.
Məqalənin faydalı olub olmadığını şərhlərdə bizə bildirin.
Cavab yaz