Mākslīgais intelekts (AI) pēdējos gados ir guvis ievērojamu popularitāti.
Ja esat programmatūras inženieris, datorzinātnieks vai datu zinātnes entuziasts, iespējams, jūs interesē šīs jomas apbrīnojamās attēlu apstrādes, modeļu atpazīšanas un objektu noteikšanas lietojumprogrammas.
Vissvarīgākā AI apakšnozare, par kuru jūs droši vien esat dzirdējuši, ir dziļā mācīšanās. Šis lauks koncentrējas uz spēcīgiem algoritmiem (datorprogrammu instrukcijām), kas veidoti pēc cilvēka smadzeņu funkcionalitātes, kas pazīstama kā Neironu tīkli.
Šajā rakstā mēs apskatīsim neironu tīklu koncepciju un to, kā izveidot, apkopot, pielāgot un novērtēt šos modeļus, izmantojot Pitons.
Neironu tīkli
Neironu tīkli jeb NN ir virkne algoritmu, kas modelēti pēc cilvēka smadzeņu bioloģiskās aktivitātes. Neironu tīkli sastāv no mezgliem, ko sauc arī par neironiem.
Vertikālo mezglu kolekcija ir pazīstama kā slāņi. Modelis sastāv no vienas ievades, vienas izejas un vairākiem slēptiem slāņiem. Katrs slānis sastāv no mezgliem, ko sauc arī par neironiem, kur notiek aprēķini.
Nākamajā diagrammā apļi apzīmē mezglus un vertikālā mezglu kolekcija apzīmē slāņus. Šajā modelī ir trīs slāņi.
Viena slāņa mezgli ir savienoti ar nākamo slāni caur pārvades līnijām, kā parādīts zemāk.
Mūsu datu kopa sastāv no iezīmētiem datiem. Tas nozīmē, ka katrai datu entītijai ir piešķirta noteikta nosaukuma vērtība.
Tātad dzīvnieku klasifikācijas datu kopai kā mūsu dati būs kaķu un suņu attēli, kā etiķetes “kaķis” un “suns”.
Ir svarīgi ņemt vērā, ka etiķetes ir jāpārveido skaitliskās vērtībās, lai mūsu modelim būtu jēga, tāpēc mūsu dzīvnieku etiķetes kļūst par “0” kaķim un “1” attiecībā uz suni. Gan dati, gan etiķetes tiek nodotas caur modeli.
Mācīšanās
Dati tiek ievadīti modelim pa vienai entītijai. Šie dati tiek sadalīti gabalos un izvadīti cauri katram modeļa mezglam. Mezgli veic matemātiskas darbības ar šiem gabaliem.
Šajā apmācībā jums nav jāzina matemātiskās funkcijas vai aprēķini, taču ir svarīgi iegūt vispārēju priekšstatu par šo modeļu darbību. Pēc aprēķinu sērijas vienā slānī dati tiek pārsūtīti uz nākamo slāni un tā tālāk.
Kad tas ir pabeigts, mūsu modelis paredz datu etiķeti izvades slānī (piemēram, dzīvnieku klasifikācijas problēmā mēs iegūstam prognozi “0” kaķim).
Pēc tam modelis salīdzina šo prognozēto vērtību ar faktiskās etiķetes vērtības vērtību.
Ja vērtības sakrīt, mūsu modelis izmantos nākamo ievadi, bet, ja vērtības atšķiras, modelis aprēķinās atšķirību starp abām vērtībām, ko sauc par zudumiem, un pielāgos mezgla aprēķinus, lai nākamreiz izveidotu atbilstošas etiķetes.
Deep Learning Frameworks
Lai kodā izveidotu neironu tīklus, mums ir jāimportē Dziļās mācīšanās ietvari pazīstamas kā bibliotēkas, kas izmanto mūsu integrēto izstrādes vidi (IDE).
Šie ietvari ir iepriekš uzrakstītu funkciju kolekcija, kas mums palīdzēs šajā apmācībā. Mēs izmantosim Keras sistēmu, lai izveidotu savu modeli.
Keras ir Python bibliotēka, kurā tiek izmantota dziļas mācīšanās un mākslīgā intelekta aizmugursistēma tenzora plūsma viegli izveidot NN vienkāršu secīgu modeļu veidā.
Keras komplektācijā ir arī savi jau esošie modeļi, kurus var izmantot arī. Šajā apmācībā mēs izveidosim savu modeli, izmantojot Keras.
Vairāk par šo padziļinātās mācīšanās sistēmu varat uzzināt no Keras vietne.
Neironu tīkla izveide (pamācība)
Pāriesim pie neironu tīkla izveides, izmantojot Python.
Problēmas izklāsts
Neironu tīkli ir viens no AI problēmu risinājumiem. Šajā apmācībā mēs apskatīsim Pima indiāņu diabēta datus, kas ir pieejami šeit.
UCI Mašīnmācīšanās ir apkopojusi šo datu kopu un satur Indijas pacientu medicīnisko ierakstu. Mūsu modelim ir jāparedz, vai pacientam ir diabēts 5 gadu laikā vai nē.
Notiek datu kopas ielāde
Mūsu datu kopa ir viens CSV fails ar nosaukumu “diabetes.csv”, ar kuru var viegli manipulēt, izmantojot Microsoft Excel.
Pirms modeļa izveides mums ir jāimportē sava datu kopa. Izmantojot šo kodu, varat to izdarīt:
importa pandas kā pd
dati = pd.read_csv('diabēts.csv')
x = data.drop (“Rezultāts”)
y = dati [“Rezultāts”]
Šeit mēs izmantojam Pandas bibliotēka, lai varētu manipulēt ar mūsu CSV faila datiem, read_csv() ir Pandas iebūvēta funkcija, kas ļauj saglabāt mūsu faila vērtības mainīgajā, ko sauc par “data”.
Mainīgais x satur mūsu datu kopu bez iznākuma (iezīmju) datiem. Mēs to panākam ar funkciju data.drop(), kas noņem x etiķetes, savukārt y satur tikai iznākuma (iezīmes) datus.
Secīgā modeļa veidošana
1. darbība. Bibliotēku importēšana
Pirmkārt, mums ir jāimportē TensorFlow un Keras, kā arī noteikti mūsu modelim nepieciešamie parametri. Šis kods ļauj mums to izdarīt:
importēt tensorflow kā tf
no tensorflow importa keras
no tensorflow.keras.models importēt Sequential
no tensorflow.keras.layers importa Activation, Dense
no tensorflow.keras.optimizers importēt Adam
no tensorflow.keras.metrics importēt categorical_crossentropy
Mūsu modelim mēs importējam blīvus slāņus. Tie ir pilnībā savienoti slāņi; ti, katrs slāņa mezgls ir pilnībā savienots ar citu mezglu nākamajā slānī.
Mēs arī importējam aktivizācija funkcija, kas nepieciešama uz mezgliem nosūtīto datu mērogošanai. Optimizētāji ir arī importēti, lai samazinātu zaudējumus.
Adam ir slavens optimizētājs, kas padara mūsu modeļa atjaunināšanas mezglu aprēķinus efektīvākus, kā arī kategoriskā_krosentropija, kas ir zaudēšanas funkcijas veids (aprēķina starpību starp faktiskajām un prognozētajām etiķetes vērtībām), ko mēs izmantosim.
2. darbība. Mūsu modeļa izstrāde
Modelim, kuru veidoju, ir viens ieejas (ar 16 vienībām), viens slēptais (ar 32 vienībām) un viens izejas (ar 2 vienībām) slānis. Šie skaitļi nav fiksēti un būs pilnībā atkarīgi no konkrētās problēmas.
Pareiza vienību un slāņu skaita iestatīšana ir process, ko var uzlabot virsstundu laikā, praktizējot. Aktivizācija atbilst mērogošanas veidam, ko mēs veiksim saviem datiem, pirms tos nosūtīsim caur mezglu.
Relu un Softmax ir slavenas šī uzdevuma aktivizācijas funkcijas.
modelis = Sequential ([
Blīvs (vienības = 16, ievades_forma = (1,), aktivizēšana = 'relu'),
Blīvs (vienības = 32, aktivizēšana = 'relu'),
Blīvs (vienības = 2, aktivizēšana = 'softmax')
])
Lūk, kādam vajadzētu izskatīties modeļa kopsavilkumam:
Modeļa apmācība
Mūsu modelis tiks apmācīts divos posmos, no kuriem pirmais būs modeļa kompilēšana (modeļa salikšana), bet nākamais – modeļa pielāgošana noteiktai datu kopai.
To var izdarīt, izmantojot funkciju model.compile(), kam seko funkcija model.fit().
model.compile(optimizer = Ādams(mācību_rate = 0.0001), zudums = 'binārā_krosentropija', metrika = ['precizitāte'])
model.fit(x, y, epochas = 30, partijas_lielums = 10)
“Precizitātes” metrikas norādīšana ļauj mums novērot mūsu modeļa precizitāti apmācības laikā.
Tā kā mūsu etiķetes ir 1 un 0 formā, mēs izmantosim bināro zudumu funkciju, lai aprēķinātu atšķirību starp faktiskajām un prognozētajām etiķetēm.
Datu kopa tiek sadalīta arī 10 grupās (partijas_izmērs), un tā tiks nodota modelim 30 reizes (epohas). Dotajai datu kopai x būtu dati un y būtu datiem atbilstošās etiķetes.
Modeļa testēšana, izmantojot prognozes
Lai novērtētu mūsu modeli, mēs prognozējam testa datus, izmantojot funkciju prognozēt ().
prognozes = model.predict(x)
Un tas arī viss!
Tagad jums vajadzētu labi izprast Dziļa mācīšanās lietojumprogramma, neironu tīkli, kā tie darbojas kopumā un kā izveidot, apmācīt un pārbaudīt modeli Python kodā.
Es ceru, ka šī apmācība sniegs jums sākumu, lai izveidotu un izvietotu savus dziļās mācīšanās modeļus.
Paziņojiet mums komentāros, vai raksts bija noderīgs.
Atstāj atbildi