Tabl Cynnwys[Cuddio][Dangos]
Yn ystod y blynyddoedd diwethaf, mae rhwydweithiau niwral wedi dod yn fwy poblogaidd ers iddynt ddangos eu bod yn arbennig o dda mewn ystod eang o dasgau.
Dangoswyd eu bod yn ddewis gwych ar gyfer adnabod delwedd a sain, prosesu iaith naturiol, a hyd yn oed chwarae gemau cymhleth fel Go a gwyddbwyll.
Yn y swydd hon, byddaf yn eich tywys trwy'r broses gyfan o hyfforddi rhwydwaith niwral. Soniaf ac egluraf yr holl gamau i hyfforddi rhwydwaith niwral.
Tra byddaf yn mynd dros y camau hoffwn ychwanegu enghraifft syml i wneud yn siŵr bod enghraifft ymarferol hefyd.
Felly, dewch draw, a gadewch i ni ddysgu sut i brosesu rhwydweithiau niwral
Gadewch i ni ddechrau syml a gofyn beth ydynt rhwydweithiau nefol yn y lle cyntaf.
Beth yn union yw Rhwydweithiau Niwral?
Meddalwedd cyfrifiadurol sy'n efelychu gweithrediad yr ymennydd dynol yw rhwydweithiau nerfol. Gallant ddysgu o symiau enfawr o ddata a sylwi ar batrymau y gall pobl ei chael yn anodd eu canfod.
Mae rhwydweithiau niwral wedi tyfu mewn poblogrwydd yn ystod y blynyddoedd diwethaf oherwydd eu hamlochredd mewn tasgau fel adnabod llun a sain, prosesu iaith naturiol, a modelu rhagfynegol.
Yn gyffredinol, mae rhwydweithiau niwral yn arf cryf ar gyfer ystod eang o gymwysiadau ac mae ganddynt gyfle i drawsnewid y ffordd yr ydym yn ymdrin ag ystod eang o swyddi.
Pam y Dylem Wybod Amdanynt?
Mae deall rhwydweithiau niwral yn hollbwysig oherwydd eu bod wedi arwain at ddarganfyddiadau mewn amrywiaeth o feysydd, gan gynnwys golwg cyfrifiadurol, adnabod lleferydd, a phrosesu iaith naturiol.
Mae rhwydweithiau niwral, er enghraifft, wrth wraidd datblygiadau diweddar mewn ceir hunan-yrru, gwasanaethau cyfieithu awtomatig, a hyd yn oed diagnosteg feddygol.
Mae deall sut mae rhwydweithiau niwral yn gweithredu a sut i'w dylunio yn ein helpu i adeiladu cymwysiadau newydd a dyfeisgar. Ac, efallai, y gallai arwain at fwy fyth o ddarganfyddiadau yn y dyfodol.
Nodyn am y Tiwtorial
Fel y dywedais uchod, hoffwn esbonio'r camau o hyfforddi rhwydwaith niwral trwy roi enghraifft. I wneud hyn, dylem siarad am y set ddata MNIST. Mae'n ddewis poblogaidd i ddechreuwyr sydd eisiau dechrau gyda rhwydweithiau niwral.
Mae MNIST yn acronym sy'n sefyll am y Sefydliad Cenedlaethol Safonau a Thechnoleg Addasedig. Mae'n set ddata digid mewn llawysgrifen a ddefnyddir yn gyffredin ar gyfer hyfforddi a phrofi modelau dysgu peiriant, yn enwedig rhwydweithiau niwral.
Mae’r casgliad yn cynnwys 70,000 o luniau graddlwyd o rifau mewn llawysgrifen yn amrywio o 0 i 9.
Mae set ddata MNIST yn feincnod poblogaidd ar gyfer dosbarthiad delwedd tasgau. Fe'i defnyddir yn aml ar gyfer addysgu a dysgu gan ei fod yn gryno ac yn hawdd delio ag ef tra'n gosod her anodd i algorithmau dysgu peirianyddol ei hateb.
Cefnogir set ddata MNIST gan sawl fframwaith dysgu peirianyddol a llyfrgelloedd, gan gynnwys TensorFlow, Keras, a PyTorch.
Nawr ein bod ni'n gwybod am set ddata MNIST, gadewch i ni ddechrau gyda'n camau o hyfforddi rhwydwaith niwral.
Camau Sylfaenol i Hyfforddi Rhwydwaith Niwral
Mewnforio Llyfrgelloedd Angenrheidiol
Wrth ddechrau hyfforddi rhwydwaith niwral am y tro cyntaf, mae'n hanfodol cael yr offer angenrheidiol i ddylunio a hyfforddi'r model. Y cam cychwynnol wrth greu rhwydwaith niwral yw mewnforio llyfrgelloedd gofynnol fel TensorFlow, Keras, a NumPy.
Mae'r llyfrgelloedd hyn yn flociau adeiladu ar gyfer datblygiad y rhwydwaith niwral ac yn darparu galluoedd hanfodol. Mae'r cyfuniad o'r llyfrgelloedd hyn yn caniatáu ar gyfer creu dyluniadau rhwydwaith niwral soffistigedig a hyfforddiant cyflym.
I ddechreu ein hesiampl; byddwn yn mewnforio'r llyfrgelloedd gofynnol, sy'n cynnwys TensorFlow, Keras, a NumPy. TensorFlow yn fframwaith dysgu peiriant ffynhonnell agored, mae Keras yn API rhwydwaith niwral lefel uchel, ac mae NumPy yn llyfrgell cyfrifiadurol Python rhifiadol.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Llwythwch y Set Ddata
Rhaid llwytho'r set ddata nawr. Y set ddata yw'r set o ddata y bydd y rhwydwaith niwral yn cael ei hyfforddi arno. Gall hyn fod yn unrhyw fath o ddata, gan gynnwys lluniau, sain a thestun.
Mae'n hollbwysig rhannu'r set ddata yn ddwy ran: un ar gyfer hyfforddi'r rhwydwaith niwral ac un arall ar gyfer asesu cywirdeb y model hyfforddedig. Gellir defnyddio sawl llyfrgell, gan gynnwys TensorFlow, Keras, a PyTorch, i fewnforio'r set ddata.
Er enghraifft, rydym hefyd yn defnyddio Keras i lwytho set ddata MNIST. Mae 60,000 o luniau hyfforddi a 10,000 o ddelweddau prawf yn y set ddata.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Rhagbrosesu'r Data
Mae rhagbrosesu data yn gam pwysig wrth hyfforddi rhwydwaith niwral. Mae'n golygu paratoi a glanhau'r data cyn iddo gael ei fwydo i'r rhwydwaith niwral.
Mae graddio gwerthoedd picsel, normaleiddio data, a throsi labeli i amgodio un poeth yn enghreifftiau o weithdrefnau rhagbrosesu. Mae'r prosesau hyn yn cynorthwyo'r rhwydwaith niwral i ddysgu'n fwy effeithiol a manwl gywir.
Gall rhagbrosesu'r data hefyd helpu i leihau gorffitio a gwella perfformiad y rhwydwaith niwral.
Rhaid i chi ragbrosesu'r data cyn hyfforddi'r rhwydwaith niwral. Mae hyn yn cynnwys newid y labeli i amgodio un poeth a graddio'r gwerthoedd picsel i fod rhwng 0 ac 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Diffiniwch y Model
Mae'r broses o ddiffinio'r model rhwydwaith niwral yn cynnwys sefydlu ei bensaernïaeth, megis nifer yr haenau, nifer y niwronau fesul haen, swyddogaethau actifadu, a math o rwydwaith (ymborth, cylchol, neu droellol).
Mae'r dyluniad rhwydwaith niwral a ddefnyddiwch yn cael ei bennu gan y math o broblem rydych chi'n ceisio ei datrys. Gall dyluniad rhwydwaith niwral wedi'i ddiffinio'n dda fod o gymorth i ddysgu rhwydwaith niwral trwy ei wneud yn fwy effeithlon a chywir.
Mae'n bryd disgrifio'r model rhwydwaith niwral ar hyn o bryd. Defnyddiwch fodel syml gyda dwy haen gudd, pob un â 128 niwronau, a haen allbwn softmax, sydd â 10 niwron, ar gyfer yr enghraifft hon.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Lluniwch y Model
Rhaid nodi'r swyddogaeth golled, y optimizer, a'r metrigau wrth lunio'r model rhwydwaith niwral. Mae gallu'r rhwydwaith niwral i ragweld yr allbwn yn gywir yn cael ei fesur gan y swyddogaeth golled.
Er mwyn cynyddu cywirdeb y rhwydwaith niwral yn ystod hyfforddiant, mae'r optimizer yn addasu ei bwysau. Mae effeithiolrwydd y rhwydwaith niwral yn ystod hyfforddiant yn cael ei fesur gan ddefnyddio metrigau. Rhaid creu'r model cyn y gellir hyfforddi'r rhwydwaith niwral.
Yn ein hesiampl, mae'n rhaid i ni nawr adeiladu'r model ar hyn o bryd.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Hyfforddwch y Model
Gelwir pasio'r set ddata a baratowyd trwy'r rhwydwaith niwral wrth addasu pwysau'r rhwydwaith i leihau'r swyddogaeth golli yn hyfforddi'r rhwydwaith niwral.
Defnyddir y set ddata ddilysu i brofi'r rhwydwaith niwral yn ystod hyfforddiant i olrhain ei effeithiolrwydd ac atal gorffitio. Gall y broses hyfforddi gymryd peth amser, felly mae'n bwysig sicrhau bod y rhwydwaith niwral wedi'i hyfforddi'n briodol i atal tanffitio.
Gan ddefnyddio'r data hyfforddi, gallwn nawr hyfforddi'r model. I wneud hyn, rhaid i ni ddiffinio maint y swp (nifer y samplau a broseswyd cyn i'r model gael ei ddiweddaru) a nifer y cyfnodau (nifer yr ailadroddiadau ar draws y set ddata gyflawn).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Gwerthuso'r Model
Profi perfformiad y rhwydwaith niwral ar y set ddata prawf yw'r broses o'i werthuso. Yn y cam hwn, defnyddir y rhwydwaith niwral hyfforddedig i brosesu set ddata'r prawf, a chaiff cywirdeb ei werthuso.
Mae pa mor effeithiol y gall rhwydwaith niwral ragweld y canlyniad cywir o ddata newydd sbon, heb ei brofi, yn fesur o'i gywirdeb. Gallai dadansoddi'r model fod o gymorth i benderfynu pa mor dda y mae'r rhwydwaith niwral yn gweithio a hefyd awgrymu ffyrdd o'i wneud hyd yn oed yn well.
Yn olaf, gallwn asesu perfformiad y model gan ddefnyddio data'r prawf ar ôl hyfforddi.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Dyna i gyd! Fe wnaethom hyfforddi rhwydwaith niwral i ganfod digidau yn y set ddata MNIST.
O baratoi'r data i asesu effeithiolrwydd y model hyfforddedig, mae hyfforddi rhwydwaith niwral yn cynnwys sawl proses. Mae'r cyfarwyddiadau hyn yn helpu dechreuwyr i adeiladu a hyfforddi rhwydweithiau niwral yn effeithlon.
Gall dechreuwyr sydd am ddefnyddio rhwydweithiau niwral i fynd i'r afael â materion amrywiol wneud hynny trwy ddilyn y cyfarwyddiadau hyn.
Delweddu'r Esiampl
Gadewch i ni geisio delweddu'r hyn yr ydym wedi'i wneud gyda'r enghraifft hon i ddeall yn well.
Defnyddir y pecyn Matplotlib yn y pyt cod hwn i blotio detholiad ar hap o luniau o'r set ddata hyfforddi. Yn gyntaf, rydym yn mewnforio modiwl “pyplot” Matplotlib ac fel arall fel “plt”. Yna, gyda chyfanswm dimensiwn o 10 wrth 10 modfedd, rydym yn gwneud ffigur gyda 5 rhes a 5 colofn o is-blotiau.
Yna, rydyn ni'n defnyddio dolen for i ailadrodd dros yr isblotiau, gan ddangos llun o'r set ddata hyfforddi ar bob un. I arddangos y llun, defnyddir y swyddogaeth "imshow", gyda'r opsiwn "cmap" wedi'i osod i 'lwyd' i arddangos y lluniau mewn graddlwyd. Mae teitl pob is-blot hefyd wedi'i osod i label y ddelwedd gysylltiedig yn y casgliad.
Yn olaf, rydym yn defnyddio'r swyddogaeth “sioe” i arddangos y lluniau wedi'u plotio yn y ffigur. Mae'r swyddogaeth hon yn ein galluogi i werthuso'n weledol sampl o luniau o'r set ddata, a all ein helpu i ddeall y data a nodi unrhyw bryderon posibl.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Modelau Rhwydwaith Niwral Pwysig
- Rhwydweithiau Niwral Feedforward (FFNN): Math syml o rwydwaith niwral lle mae gwybodaeth yn teithio mewn un ffordd yn unig, o'r haen fewnbwn i'r haen allbwn trwy un neu fwy o haenau cudd.
- Rhwydweithiau Niwral Convolutional (CNN): Rhwydwaith niwral a ddefnyddir yn gyffredin i ganfod a phrosesu delweddau. Bwriad CNNs yw adnabod a thynnu nodweddion o luniau yn awtomatig.
- Rhwydweithiau Niwral Cylchol (RNN): Rhwydwaith niwral a ddefnyddir yn gyffredin i ganfod a phrosesu delweddau. Bwriad CNNs yw adnabod a thynnu nodweddion o luniau yn awtomatig.
- Rhwydweithiau Cof Hirdymor (LSTM): Ffurf ar RNN a grëwyd i oresgyn y mater o raddiannau diflannu mewn RNNs safonol. Gellir casglu dibyniaethau hirdymor mewn data dilyniannol yn well gyda LSTMs.
- Autoencoders: Rhwydwaith niwral dysgu heb oruchwyliaeth lle dysgir y rhwydwaith i atgynhyrchu ei ddata mewnbwn ar ei haen allbwn. Mae'n bosibl y bydd cywasgu data, canfod anghysondebau a dadwneud lluniau oll yn cael eu cyflawni gydag awtogodyddion.
- Rhwydweithiau Gwrthwynebol Cynhyrchiol (GAN): Mae rhwydwaith niwral cynhyrchiol yn fath o rwydwaith niwral sy'n cael ei ddysgu i gynhyrchu data newydd y gellir ei gymharu â set ddata hyfforddi. Mae GANs yn cynnwys dau rwydwaith: rhwydwaith generadur sy'n creu data ffres a rhwydwaith gwahaniaethol sy'n asesu ansawdd y data a grëwyd.
Amlapio, Beth Ddylai Eich Camau Nesaf Fod?
Archwiliwch nifer o adnoddau a chyrsiau ar-lein i ddysgu mwy am hyfforddi rhwydwaith niwral. Mae gweithio ar brosiectau neu enghreifftiau yn un dull o gael gwell gafael ar rwydweithiau niwral.
Dechreuwch gydag enghreifftiau hawdd fel problemau dosbarthu deuaidd neu dasgau dosbarthu lluniau, ac yna ewch i dasgau anoddach fel prosesu iaith naturiol neu dysgu atgyfnerthu.
Mae gweithio ar brosiectau yn eich helpu i gael profiad go iawn a gwella eich sgiliau hyfforddi rhwydwaith niwral.
Gallwch hefyd ymuno â grwpiau a fforymau dysgu peirianyddol a rhwydwaith niwral ar-lein i ryngweithio â dysgwyr a gweithwyr proffesiynol eraill, rhannu eich gwaith, a derbyn sylwadau a chymorth.
LSRS MONRAD-KROHN
⁶ĵByddwn wedi hoffi gweld y rhaglen python ar gyfer lleihau gwallau. Nodau dethol arbennig ar gyfer newidiadau pwysau i'r haen nesaf