INHOUDSOPGAWE[Versteek][Wys]
In onlangse jare het neurale netwerke in gewildheid gegroei, aangesien dit getoon het dat hulle uiters goed is in 'n wye reeks take.
Daar is getoon dat dit 'n uitstekende keuse is vir beeld- en klankherkenning, natuurlike taalverwerking, en selfs om ingewikkelde speletjies soos Go en skaak te speel.
In hierdie pos sal ek jou deur die hele proses lei om 'n neurale netwerk op te lei. Ek sal al die stappe om 'n neurale netwerk op te lei noem en verduidelik.
Terwyl ek oor die stappe gaan, wil ek graag 'n eenvoudige voorbeeld byvoeg om seker te maak dat daar ook 'n praktiese voorbeeld is.
So, kom saam en kom ons leer hoe om neurale netwerke te verwerk
Kom ons begin eenvoudig en vra wat is neurale netwerke in die eerste plek.
Wat presies is neurale netwerke?
Neurale netwerke is rekenaarsagteware wat die werking van die menslike brein simuleer. Hulle kan leer uit groot volumes data en patrone raaksien wat mense moeilik kan vind om op te spoor.
Neurale netwerke het die afgelope paar jaar in gewildheid gegroei vanweë hul veelsydigheid in take soos beeld- en oudio-herkenning, natuurlike taalverwerking en voorspellende modellering.
Oor die algemeen is neurale netwerke 'n sterk hulpmiddel vir 'n wye reeks toepassings en het 'n kans om die manier waarop ons 'n wye reeks werksgeleenthede benader te transformeer.
Waarom moet ons van hulle weet?
Om neurale netwerke te verstaan is van kritieke belang omdat dit gelei het tot ontdekkings in 'n verskeidenheid velde, insluitend rekenaarvisie, spraakherkenning en natuurlike taalverwerking.
Neurale netwerke is byvoorbeeld die kern van onlangse ontwikkelings in selfbesturende motors, outomatiese vertaaldienste en selfs mediese diagnostiek.
Om te verstaan hoe neurale netwerke funksioneer en hoe om dit te ontwerp, help ons om nuwe en vindingryke toepassings te bou. En miskien kan dit in die toekoms tot nog groter ontdekkings lei.
'n Nota oor die handleiding
Soos ek hierbo gesê het, wil ek graag die stappe van die opleiding van 'n neurale netwerk verduidelik deur 'n voorbeeld te gee. Om dit te doen, moet ons praat oor die MNIST-datastel. Dit is 'n gewilde keuse vir beginners wat met neurale netwerke wil begin.
MNIST is 'n akroniem wat staan vir Modified National Institute of Standards and Technology. Dit is 'n handgeskrewe syferdatastel wat algemeen gebruik word vir opleiding en toetsing van masjienleermodelle, veral neurale netwerke.
Die versameling bevat 70,000 0 grysskaalfoto's van handgeskrewe syfers wat wissel van 9 tot XNUMX.
Die MNIST-datastel is 'n gewilde maatstaf vir beeld klassifikasie take. Dit word gereeld vir onderrig en leer gebruik, aangesien dit kompak en maklik is om mee te hanteer, terwyl dit tog 'n moeilike uitdaging bied vir masjienleeralgoritmes om te beantwoord.
Die MNIST-datastel word ondersteun deur verskeie masjienleerraamwerke en biblioteke, insluitend TensorFlow, Keras en PyTorch.
Nou weet ons van die MNIST-datastel, kom ons begin met ons stappe om 'n neurale netwerk op te lei.
Basiese stappe om 'n neurale netwerk op te lei
Voer nodige biblioteke in
Wanneer die eerste keer begin om 'n neurale netwerk op te lei, is dit van kritieke belang om die nodige gereedskap te hê om die model te ontwerp en op te lei. Die aanvanklike stap in die skep van 'n neurale netwerk is om vereiste biblioteke soos TensorFlow, Keras en NumPy in te voer.
Hierdie biblioteke dien as boustene vir die neurale netwerk se ontwikkeling en bied deurslaggewende vermoëns. Die kombinasie van hierdie biblioteke maak voorsiening vir die skepping van gesofistikeerde neurale netwerkontwerpe en vinnige opleiding.
Om ons voorbeeld te begin; ons sal die vereiste biblioteke invoer, wat TensorFlow, Keras en NumPy insluit. TensorFlow is 'n oopbron-masjienleerraamwerk, Keras is 'n hoëvlak neurale netwerk API, en NumPy is 'n numeriese rekenaar Python-biblioteek.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Laai die datastel
Die datastel moet nou gelaai word. Die datastel is die stel data waarop die neurale netwerk opgelei sal word. Dit kan enige tipe data wees, insluitend foto's, oudio en teks.
Dit is van kritieke belang om die datastel in twee dele te verdeel: een vir die opleiding van die neurale netwerk en 'n ander vir die beoordeling van die korrektheid van die opgeleide model. Verskeie biblioteke, insluitend TensorFlow, Keras en PyTorch, kan gebruik word om die datastel in te voer.
Vir ons voorbeeld gebruik ons ook Keras om die MNIST-datastel te laai. Daar is 60,000 10,000 opleidingsfoto's en XNUMX XNUMX toetsbeelde in die datastel.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Voorverwerk die data
Datavoorverwerking is 'n belangrike stadium in die opleiding van 'n neurale netwerk. Dit behels die voorbereiding en skoonmaak van die data voordat dit in die neurale netwerk ingevoer word.
Skaal van piekselwaardes, normalisering van data en omskakeling van etikette na een-warm enkodering is voorbeelde van voorverwerkingsprosedures. Hierdie prosesse help die neurale netwerk om meer effektief en presies te leer.
Voorverwerking van die data kan ook help om ooraanpassing te verminder en die neurale netwerk se werkverrigting te verbeter.
U moet die data vooraf verwerk voordat u die neurale netwerk oplei. Dit sluit in die verandering van die etikette na een-warm enkodering en die skaal van die pixelwaardes om tussen 0 en 1 te wees.
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)
Definieer die model
Die proses om die neurale netwerkmodel te definieer behels die vestiging van die argitektuur daarvan, soos die aantal lae, aantal neurone per laag, aktiveringsfunksies en netwerktipe (voorwaartse, herhalende of konvolusionele).
Die neurale netwerkontwerp wat jy gebruik, word bepaal deur die soort probleem wat jy probeer oplos. 'n Goed gedefinieerde neurale netwerkontwerp kan help met neurale netwerkleer deur dit meer doeltreffend en akkuraat te maak.
Dit is tyd om die neurale netwerkmodel op hierdie punt te beskryf. Gebruik 'n eenvoudige model met twee versteekte lae, elk met 128 neurone, en 'n softmax-uitsetlaag, wat 10 neurone het, vir hierdie voorbeeld.
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')
])
Stel die model saam
Die verliesfunksie, optimaliseerder en maatstawwe moet tydens die samestelling van die neurale netwerkmodel gespesifiseer word. Die neurale netwerk se vermoë om die uitset korrek te voorspel word deur die verliesfunksie gemeet.
Om die neurale netwerk se akkuraatheid tydens opleiding te verhoog, verander die optimizer sy gewigte. Die doeltreffendheid van die neurale netwerk tydens opleiding word met behulp van metrieke gemeet. Die model moet geskep word voordat die neurale netwerk opgelei kan word.
In ons voorbeeld moet ons nou die model bou.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Lei die model op
Om die voorbereide datastel deur die neurale netwerk te stuur terwyl die netwerk se gewigte verander word om die verliesfunksie te verminder, staan bekend as die opleiding van die neurale netwerk.
Die bekragtigingsdatastel word gebruik om die neurale netwerk tydens opleiding te toets om die doeltreffendheid daarvan op te spoor en oorpassing te voorkom. Die opleidingsproses kan 'n geruime tyd neem, daarom is dit belangrik om seker te maak dat die neurale netwerk toepaslik opgelei is om onderpassing te voorkom.
Deur die opleidingsdata te gebruik, kan ons nou die model oplei. Om dit te doen, moet ons die bondelgrootte definieer (die aantal monsters wat verwerk is voordat die model opgedateer word) en die aantal tydperke (die aantal herhalings oor die volledige datastel).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Evaluering van die model
Om die neurale netwerk se werkverrigting op die toetsdatastel te toets, is die proses om dit te evalueer. In hierdie stadium word die opgeleide neurale netwerk gebruik om die toetsdatastel te verwerk, en akkuraatheid word geëvalueer.
Hoe effektief 'n neurale netwerk die regte resultaat van splinternuwe, onbeproefde data kan voorspel, is 'n maatstaf van die akkuraatheid daarvan. Die ontleding van die model kan help om te bepaal hoe goed die neurale netwerk werk en ook maniere voorstel om dit nog beter te maak.
Ons kan uiteindelik die model se prestasie assesseer deur die toetsdata na opleiding te gebruik.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Dis al! Ons het 'n neurale netwerk opgelei om syfers in die MNIST-datastel op te spoor.
Van die voorbereiding van die data tot die beoordeling van die doeltreffendheid van die opgeleide model, die opleiding van 'n neurale netwerk behels verskeie prosesse. Hierdie instruksies help beginners met die doeltreffende bou en opleiding van neurale netwerke.
Beginners wat neurale netwerke wil gebruik om verskeie kwessies aan te pak, kan dit doen deur hierdie instruksies te volg.
Visualisering van die Voorbeeld
Kom ons probeer om te visualiseer wat ons met hierdie voorbeeld gedoen het om beter te verstaan.
Die Matplotlib-pakket word in hierdie kodebrokkie gebruik om 'n ewekansige keuse van foto's uit die opleidingdatastel te plot. Eerstens voer ons Matplotlib se “pyplot”-module in en alias dit as “plt”. Dan, met 'n totale afmeting van 10 by 10 duim, maak ons 'n figuur met 5 rye en 5 kolomme subplotte.
Dan gebruik ons 'n for-lus om oor die subplotte te herhaal, en vertoon 'n prentjie van die opleidingsdatastel op elkeen. Om die prentjie te vertoon, word die “imshow”-funksie gebruik, met die “cmap”-opsie op 'grys' gestel om die foto's in grysskaal te vertoon. Die titel van elke subintrige word ook op die etiket van die geassosieerde beeld in die versameling gestel.
Ten slotte gebruik ons die "wys" funksie om die geplotte prente in die figuur te vertoon. Hierdie funksie stel ons in staat om 'n voorbeeld van foto's uit die datastel visueel te evalueer, wat kan help met ons begrip van die data en die identifisering van enige moontlike bekommernisse.
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()
Belangrike neurale netwerkmodelle
- Feedforward Neurale Netwerke (FFNN): 'n Eenvoudige tipe neurale netwerk waarin inligting net op een manier beweeg, van die invoerlaag na die uitsetlaag via een of meer versteekte lae.
- Convolutional Neural Networks (CNN): 'n Neurale netwerk wat algemeen gebruik word in beeldopsporing en -verwerking. CNN's is bedoel om kenmerke van prente outomaties te herken en te onttrek.
- Herhalende neurale netwerke (RNN): 'n Neurale netwerk wat algemeen gebruik word in beeldopsporing en -verwerking. CNN's is bedoel om kenmerke van prente outomaties te herken en te onttrek.
- Lang korttermyn geheue (LSTM) netwerke: 'n Vorm van RNN wat geskep is om die kwessie van verdwynende gradiënte in standaard RNN's te oorkom. Langtermyn afhanklikhede in opeenvolgende data kan beter vasgelê word met LSTM's.
- Outo-enkodeerders: Neurale netwerk sonder toesig waarin die netwerk geleer word om sy insetdata by sy uitsetlaag weer te gee. Datakompressie, anomalie-opsporing en prentvertoning kan alles met outo-enkodeerders bewerkstellig word.
- Generative Adversarial Networks (GAN): 'n Generatiewe neurale netwerk is 'n vorm van neurale netwerk wat geleer word om nuwe data te produseer wat vergelykbaar is met 'n opleidingsdatastel. GAN's bestaan uit twee netwerke: 'n generatornetwerk wat vars data skep en 'n diskriminatornetwerk wat die kwaliteit van die geskepde data beoordeel.
Samevatting, wat moet jou volgende stappe wees?
Verken verskeie aanlynbronne en kursusse om meer te wete te kom oor die opleiding van 'n neurale netwerk. Werk aan projekte of voorbeelde is een metode om 'n beter begrip van neurale netwerke te kry.
Begin met maklike voorbeelde soos binêre klassifikasieprobleme of prentklassifikasietake, en gaan dan na moeiliker take soos natuurlike taalverwerking of versterkingsleer.
Om aan projekte te werk, help jou om werklike ervaring op te doen en jou neurale netwerk opleidingsvaardighede te verbeter.
Jy kan ook aansluit by aanlyn masjienleer en neurale netwerkgroepe en -forums om met ander leerders en professionele persone te kommunikeer, jou werk te deel en kommentaar en hulp te ontvang.
LSRS MONRAD-KROHN
⁶ĵ Sou graag die python-program vir die foutminimering wou sien. Spesiale seleksie nodusse vir gewig veranderinge na die volgende laag