Mae Deallusrwydd Artiffisial (AI) wedi ennill cryn boblogrwydd yn ystod y blynyddoedd diwethaf.
Os ydych chi'n beiriannydd meddalwedd, yn wyddonydd cyfrifiadurol, neu'n frwd dros wyddor data yn gyffredinol, yna mae'n debyg eich bod wedi'ch swyno gan y cymwysiadau anhygoel o brosesu delweddau, adnabod patrymau a chanfod gwrthrychau a ddarperir gan y maes hwn.
Yr is-faes AI pwysicaf y mae'n debyg y clywsoch amdano yw Deep Learning. Mae'r maes hwn yn canolbwyntio ar algorithmau pwerus (cyfarwyddiadau rhaglen gyfrifiadurol) wedi'u modelu ar ôl ymarferoldeb ymennydd dynol a elwir yn Rhwydweithiau Niwral.
Yn yr erthygl hon, byddwn yn mynd dros y cysyniad o Rhwydweithiau Niwral a sut i adeiladu, llunio, ffitio a gwerthuso'r modelau hyn gan ddefnyddio Python.
Rhwydweithiau Niwral
Mae Rhwydweithiau Niwral, neu NNs, yn gyfres o algorithmau wedi'u modelu ar ôl gweithgaredd biolegol yr ymennydd dynol. Mae Rhwydweithiau Niwral yn cynnwys nodau, a elwir hefyd yn niwronau.
Gelwir casgliad o nodau fertigol yn haenau. Mae'r model yn cynnwys un mewnbwn, un allbwn, a nifer o haenau cudd. Mae pob haen yn cynnwys nodau, a elwir hefyd yn niwronau, lle mae'r cyfrifiadau'n digwydd.
Yn y diagram canlynol, mae'r cylchoedd yn cynrychioli'r nodau ac mae'r casgliad fertigol o nodau yn cynrychioli'r haenau. Mae tair haen yn y model hwn.
Mae nodau un haen wedi'u cysylltu â'r haen nesaf trwy linellau trawsyrru fel y gwelir isod.
Mae ein set ddata yn cynnwys data wedi'u labelu. Mae hyn yn golygu bod pob endid data wedi cael gwerth enw penodol.
Felly ar gyfer set ddata dosbarthiad anifeiliaid bydd gennym ddelweddau o gathod a chŵn fel ein data, gyda 'cath' a 'chŵn' fel ein labeli.
Mae'n bwysig nodi bod angen trosi labeli yn werthoedd rhifiadol ar gyfer ein model i wneud synnwyr ohonynt, fel bod ein labeli anifeiliaid yn dod yn '0' ar gyfer cath ac '1' ar gyfer ci. Mae'r data a'r labeli yn cael eu pasio trwy'r model.
Dysgu
Mae data'n cael ei fwydo i'r model un endid ar y tro. Mae'r data hwn yn cael ei rannu'n dalpiau a'i basio trwy bob nod o'r model. Mae nodau yn cyflawni gweithrediadau mathemategol ar y talpiau hyn.
Nid oes angen i chi wybod swyddogaethau na chyfrifiadau mathemategol y tiwtorial hwn, ond mae'n bwysig cael syniad cyffredinol o sut mae'r modelau hyn yn gweithio. Ar ôl cyfres o gyfrifiadau mewn un haen, trosglwyddir data i'r haen nesaf ac yn y blaen.
Unwaith y bydd wedi'i gwblhau, mae ein model yn rhagweld y label data ar yr haen allbwn (er enghraifft, mewn problem dosbarthu anifeiliaid rydym yn cael rhagfynegiad '0' ar gyfer cath).
Yna mae'r model yn mynd yn ei flaen i gymharu'r gwerth a ragfynegwyd hwn â gwerth gwirioneddol y label.
Os yw'r gwerthoedd yn cyfateb, bydd ein model yn cymryd y mewnbwn nesaf ond os yw'r gwerthoedd yn wahanol bydd y model yn cyfrifo'r gwahaniaeth rhwng y ddau werth, a elwir yn golled, ac yn addasu cyfrifiadau nodau i gynhyrchu labeli cyfatebol y tro nesaf.
Fframweithiau Dysgu Dwfn
Er mwyn adeiladu Rhwydweithiau Newral mewn cod, mae angen i ni fewnforio Fframweithiau Dysgu Dwfn a elwir yn lyfrgelloedd sy'n defnyddio ein Hamgylchedd Datblygu Integredig (IDE).
Mae'r fframweithiau hyn yn gasgliad o swyddogaethau a ysgrifennwyd ymlaen llaw a fydd yn ein helpu yn y tiwtorial hwn. Byddwn yn defnyddio fframwaith Keras i adeiladu ein model.
Llyfrgell Python yw Keras sy'n defnyddio backend dysgu dwfn a deallusrwydd artiffisial o'r enw Llif tensor creu NNs ar ffurf modelau dilyniannol syml yn rhwydd.
Mae Keras hefyd yn dod â'i fodelau preexisting ei hun y gellir eu defnyddio hefyd. Ar gyfer y tiwtorial hwn, byddwn yn creu ein model ein hunain gan ddefnyddio Keras.
Gallwch ddysgu mwy am y fframwaith Dysgu Dwfn hwn o'r Gwefan Keras.
Adeiladu Rhwydwaith Niwral (Tiwtorial)
Gadewch i ni symud ymlaen i adeiladu Rhwydwaith Niwral gan ddefnyddio Python.
Datganiad Problem
Mae Rhwydweithiau Niwral yn fath o ateb i broblemau sy'n seiliedig ar AI. Ar gyfer y tiwtorial hwn byddwn yn mynd dros y Pima Indians Diabetes Data, sydd ar gael yma.
ICU Mae Machine Learning wedi llunio'r set ddata hon ac mae'n cynnwys cofnod meddygol o gleifion Indiaidd. Mae'n rhaid i'n model ragweld a oes gan y claf ddiabetes o fewn 5 mlynedd ai peidio.
Llwytho Set Ddata
Mae ein set ddata yn un ffeil CSV o'r enw 'diabetes.csv' y gellir ei thrin yn hawdd gan ddefnyddio Microsoft Excel.
Cyn creu ein model, mae angen i ni fewnforio ein set ddata. Gan ddefnyddio'r cod canlynol gallwch wneud hyn:
mewnforio pandas fel pd
data = pd.read_csv('diabetes.csv')
x = data.drop("Canlyniad")
y = data["Canlyniad"]
Dyma ni yn defnyddio'r pandas llyfrgell er mwyn gallu trin ein data ffeil CSV, mae read_csv() yn swyddogaeth adeiledig Pandas sy'n ein galluogi i storio'r gwerthoedd yn ein ffeil i newidyn o'r enw 'data'.
Mae'r newidyn x yn cynnwys ein set ddata heb y data canlyniad (labeli). Rydym yn cyflawni hyn gyda'r swyddogaeth data.drop() sy'n tynnu'r labeli ar gyfer x, tra bod y yn cynnwys y data canlyniad (label) yn unig.
Adeiladu Model Dilyniannol
Cam 1: Mewnforio Llyfrgelloedd
Yn gyntaf, mae angen i ni fewnforio TensorFlow a Keras, ynghyd â rhai paramedrau sy'n ofynnol ar gyfer ein model. Mae'r cod canlynol yn ein galluogi i wneud hyn:
mewnforio tensorflow fel tf
o keras mewnforio tensorflow
o tensorflow.keras.models mewnforio Dilyniannol
o tensorflow.keras.layers mewnforio Activation, Trwchus
o tensorflow.keras.optimizers mewnforio Adam
o tensorflow.keras.metrics mewnforio categorical_crossentropy
Ar gyfer ein model rydym yn mewnforio haenau trwchus. Mae'r rhain yn haenau sydd wedi'u cysylltu'n llawn; hy, mae pob nod mewn haen wedi'i gysylltu'n llawn â nod arall yn yr haen nesaf.
Rydym hefyd yn mewnforio an activation swyddogaeth sydd ei hangen ar gyfer graddio data a anfonwyd i nodau. Optimizers hefyd wedi'u mewnforio i leihau colledion.
Mae Adam yn optimizer enwog sy'n gwneud ein cyfrifiadau nod diweddaru model yn fwy effeithlon, ynghyd â categorical_crossentropy sef y math o swyddogaeth golled (cyfrifo'r gwahaniaeth rhwng gwerthoedd label gwirioneddol a rhagfynegedig) y byddwn yn eu defnyddio.
Cam 2: Dylunio Ein Model
Mae gan y model rydw i'n ei greu un mewnbwn (gyda 16 uned), un haen gudd (gyda 32 uned) ac un haen allbwn (gyda 2 uned). Nid yw'r niferoedd hyn yn sefydlog a byddant yn dibynnu'n llwyr ar y broblem a roddir.
Mae gosod y nifer cywir o unedau a haenau yn broses y gellir ei gwella dros amser trwy ymarfer. Mae actifadu yn cyfateb i'r math o raddfa y byddwn yn ei berfformio ar ein data cyn ei drosglwyddo trwy nod.
Mae Relu a Softmax yn swyddogaethau actifadu enwog ar gyfer y dasg hon.
model = Dilyniannol([
Trwchus(unedau = 16, mewnbwn_shape = (1,), activation = 'relu'),
Trwchus(unedau = 32, actifadu = 'relu'),
Trwchus(unedau = 2, actifadu = 'softmax')
])
Dyma sut ddylai crynodeb y model edrych:
Hyfforddi'r Model
Bydd ein model yn cael ei hyfforddi mewn dau gam, y cyntaf yw llunio'r model (rhoi'r model at ei gilydd) a'r nesaf yw gosod y model ar set ddata benodol.
Gellir gwneud hyn gan ddefnyddio'r ffwythiant model.compile() ac yna'r ffwythiant model.fit().
model.compile(optimizer = Adam(learning_rate = 0.0001), colled = 'deuaidd_croesentropi', metrigau = [ 'cywirdeb'])
model.fit(x, y, epochs = 30, batch_size = 10)
Mae pennu'r metrig 'cywirdeb' yn ein galluogi i arsylwi cywirdeb ein model yn ystod hyfforddiant.
Gan fod ein labeli ar ffurf 1's a 0's, byddwn yn defnyddio swyddogaeth colled deuaidd i gyfrifo'r gwahaniaeth rhwng labeli gwirioneddol a rhagfynegedig.
Mae'r set ddata hefyd yn cael ei rhannu'n sypiau o 10 (batch_size) a bydd yn cael ei phasio drwy'r model 30 gwaith (epocs). Ar gyfer set ddata benodol, x fyddai'r data ac y fyddai'r labeli sy'n cyfateb i'r data.
Model Profi gan Ddefnyddio Rhagfynegiadau
I werthuso ein model, rydyn ni'n gwneud rhagfynegiadau ar ddata'r prawf gan ddefnyddio'r swyddogaeth rhagfynegi ().
rhagfynegiadau = model.rhagweld(x)
A dyna ni!
Dylech nawr feddu ar ddealltwriaeth dda o'r Dysgu Dwfn cymhwysiad, Neural Networks, sut maen nhw'n gweithio'n gyffredinol a sut i adeiladu, hyfforddi a phrofi model mewn cod Python.
Rwy'n gobeithio y bydd y tiwtorial hwn yn rhoi'r kickstart i chi greu a defnyddio'ch modelau Dysgu Dwfn eich hun.
Rhowch wybod i ni yn y sylwadau a oedd yr erthygl yn ddefnyddiol.
Gadael ymateb