Dirbtinis intelektas (AI) pastaraisiais metais įgijo didelį populiarumą.
Jei esate programinės įrangos inžinierius, informatikas ar apskritai duomenų mokslo entuziastas, tikriausiai jus domina nuostabios šios srities vaizdo apdorojimo, modelių atpažinimo ir objektų aptikimo programos.
Svarbiausias AI polaukis, apie kurį tikriausiai girdėjote, yra gilus mokymasis. Šiame lauke pagrindinis dėmesys skiriamas galingiems algoritmams (kompiuterių programų instrukcijoms), modeliuotiems pagal žmogaus smegenų funkcijas, žinomas kaip Neuroniniai tinklai.
Šiame straipsnyje apžvelgsime neuroninių tinklų koncepciją ir kaip sukurti, kompiliuoti, pritaikyti ir įvertinti šiuos modelius naudojant Pitonas.
Neuroniniai tinklai
Neuroniniai tinklai arba NN yra algoritmų serija, sukurta pagal žmogaus smegenų biologinį aktyvumą. Neuroniniai tinklai susideda iš mazgų, dar vadinamų neuronais.
Vertikalių mazgų rinkinys yra žinomas kaip sluoksniai. Modelis susideda iš vienos įvesties, vienos išvesties ir kelių paslėptų sluoksnių. Kiekvienas sluoksnis susideda iš mazgų, dar vadinamų neuronais, kuriuose atliekami skaičiavimai.
Toliau pateiktoje diagramoje apskritimai žymi mazgus, o vertikali mazgų rinkinys – sluoksnius. Šiame modelyje yra trys sluoksniai.
Vieno sluoksnio mazgai yra prijungti prie kito sluoksnio perdavimo linijomis, kaip parodyta toliau.
Mūsų duomenų rinkinį sudaro pažymėti duomenys. Tai reiškia, kad kiekvienam duomenų objektui buvo priskirta tam tikra vardo reikšmė.
Taigi gyvūnų klasifikavimo duomenų rinkinyje kaip duomenis turėsime kačių ir šunų atvaizdus, o etiketėse – „katė“ ir „šuo“.
Svarbu pažymėti, kad etiketes reikia konvertuoti į skaitines reikšmes, kad mūsų modelis suprastų, todėl mūsų gyvūnų etiketės tampa „0“ katėms ir „1“ šunims. Tiek duomenys, tiek etiketės perduodami per modelį.
Mokymasis
Duomenys į modelį pateikiami po vieną objektą. Šie duomenys suskirstomi į dalis ir perduodami per kiekvieną modelio mazgą. Mazgai atlieka matematines operacijas su šiais gabalais.
Šiam mokymui nereikia žinoti matematinių funkcijų ar skaičiavimų, tačiau svarbu turėti bendrą idėją, kaip veikia šie modeliai. Po daugybės skaičiavimų viename sluoksnyje duomenys perduodami į kitą sluoksnį ir pan.
Užbaigus, mūsų modelis numato duomenų etiketę išvesties sluoksnyje (pavyzdžiui, gyvūnų klasifikavimo problemos atveju gauname prognozę „0“ katei).
Tada modelis palygina šią numatomą vertę su faktine etiketės verte.
Jei reikšmės sutampa, mūsų modelis paims kitą įvestį, bet jei reikšmės skiriasi, modelis apskaičiuos skirtumą tarp abiejų reikšmių, vadinamų nuostoliais, ir pakoreguos mazgo skaičiavimus, kad kitą kartą būtų sukurtos atitinkamos etiketės.
Giluminio mokymosi sistemos
Norėdami sukurti neuroninius tinklus kode, turime importuoti Giluminio mokymosi sistemos žinomos kaip bibliotekos, naudojančios mūsų integruotą kūrimo aplinką (IDE).
Šios sistemos yra iš anksto parašytų funkcijų rinkinys, kuris mums padės šioje mokymo programoje. Kurdami modelį naudosime „Keras“ sistemą.
„Keras“ yra „Python“ biblioteka, kurioje naudojama gilaus mokymosi ir dirbtinio intelekto užpakalinė programa, vadinama tenzorinis srautas nesunkiai sukurti NN paprastų nuoseklių modelių pavidalu.
„Keras“ taip pat turi savo jau egzistuojančius modelius, kuriuos taip pat galima naudoti. Šioje pamokoje mes sukursime savo modelį naudodami „Keras“.
Daugiau apie šią giluminio mokymosi sistemą galite sužinoti iš Keras svetainė.
Neuroninio tinklo kūrimas (pamoka)
Pereikime prie neuroninio tinklo kūrimo naudojant Python.
Problemos pareiškimas
Neuroniniai tinklai yra AI pagrįstų problemų sprendimo tipas. Šiame vadove apžvelgsime Pima Indijos diabeto duomenis, kurie yra prieinami čia.
ICU Mašinų mokymasis sudarė šį duomenų rinkinį ir yra Indijos pacientų medicininis įrašas. Mūsų modelis turi numatyti, ar pacientas serga cukriniu diabetu per 5 metus, ar ne.
Įkeliamas duomenų rinkinys
Mūsų duomenų rinkinys yra vienas CSV failas, vadinamas „diabetes.csv“, kurį galima lengvai valdyti naudojant „Microsoft Excel“.
Prieš kurdami modelį, turime importuoti duomenų rinkinį. Naudodami šį kodą galite tai padaryti:
importuoti pandas kaip pd
duomenys = pd.read_csv('diabetes.csv')
x = data.drop ("Rezultatas")
y = duomenys["Rezultatas"]
Čia mes naudojame Pandas biblioteka, kad galėtume manipuliuoti mūsų CSV failo duomenimis, read_csv() yra įtaisyta Pandas funkcija, leidžianti išsaugoti reikšmes faile į kintamąjį, vadinamą „duomenys“.
Kintamajame x yra mūsų duomenų rinkinys be rezultatų (etikečių) duomenų. Tai pasiekiame naudodami funkciją data.drop(), kuri pašalina x etiketes, o y yra tik rezultatų (etiketės) duomenys.
Nuosekliojo modelio kūrimas
1 veiksmas: bibliotekų importavimas
Pirma, turime importuoti TensorFlow ir Keras kartu su tam tikrais mūsų modeliui reikalingais parametrais. Šis kodas leidžia mums tai padaryti:
importuoti tensorflow kaip tf
is tensorflow import keras
iš tensorflow.keras.models importuoti Sequential
iš tensorflow.keras.layers importuoti aktyvavimą, tankus
iš tensorflow.keras.optimizers importuoti Adam
iš tensorflow.keras.metrics importuoti categorical_crossentropy
Mūsų modeliui importuojame tankius sluoksnius. Tai visiškai sujungti sluoksniai; ty kiekvienas sluoksnio mazgas yra visiškai sujungtas su kitu mazgu kitame sluoksnyje.
Taip pat importuojame an aktyvavimas funkcija, reikalinga į mazgus siunčiamiems duomenims keisti. Optimizatoriai taip pat buvo importuoti siekiant sumažinti nuostolius.
„Adam“ yra žinomumo optimizavimo priemonė, kuri leidžia efektyviau atlikti modelio atnaujinimo mazgo skaičiavimus Kategorinė_kryžminė tropija, kuri yra praradimo funkcijos tipas (apskaičiuoja skirtumą tarp faktinių ir numatytų etiketės verčių), kurią naudosime.
2 veiksmas: modelio kūrimas
Mano kuriamas modelis turi vieną įvesties (su 16 vnt.), vieną paslėptą (su 32 vnt.) ir vieną išvesties (su 2 vnt.) sluoksnį. Šie skaičiai nėra fiksuoti ir visiškai priklausys nuo konkrečios problemos.
Tinkamo vienetų ir sluoksnių skaičiaus nustatymas yra procesas, kurį galima pagerinti viršvalandžius praktikuojant. Aktyvinimas atitinka mastelio keitimo tipą, kurį atliksime savo duomenims prieš perduodant juos per mazgą.
Relu ir Softmax yra žinomos šios užduoties aktyvinimo funkcijos.
modelis = Sequential ([
Tankus (vienetai = 16, įvesties_forma = (1,), aktyvinimas = "relu"),
Tankus (vienetai = 32, aktyvinimas = "relu"),
Tankus (vienetai = 2, aktyvinimas = 'softmax')
])
Štai kaip turėtų atrodyti modelio santrauka:
Modelio mokymas
Mūsų modelis bus apmokytas dviem etapais: pirmasis bus modelio sudarymas (modelio sujungimas), o kitas - modelio pritaikymas tam tikram duomenų rinkiniui.
Tai galima padaryti naudojant model.compile() funkciją, po kurios seka model.fit() funkciją.
model.compile(optimizer = Adomas(mokymosi_norma = 0.0001), nuostoliai = 'dvejetainė_kryžminė tropija', metrika = ['tikslumas'])
modelis.fit(x, y, epochas = 30, partijos_dydis = 10)
Nurodę „tikslumo“ metriką, galime stebėti savo modelio tikslumą treniruočių metu.
Kadangi mūsų etiketės yra 1 ir 0 formos, naudosime dvejetainę praradimo funkciją skirtumui tarp faktinių ir numatomų etikečių apskaičiuoti.
Duomenų rinkinys taip pat padalijamas į 10 paketų (partijos_dydis) ir bus perduodamas per modelį 30 kartų (epochas). Tam tikram duomenų rinkiniui x būtų duomenys, o y – duomenis atitinkančios etiketės.
Modelio testavimas naudojant prognozes
Norėdami įvertinti savo modelį, prognozuojame bandymo duomenis naudodami funkciją prognozuoti ().
prognozės = modelis.prognozuoti(x)
Štai ir viskas!
Dabar turėtumėte gerai suprasti Gilus mokymasis programa, neuroniniai tinklai, kaip jie veikia apskritai ir kaip sukurti, mokyti ir išbandyti modelį Python kodu.
Tikiuosi, kad ši mokymo programa padės jums kurti ir įdiegti savo giluminio mokymosi modelius.
Praneškite mums komentaruose, ar straipsnis buvo naudingas.
Palikti atsakymą