Gervigreind (AI) hefur náð umtalsverðum vinsældum á undanförnum árum.
Ef þú ert hugbúnaðarverkfræðingur, tölvunarfræðingur eða gagnavísindaáhugamaður almennt, þá hefur þú sennilega áhuga á ótrúlegum forritum myndvinnslu, mynsturgreiningar og hlutgreiningar sem þetta svið býður upp á.
Mikilvægasti undirsvið gervigreindar sem þú hefur líklega heyrt um er Deep Learning. Þetta svið einbeitir sér að öflugum reikniritum (leiðbeiningar um tölvuforrit) sem eru gerðar eftir virkni heilans manna sem kallast Taugakerfi.
Í þessari grein munum við fara yfir hugmyndina um tauganet og hvernig á að byggja, setja saman, passa og meta þessi líkön með því að nota Python.
Taugakerfi
Tauganet, eða NN, eru röð reiknirita sem eru gerðar eftir líffræðilegri virkni mannsheilans. Taugakerfi samanstanda af hnútum, einnig kallaðir taugafrumur.
Safn lóðréttra hnúta er þekkt sem lög. Líkanið samanstendur af einu inntaki, einu úttaki og fjölda falinna laga. Hvert lag samanstendur af hnútum, einnig kölluðum taugafrumum, þar sem útreikningarnir fara fram.
Í eftirfarandi skýringarmynd tákna hringirnir hnúta og lóðrétt safn hnúta tákna lögin. Það eru þrjú lög í þessu líkani.
Hnútar eins lags eru tengdir við næsta lag í gegnum flutningslínur eins og sést hér að neðan.
Gagnapakkinn okkar samanstendur af merktum gögnum. Þetta þýðir að hverri gagnaeiningu hefur verið úthlutað ákveðnu nafngildi.
Þannig að fyrir flokkunargagnasafn dýra munum við hafa myndir af köttum og hundum sem gögn okkar, með „köttur“ og „hundur“ sem merkingar okkar.
Það er mikilvægt að hafa í huga að merki þarf að breyta í tölugildi til að líkanið okkar skili þeim, þannig að dýramerkin okkar verða „0“ fyrir kött og „1“ fyrir hund. Bæði gögnin og merkimiðarnir fara í gegnum líkanið.
Nám
Gögn eru færð til líkansins með einni einingu í einu. Þessi gögn eru sundurliðuð í klumpur og send í gegnum hvern hnút líkansins. Hnútar framkvæma stærðfræðilegar aðgerðir á þessum klumpum.
Þú þarft ekki að kunna stærðfræðileg föll eða útreikninga fyrir þessa kennslu, en það er mikilvægt að hafa almenna hugmynd um hvernig þessi líkön virka. Eftir röð útreikninga í einu lagi eru gögn send yfir á næsta lag og svo framvegis.
Þegar því er lokið spáir líkanið okkar fyrir um gagnamerkið við framleiðslulagið (til dæmis, í dýraflokkunarvandamáli fáum við spá '0' fyrir kött).
Líkanið heldur síðan áfram að bera þetta spágildi saman við raunverulegt merkigildi.
Ef gildin passa mun líkanið okkar taka næsta inntak en ef gildin eru mismunandi mun líkanið reikna út mismuninn á báðum gildunum, kallað tap, og stilla hnútreikninga til að búa til samsvarandi merki næst.
Djúpnámsrammar
Til að byggja tauganet í kóða þurfum við að flytja inn Deep Learning rammar þekkt sem bókasöfn sem nota Integrated Development Environment (IDE).
Þessir rammar eru safn af fyrirfram skrifuðum aðgerðum sem munu hjálpa okkur í þessari kennslu. Við munum nota Keras ramma til að byggja líkanið okkar.
Keras er Python bókasafn sem notar djúpt nám og gervigreind bakenda sem kallast Tensorflæði að búa til NN í formi einfaldra raðlíkana með auðveldum hætti.
Keras kemur líka með eigin fyrirliggjandi gerðir sem hægt er að nota líka. Fyrir þessa kennslu munum við búa til okkar eigin líkan með því að nota Keras.
Þú getur lært meira um þennan djúpnámsramma frá Vefsíða Keras.
Að byggja upp taugakerfi (kennsla)
Við skulum halda áfram að byggja upp tauganet með Python.
Vandamál yfirlýsing
Taugakerfi eru eins konar lausn á vandamálum sem byggjast á gervigreind. Fyrir þessa kennslu munum við fara yfir Pima indíána sykursýkisgögnin, sem eru tiltæk hér.
Gjörgæsludeild Machine Learning hefur tekið saman þetta gagnasafn og inniheldur sjúkraskrá yfir indverska sjúklinga. Líkanið okkar þarf að spá fyrir um hvort sjúklingurinn hafi upphaf sykursýki innan 5 ára eða ekki.
Hleður gagnasett
Gagnapakki okkar er ein CSV skrá sem kallast 'diabetes.csv' sem auðvelt er að vinna með með Microsoft Excel.
Áður en við búum til líkanið okkar þurfum við að flytja inn gagnasafnið okkar. Með því að nota eftirfarandi kóða geturðu gert þetta:
flytja inn pöndur sem pd
gögn = pd.read_csv('sykursýki.csv')
x = data.drop(„Útkoma“)
y = gögn[„Útkoma“]
Hér erum við að nota Pandas bókasafn til að geta meðhöndlað CSV skráargögnin okkar, read_csv() er innbyggt fall Pandas sem gerir okkur kleift að geyma gildin í skránni okkar í breytu sem kallast 'gögn'.
Breytan x inniheldur gagnasafnið okkar án útkomu (merkja) gagna. Við náum þessu með data.drop() aðgerðinni sem fjarlægir merkin fyrir x, á meðan y inniheldur aðeins útkomugögnin (merkið).
Byggja raðlíkan
Skref 1: Flytja inn bókasöfn
Í fyrsta lagi þurfum við að flytja inn TensorFlow og Keras, ásamt ákveðnum breytum sem krafist er fyrir líkanið okkar. Eftirfarandi kóða gerir okkur kleift að gera þetta:
flytja inn tensorflow sem tf
frá tensorflow import keras
frá tensorflow.keras.models import Sequential
frá tensorflow.keras.layers import Activation, Dense
frá tensorflow.keras.optimizers flytja Adam
frá tensorflow.keras.metrics flytja inn categorical_crossentropy
Fyrir líkanið okkar erum við að flytja inn þétt lög. Þetta eru fulltengd lög; þ.e., hver hnút í lagi er að fullu tengdur við annan hnút í næsta lagi.
Við erum líka að flytja inn virkjun aðgerð sem þarf til að skala gögn sem send eru til hnúta. Fínstillingar hafa einnig verið fluttar inn til að lágmarka tap.
Adam er frægur fínstillingarstjóri sem gerir útreikninga á líkanuppfærsluhnútum okkar skilvirkari, ásamt categorical_crossentropy sem er tegund tapfalls (reiknar mun á raunverulegum og áætluðum merkigildum) sem við munum nota.
Skref 2: Hönnun líkansins okkar
Líkanið sem ég er að búa til hefur eitt inntak (með 16 einingum), eitt falið (með 32 einingum) og eitt úttak (með 2 einingum) lag. Þessar tölur eru ekki fastar og fara algjörlega eftir tilteknu vandamáli.
Að stilla réttan fjölda eininga og laga er ferli sem hægt er að bæta yfirvinnu með æfingum. Virkjun samsvarar þeirri tegund mælingar sem við munum framkvæma á gögnum okkar áður en þau fara í gegnum hnút.
Relu og Softmax eru þekktar virkjunaraðgerðir fyrir þetta verkefni.
líkan = Sequential([
Þétt (einingar = 16, input_shape = (1,), virkjun = 'relu'),
Þétt (einingar = 32, virkjun = 'relu'),
Þétt (einingar = 2, virkjun = 'softmax')
])
Hér er hvernig samantekt líkansins ætti að líta út:
Þjálfa líkanið
Líkanið okkar verður þjálfað í tveimur skrefum, það fyrsta er að setja líkanið saman (að setja líkanið saman) og það næsta að passa líkanið á tiltekið gagnasafn.
Þetta er hægt að gera með því að nota model.compile() fallið og síðan model.fit() fallið.
model.compile(optimizer = Adam(learning_rate = 0.0001), tap = 'binary_crossentropy', metrics = ['nákvæmni'])
model.fit(x, y, tímabil = 30, lotustærð = 10)
Með því að tilgreina „nákvæmni“ mælinguna getum við fylgst með nákvæmni líkansins okkar meðan á þjálfun stendur.
Þar sem merkingar okkar eru í formi 1 og 0 tölur, munum við nota tvöfalda tapfall til að reikna út muninn á raunverulegum og spáðum merkjum.
Einnig er verið að skipta gagnasafninu í 10 lotur (lotu_stærð) og verður farið í gegnum líkanið 30 sinnum (tímabil). Fyrir tiltekið gagnasafn væri x gögnin og y væru merkimiðarnir sem samsvara gögnunum.
Prófunarlíkan með því að nota spár
Til að meta líkanið okkar gerum við spár um prófunargögnin með því að nota predict() fallið.
spár = model.predict(x)
Og þannig er það!
Þú ættir nú að hafa góðan skilning á Deep Learning forrit, tauganet, hvernig þau virka almennt og hvernig á að byggja, þjálfa og prófa líkan í Python kóða.
Ég vona að þessi kennsla gefi þér kickstart til að búa til og nota þín eigin Deep Learning módel.
Láttu okkur vita í athugasemdunum ef greinin var gagnleg.
Skildu eftir skilaboð