Përmbajtje[Fshih][Shfaqje]
Vitet e fundit, rrjetet nervore janë rritur në popullaritet pasi ato janë treguar jashtëzakonisht të mira në një gamë të gjerë detyrash.
Ata janë treguar të jenë një zgjedhje e shkëlqyeshme për njohjen e imazhit dhe audios, përpunimin e gjuhës natyrore dhe madje edhe për të luajtur lojëra të ndërlikuara si Go dhe shah.
Në këtë postim, unë do t'ju udhëzoj në të gjithë procesin e trajnimit të një rrjeti nervor. Unë do të përmend dhe shpjegoj të gjitha hapat për të trajnuar një rrjet nervor.
Ndërsa unë do të kaloj hapat, do të doja të shtoja një shembull të thjeshtë për t'u siguruar që ka edhe një shembull praktik.
Pra, ejani dhe le të mësojmë se si të përpunojmë rrjetet nervore
Le të fillojmë thjesht dhe të pyesim se çfarë janë rrjetet nervore Ne vend te pare.
Çfarë janë saktësisht rrjetet nervore?
Rrjetet nervore janë softuer kompjuterik që simulon funksionimin e trurit të njeriut. Ata mund të mësojnë nga vëllime të mëdha të dhënash dhe të zbulojnë modele që njerëzit mund ta kenë të vështirë t'i zbulojnë.
Rrjetet nervore janë rritur në popullaritet vitet e fundit për shkak të shkathtësisë së tyre në detyra të tilla si njohja e figurës dhe audios, përpunimi i gjuhës natyrore dhe modelimi parashikues.
Në përgjithësi, rrjetet nervore janë një mjet i fortë për një gamë të gjerë aplikimesh dhe kanë një shans për të transformuar mënyrën se si i qasemi një game të gjerë punësh.
Pse duhet të dimë për ta?
Të kuptuarit e rrjeteve nervore është kritike sepse ato kanë çuar në zbulime në një sërë fushash, duke përfshirë vizionin kompjuterik, njohjen e të folurit dhe përpunimin e gjuhës natyrore.
Rrjetet nervore, për shembull, janë në qendër të zhvillimeve të fundit në makinat vetëdrejtuese, shërbimet e përkthimit automatik dhe madje edhe diagnostikimin mjekësor.
Të kuptuarit se si funksionojnë rrjetet nervore dhe si t'i dizajnojmë ato na ndihmon të ndërtojmë aplikacione të reja dhe krijuese. Dhe, ndoshta, mund të çojë në zbulime edhe më të mëdha në të ardhmen.
Një shënim rreth tutorialit
Siç thashë më lart, do të doja të shpjegoja hapat e trajnimit të një rrjeti nervor duke dhënë një shembull. Për ta bërë këtë, duhet të flasim për grupin e të dhënave MNIST. Është një zgjedhje popullore për fillestarët që duan të fillojnë me rrjetet nervore.
MNIST është një akronim që qëndron për Institutin Kombëtar të Modifikuar të Standardeve dhe Teknologjisë. Është një grup të dhënash shifrore të shkruar me dorë që përdoret zakonisht për trajnimin dhe testimin e modeleve të mësimit të makinerive, veçanërisht rrjetet nervore.
Koleksioni përmban 70,000 foto në shkallë gri të numrave të shkruar me dorë që variojnë nga 0 në 9.
Të dhënat e MNIST janë një pikë referimi popullore për klasifikimi i imazhit detyrat. Përdoret shpesh për mësimdhënie dhe mësim pasi është kompakt dhe i lehtë për t'u trajtuar, ndërkohë që paraqet një sfidë të vështirë për t'iu përgjigjur algoritmeve të mësimit të makinerive.
Të dhënat e MNIST mbështeten nga disa korniza dhe biblioteka të mësimit të makinerive, duke përfshirë TensorFlow, Keras dhe PyTorch.
Tani ne e dimë për grupin e të dhënave MNIST, le të fillojmë me hapat tanë të trajnimit të një rrjeti nervor.
Hapat bazë për të trajnuar një rrjet nervor
Importoni bibliotekat e nevojshme
Kur filloni për herë të parë të trajnoni një rrjet nervor, është thelbësore të keni mjetet e nevojshme për të hartuar dhe trajnuar modelin. Hapi fillestar në krijimin e një rrjeti nervor është importimi i bibliotekave të nevojshme si TensorFlow, Keras dhe NumPy.
Këto biblioteka shërbejnë si blloqe ndërtimi për zhvillimin e rrjetit nervor dhe ofrojnë aftësi thelbësore. Kombinimi i këtyre bibliotekave lejon krijimin e modeleve të sofistikuara të rrjeteve nervore dhe trajnime të shpejta.
Për të filluar shembullin tonë; ne do të importojmë bibliotekat e kërkuara, të cilat përfshijnë TensorFlow, Keras dhe NumPy. TensorFlow është një kornizë e mësimit të makinerisë me burim të hapur, Keras është një API e rrjetit nervor të nivelit të lartë dhe NumPy është një bibliotekë llogaritëse numerike Python.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Ngarkoni grupin e të dhënave
Të dhënat tani duhet të ngarkohen. Të dhënat janë grupi i të dhënave mbi të cilat do të trajnohet rrjeti nervor. Këto mund të jenë çdo lloj të dhënash, duke përfshirë fotografitë, audion dhe tekstin.
Është kritike të ndahet grupi i të dhënave në dy pjesë: një për trajnimin e rrjetit nervor dhe një tjetër për vlerësimin e korrektësisë së modelit të trajnuar. Disa biblioteka, duke përfshirë TensorFlow, Keras dhe PyTorch, mund të përdoren për të importuar grupin e të dhënave.
Për shembullin tonë, ne përdorim gjithashtu Keras për të ngarkuar grupin e të dhënave MNIST. Ka 60,000 foto trajnimi dhe 10,000 imazhe testimi në grupin e të dhënave.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Përpunoni paraprakisht të dhënat
Parapërpunimi i të dhënave është një fazë e rëndësishme në trajnimin e një rrjeti nervor. Ai përfshin përgatitjen dhe pastrimin e të dhënave përpara se ato të futen në rrjetin nervor.
Shkallëzimi i vlerave të pikselit, normalizimi i të dhënave dhe konvertimi i etiketave në kodim të vetëm janë shembuj të procedurave të parapërpunimit. Këto procese ndihmojnë rrjetin nervor për të mësuar në mënyrë më efektive dhe më të saktë.
Parapërpunimi i të dhënave mund të ndihmojë gjithashtu për të minimizuar mbipërshtatjen dhe për të përmirësuar performancën e rrjetit nervor.
Ju duhet të përpunoni paraprakisht të dhënat përpara se të trajnoni rrjetin nervor. Kjo përfshin ndryshimin e etiketave në një kodim të vetëm dhe shkallëzimin e vlerave të pikselit në mes 0 dhe 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)
Përcaktoni modelin
Procesi i përcaktimit të modelit të rrjetit nervor përfshin vendosjen e arkitekturës së tij, të tilla si numri i shtresave, numri i neuroneve për shtresë, funksionet e aktivizimit dhe lloji i rrjetit (furnizues, i përsëritur ose konvolucionist).
Dizajni i rrjetit nervor që përdorni përcaktohet nga lloji i problemit që po përpiqeni të zgjidhni. Një dizajn i mirëpërcaktuar i rrjetit nervor mund të ndihmojë në mësimin e rrjetit nervor duke e bërë atë më efikas dhe të saktë.
Është koha për të përshkruar modelin e rrjetit nervor në këtë pikë. Përdorni një model të thjeshtë me dy shtresa të fshehura, secila me 128 neurone, dhe një shtresë dalëse softmax, e cila ka 10 neurone, për këtë shembull.
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')
])
Përpiloni modelin
Funksioni i humbjes, optimizuesi dhe metrikat duhet të specifikohen gjatë përpilimit të modelit të rrjetit nervor. Aftësia e rrjetit nervor për të parashikuar saktë daljen matet nga funksioni i humbjes.
Për të rritur saktësinë e rrjetit nervor gjatë stërvitjes, optimizuesi modifikon peshat e tij. Efektiviteti i rrjetit nervor gjatë trajnimit matet duke përdorur metrikë. Modeli duhet të krijohet përpara se rrjeti nervor të mund të trajnohet.
Në shembullin tonë, ne duhet të ndërtojmë tani modelin.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Trajnoni modelin
Kalimi i grupit të të dhënave të përgatitur përmes rrjetit nervor ndërsa modifikoni peshat e rrjetit për të minimizuar funksionin e humbjes njihet si trajnimi i rrjetit nervor.
Të dhënat e vlefshmërisë përdoren për të testuar rrjetin nervor gjatë trajnimit për të gjurmuar efektivitetin e tij dhe për të parandaluar mbipërshtatjen. Procesi i trajnimit mund të marrë pak kohë, prandaj është e rëndësishme të siguroheni që rrjeti nervor është i trajnuar siç duhet për të parandaluar mospërshtatjen.
Duke përdorur të dhënat e trajnimit, tani mund të trajnojmë modelin. Për ta bërë këtë, ne duhet të përcaktojmë madhësinë e grupit (numrin e mostrave të përpunuara përpara se modeli të përditësohet) dhe numrin e epokave (numrin e përsëritjeve në të gjithë grupin e të dhënave).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Vlerësimi i Modelit
Testimi i performancës së rrjetit nervor në grupin e të dhënave të testit është procesi i vlerësimit të tij. Në këtë fazë, rrjeti nervor i trajnuar përdoret për të përpunuar të dhënat e testit dhe vlerësohet saktësia.
Sa efektivisht një rrjet nervor mund të parashikojë rezultatin e duhur nga të dhënat krejt të reja, të paprovuara, është një masë e saktësisë së tij. Analizimi i modelit mund të ndihmojë në përcaktimin se sa mirë funksionon rrjeti nervor dhe gjithashtu të sugjerojë mënyra për ta bërë atë edhe më të mirë.
Më në fund mund të vlerësojmë performancën e modelit duke përdorur të dhënat e testit pas trajnimit.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Kjo eshte e gjitha! Ne trajnuam një rrjet nervor për të zbuluar shifrat në grupin e të dhënave MNIST.
Nga përgatitja e të dhënave deri te vlerësimi i efektivitetit të modelit të trajnuar, trajnimi i një rrjeti nervor përfshin disa procese. Këto udhëzime ndihmojnë fillestarët në ndërtimin dhe trajnimin me efikasitet të rrjeteve nervore.
Fillestarët që duan të përdorin rrjetet nervore për të trajtuar çështje të ndryshme mund ta bëjnë këtë duke ndjekur këto udhëzime.
Vizualizimi i Shembullit
Le të përpiqemi të përfytyrojmë atë që kemi bërë me këtë shembull për ta kuptuar më mirë.
Paketa Matplotlib përdoret në këtë fragment kodi për të hartuar një përzgjedhje të rastësishme fotografish nga grupi i të dhënave të trajnimit. Së pari, ne importojmë modulin "pyplot" të Matplotlib dhe e emërtojmë atë si "plt". Më pas, me një dimension total prej 10 me 10 inç, bëjmë një figurë me 5 rreshta dhe 5 kolona nënplotesash.
Më pas, ne përdorim një cikli for për të përsëritur mbi nënplotesa, duke shfaqur një fotografi nga grupi i të dhënave të trajnimit në secilën prej tyre. Për të shfaqur foton, përdoret funksioni "imshow", me opsionin "cmap" të vendosur në "gri" për të shfaqur fotot në shkallë gri. Titulli i çdo nënplotësie vendoset gjithashtu në etiketën e imazhit të lidhur në koleksion.
Së fundi, ne përdorim funksionin "shfaq" për të shfaqur fotot e vizatuara në figurë. Ky funksion na lejon të vlerësojmë vizualisht një mostër fotografish nga grupi i të dhënave, gjë që mund të ndihmojë në kuptimin tonë të të dhënave dhe identifikimin e çdo shqetësimi të mundshëm.
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()
Modele të rëndësishme të rrjeteve nervore
- Rrjetet nervore të përshpejtuara (FFNN): Një lloj i thjeshtë i rrjetit nervor në të cilin informacioni udhëton vetëm në një mënyrë, nga shtresa hyrëse në shtresën dalëse nëpërmjet një ose më shumë shtresave të fshehura.
- Rrjetet neurale konvolucionale (CNN): Një rrjet nervor që përdoret zakonisht në zbulimin dhe përpunimin e imazheve. CNN-të synojnë të njohin dhe nxjerrin automatikisht veçoritë nga fotot.
- Rrjetet nervore të përsëritura (RNN): Një rrjet nervor që përdoret zakonisht në zbulimin dhe përpunimin e imazheve. CNN-të synojnë të njohin dhe nxjerrin automatikisht veçoritë nga fotot.
- Rrjetet e memories afatshkurtër (LSTM): Një formë e RNN e krijuar për të kapërcyer çështjen e zhdukjes së gradientëve në RNN standarde. Varësitë afatgjata në të dhënat sekuenciale mund të kapen më mirë me LSTM.
- Koduesit automatikë: Rrjeti nervor i mësimit të pambikëqyrur në të cilin rrjeti mësohet të riprodhojë të dhënat e tij hyrëse në shtresën e tij dalëse. Kompresimi i të dhënave, zbulimi i anomalive dhe denoisimi i figurës mund të realizohen të gjitha me autoenkoder.
- Rrjetet gjeneruese kundërshtare (GAN): Një rrjet nervor gjenerues është një formë e rrjetit nervor që mësohet të prodhojë të dhëna të reja që janë të krahasueshme me një grup të dhënash trajnimi. GAN-et përbëhen nga dy rrjete: një rrjet gjenerues që krijon të dhëna të freskëta dhe një rrjet diskriminues që vlerëson cilësinë e të dhënave të krijuara.
Përfundim, cilët duhet të jenë hapat tuaj të ardhshëm?
Eksploroni disa burime dhe kurse në internet për të mësuar më shumë rreth trajnimit të një rrjeti nervor. Puna në projekte ose shembuj është një metodë për të fituar një kuptim më të mirë të rrjeteve nervore.
Filloni me shembuj të thjeshtë si problemet e klasifikimit binar ose detyrat e klasifikimit të figurave dhe më pas shkoni te detyrat më të vështira si përpunimi i gjuhës natyrore ose të mësuarit për përforcim.
Puna në projekte ju ndihmon të merrni përvojë reale dhe të përmirësoni aftësitë tuaja të trajnimit të rrjetit nervor.
Ju gjithashtu mund të bashkoheni në grupe dhe forume të mësimit të makinerive dhe rrjeteve nervore në internet për të bashkëvepruar me nxënës dhe profesionistë të tjerë, për të ndarë punën tuaj dhe për të marrë komente dhe ndihmë.
LSRS MONRAD-KROHN
⁶ĵDo të doja të shihja programin python për minimizimin e gabimeve. Nyjet e veçanta të përzgjedhjes për peshën ndryshojnë në shtresën tjetër