Orodha ya Yaliyomo[Ficha][Onyesha]
Katika miaka ya hivi majuzi, mitandao ya neva imeongezeka kwa umaarufu kwani imeonyesha kuwa bora sana katika anuwai ya kazi.
Yameonyeshwa kuwa chaguo bora kwa utambuzi wa picha na sauti, usindikaji wa lugha asilia, na hata kucheza michezo ngumu kama vile Go na chess.
Katika chapisho hili, nitakutembeza kupitia mchakato mzima wa mafunzo ya mtandao wa neva. Nitataja na kuelezea hatua zote za kutoa mafunzo kwa mtandao wa neva.
Wakati nitapitia hatua ningependa kuongeza mfano rahisi ili kuhakikisha kuwa kuna mfano wa vitendo pia.
Kwa hivyo, njoo, na tujifunze jinsi ya kuchakata mitandao ya neva
Wacha tuanze rahisi na tuulize ni nini mitandao ya neural katika nafasi ya kwanza.
Mitandao ya Neural ni Nini Hasa?
Mitandao ya neva ni programu ya kompyuta inayoiga utendaji wa ubongo wa binadamu. Wanaweza kujifunza kutoka kwa idadi kubwa ya data na mifumo ya doa ambayo watu wanaweza kupata shida kugundua.
Mitandao ya Neural imeongezeka kwa umaarufu katika miaka ya hivi karibuni kwa sababu ya utofauti wake katika kazi kama vile utambuzi wa picha na sauti, usindikaji wa lugha asilia na uundaji wa ubashiri.
Kwa ujumla, mitandao ya neva ni zana thabiti kwa anuwai ya programu na ina nafasi ya kubadilisha jinsi tunavyoshughulikia kazi nyingi.
Kwa Nini Tunapaswa Kujua Kuwahusu?
Kuelewa mitandao ya neva ni muhimu kwa sababu imesababisha ugunduzi katika nyanja mbalimbali, ikiwa ni pamoja na maono ya kompyuta, utambuzi wa usemi, na usindikaji wa lugha asilia.
Mitandao ya neva, kwa mfano, ndiyo kiini cha maendeleo ya hivi majuzi katika magari yanayojiendesha yenyewe, huduma za tafsiri kiotomatiki na hata uchunguzi wa kimatibabu.
Kuelewa jinsi mitandao ya neva hufanya kazi na jinsi ya kuiunda hutusaidia kuunda programu mpya na bunifu. Na, labda, inaweza kusababisha uvumbuzi mkubwa zaidi katika siku zijazo.
Dokezo Kuhusu Mafunzo
Kama nilivyosema hapo juu, ningependa kuelezea hatua za kufunza mtandao wa neva kwa kutoa mfano. Ili kufanya hivyo, tunapaswa kuzungumza kuhusu mkusanyiko wa data wa MNIST. Ni chaguo maarufu kwa wanaoanza ambao wanataka kuanza na mitandao ya neva.
MNIST ni kifupi ambacho kinawakilisha Taasisi ya Kitaifa ya Viwango na Teknolojia Iliyobadilishwa. Ni mkusanyiko wa data wa tarakimu iliyoandikwa kwa mkono ambayo hutumiwa kwa kawaida kwa mafunzo na majaribio ya miundo ya kujifunza ya mashine, hasa mitandao ya neva.
Mkusanyiko una picha 70,000 za rangi ya kijivu za nambari zilizoandikwa kwa mkono kuanzia 0 hadi 9.
Seti ya data ya MNIST ni kigezo maarufu cha uainishaji wa picha kazi. Inatumika mara kwa mara kwa ajili ya kufundishia na kujifunzia kwa kuwa imeshikamana na ni rahisi kushughulikia huku ikileta changamoto ngumu kwa algoriti za kujifunza kwa mashine kujibu.
Seti ya data ya MNIST inaauniwa na mifumo na maktaba kadhaa za kujifunza mashine, ikiwa ni pamoja na TensorFlow, Keras na PyTorch.
Sasa tunajua kuhusu seti ya data ya MNIST, hebu tuanze na hatua zetu za kufunza mtandao wa neva.
Hatua za Msingi za Kufunza Mtandao wa Neural
Ingiza Maktaba Muhimu
Unapoanza kutoa mafunzo kwa mtandao wa neva, ni muhimu kuwa na zana muhimu za kuunda na kufunza modeli. Hatua ya awali ya kuunda mtandao wa neva ni kuagiza maktaba zinazohitajika kama vile TensorFlow, Keras, na NumPy.
Maktaba hizi hutumika kama vizuizi vya ujenzi wa mtandao wa neva na hutoa uwezo muhimu. Mchanganyiko wa maktaba hizi huruhusu uundaji wa miundo ya kisasa ya mtandao wa neva na mafunzo ya haraka.
Kuanza mfano wetu; tutaagiza maktaba zinazohitajika, ambazo ni pamoja na TensorFlow, Keras, na NumPy. TensorFlow ni mfumo wa kujifunza mashine wa chanzo huria, Keras ni API ya mtandao wa neural ya kiwango cha juu, na NumPy ni maktaba ya Python ya kompyuta.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Pakia Seti ya Data
Seti ya data lazima sasa ipakiwe. Seti ya data ni seti ya data ambayo mtandao wa neva utafunzwa. Hii inaweza kuwa aina yoyote ya data, ikijumuisha picha, sauti na maandishi.
Ni muhimu kugawanya mkusanyiko wa data katika sehemu mbili: moja kwa ajili ya mafunzo ya mtandao wa neva na nyingine kwa ajili ya kutathmini usahihi wa mfano uliofunzwa. Maktaba kadhaa, ikiwa ni pamoja na TensorFlow, Keras, na PyTorch, zinaweza kutumika kuleta seti ya data.
Kwa mfano wetu, tunatumia pia Keras kupakia mkusanyiko wa data wa MNIST. Kuna picha 60,000 za mafunzo na picha 10,000 za majaribio kwenye mkusanyiko wa data.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Changanua Data
Usindikaji wa data ni hatua muhimu katika kufundisha mtandao wa neva. Inajumuisha kuandaa na kusafisha data kabla ya kuingizwa kwenye mtandao wa neva.
Kuongeza thamani za pikseli, kurekebisha data, na kubadilisha lebo kuwa usimbaji motomoto moja ni mifano ya taratibu za kuchakata mapema. Michakato hii husaidia mtandao wa neva katika kujifunza kwa ufanisi zaidi na kwa usahihi.
Kuchakata data pia kunaweza kusaidia kupunguza utumiaji kupita kiasi na kuboresha utendakazi wa mtandao wa neva.
Lazima usindika data kabla ya kufundisha mtandao wa neva. Hii ni pamoja na kubadilisha lebo hadi usimbaji wa moto-moja na kuongeza thamani za pikseli kuwa kati ya 0 na 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)
Fafanua Mfano
Mchakato wa kufafanua muundo wa mtandao wa neva unahusisha kuanzisha usanifu wake, kama vile idadi ya tabaka, idadi ya niuroni kwa kila safu, vitendaji vya kuwezesha na aina ya mtandao (mlisho, unaorudiwa, au wa kubadilisha).
Muundo wa mtandao wa neva unaotumia unabainishwa na aina ya tatizo unalojaribu kutatua. Muundo wa mtandao wa neural uliobainishwa vyema unaweza kusaidia katika kujifunza kwa mtandao wa neva kwa kuufanya kuwa bora na sahihi zaidi.
Ni wakati wa kuelezea mfano wa mtandao wa neva katika hatua hii. Tumia kielelezo rahisi kilicho na tabaka mbili zilizofichwa, kila moja ikiwa na nyuroni 128, na safu ya pato ya softmax, ambayo ina nyuroni 10, kwa mfano huu.
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')
])
Kusanya Mfano
Chaguo za kukokotoa za upotevu, kiboreshaji, na vipimo lazima vibainishwe wakati wa ujumuishaji wa muundo wa mtandao wa neva. Uwezo wa mtandao wa neva wa kutabiri matokeo kwa usahihi hupimwa na chaguo la kukokotoa la upotezaji.
Ili kuongeza usahihi wa mtandao wa neva wakati wa mafunzo, kiboreshaji hurekebisha uzani wake. Ufanisi wa mtandao wa neva wakati wa mafunzo hupimwa kwa kutumia vipimo. Muundo lazima uundwe kabla mtandao wa neva uweze kufunzwa.
Katika mfano wetu, lazima sasa hivi tutengeneze mfano.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Funza Mfano
Kupitisha mkusanyiko wa data uliotayarishwa kupitia mtandao wa neva huku ukirekebisha uzani wa mtandao ili kupunguza utendaji wa upotevu hujulikana kama kufunza mtandao wa neva.
Seti ya data ya uthibitishaji inatumika kujaribu mtandao wa neva wakati wa mafunzo ili kufuatilia ufanisi wake na kuzuia kutosheleza kupita kiasi. Mchakato wa mafunzo unaweza kuchukua muda, kwa hivyo ni muhimu kuhakikisha kuwa mtandao wa neva umefunzwa ipasavyo ili kuzuia kutofaa.
Kwa kutumia data ya mafunzo, sasa tunaweza kutoa mafunzo kwa modeli. Ili kufanya hivyo, lazima tufafanue saizi ya kundi (idadi ya sampuli zilizochakatwa kabla ya muundo kusasishwa) na idadi ya nyakati (idadi ya marudio kwenye mkusanyiko kamili wa data).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Kutathmini Mfano
Kujaribu utendakazi wa mtandao wa neva kwenye mkusanyiko wa data wa majaribio ni mchakato wa kutathmini. Katika hatua hii, mtandao wa neva uliofunzwa hutumiwa kuchakata mkusanyiko wa data wa majaribio, na usahihi unatathminiwa.
Jinsi mtandao wa neva unavyoweza kutabiri matokeo sahihi kutoka kwa data mpya kabisa, ambayo haijajaribiwa ni kipimo cha usahihi wake. Kuchanganua modeli kunaweza kusaidia kubainisha jinsi mtandao wa neva unavyofanya kazi vizuri na pia kupendekeza njia za kuuboresha zaidi.
Hatimaye tunaweza kutathmini utendaji wa modeli kwa kutumia data ya majaribio baada ya mafunzo.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Ni hayo tu! Tulifunza mtandao wa neva kutambua tarakimu katika mkusanyiko wa data wa MNIST.
Kuanzia kuandaa data hadi kutathmini ufanisi wa kielelezo kilichofunzwa, mafunzo ya mtandao wa neva huhusisha michakato kadhaa. Maagizo haya husaidia wanaoanza katika kujenga na kutoa mafunzo kwa mitandao ya neva.
Wanaoanza ambao wanataka kutumia mitandao ya neural kushughulikia maswala anuwai wanaweza kufanya hivyo kwa kufuata maagizo haya.
Kuona Mfano
Hebu tujaribu kuibua kile ambacho tumefanya na mfano huu ili kuelewa vizuri zaidi.
Kifurushi cha Matplotlib kinatumika katika kijisehemu hiki cha msimbo kupanga uteuzi nasibu wa picha kutoka kwa mkusanyiko wa data wa mafunzo. Kwanza, tunaingiza moduli ya "pyplot" ya Matplotlib na kuiita kama "plt". Kisha, kwa mwelekeo wa jumla wa inchi 10 kwa 10, tunafanya takwimu na safu 5 na safu 5 za subplots.
Kisha, tunatumia kwa kitanzi kusisitiza juu ya sehemu ndogo, kuonyesha picha kutoka kwa hifadhidata ya mafunzo kwa kila moja. Ili kuonyesha picha, chaguo la kukokotoa la "imshow" linatumika, na chaguo la "cmap" limewekwa kuwa 'kijivu' ili kuonyesha picha katika rangi ya kijivu. Kichwa cha kila sehemu ndogo pia kimewekwa kwenye lebo ya picha inayohusishwa kwenye mkusanyiko.
Hatimaye, tunatumia kazi ya "onyesha" ili kuonyesha picha zilizopangwa kwenye takwimu. Chaguo hili la kukokotoa huturuhusu kutathmini kwa macho sampuli ya picha kutoka kwa seti ya data, ambayo inaweza kusaidia katika uelewa wetu wa data na kutambua masuala yoyote yanayowezekana.
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()
Miundo Muhimu ya Mtandao wa Neural
- Mitandao ya Neural ya Feedforward (FFNN): Aina rahisi ya mtandao wa neva ambao habari husafiri kwa njia moja pekee, kutoka kwa safu ya ingizo hadi safu ya pato kupitia safu moja au zaidi zilizofichwa.
- Mitandao ya Neural Convolutional (CNN): Mtandao wa neva ambao hutumiwa kwa kawaida katika kutambua na kuchakata picha. CNN zimekusudiwa kutambua na kutoa vipengele kutoka kwa picha kiotomatiki.
- Mitandao ya Neural ya Kawaida (RNN): Mtandao wa neva ambao hutumiwa kwa kawaida katika kutambua na kuchakata picha. CNN zimekusudiwa kutambua na kutoa vipengele kutoka kwa picha kiotomatiki.
- Mitandao ya Kumbukumbu ya Muda Mrefu (LSTM): Aina ya RNN iliyoundwa ili kuondokana na suala la kutoweka kwa viwango vya juu katika RNN za kawaida. Utegemezi wa muda mrefu katika data mfuatano unaweza kunaswa vyema na LSTM.
- Visimbaji otomatiki: Mtandao wa neva wa kujifunza bila kusimamiwa ambapo mtandao hufundishwa kuzalisha data yake ya ingizo katika safu yake ya matokeo. Mfinyazo wa data, ugunduzi wa hitilafu, na uondoaji sauti wa picha vyote vinaweza kukamilishwa kwa kusimba kiotomatiki.
- Mitandao ya Kuzalisha Matangazo (GAN): Mtandao generative wa neural ni aina ya mtandao wa neva ambao hufunzwa kutoa data mpya ambayo inaweza kulinganishwa na mkusanyiko wa data wa mafunzo. GAN zinaundwa na mitandao miwili: mtandao wa jenereta unaounda data mpya na mtandao wa kibaguzi ambao hutathmini ubora wa data iliyoundwa.
Hitimisho, Je, Hatua Zako Zifuatazo Zinapaswa Kuwa Gani?
Gundua nyenzo na kozi kadhaa za mtandaoni ili upate maelezo zaidi kuhusu mafunzo ya mtandao wa neva. Kufanya kazi kwenye miradi au mifano ni njia moja ya kupata ufahamu bora wa mitandao ya neva.
Anza na mifano rahisi kama vile matatizo ya uainishaji binary au kazi za uainishaji wa picha, kisha uende kwenye kazi ngumu zaidi kama vile kuchakata lugha asilia au kuimarisha kujifunza.
Kufanya kazi kwenye miradi hukusaidia kupata uzoefu halisi na kuboresha ujuzi wako wa mafunzo ya mtandao wa neva.
Unaweza pia kujiunga na mafunzo ya mashine mtandaoni na vikundi na mabaraza ya mtandao wa neva ili kuingiliana na wanafunzi na wataalamu wengine, kushiriki kazi yako, na kupokea maoni na usaidizi.
LSRS MONRAD-KROHN
⁶ĵNingependa kuona programu ya python kwa kupunguza makosa. Node maalum za uteuzi kwa mabadiliko ya uzito kwenye safu inayofuata