Indholdsfortegnelse[Skjule][At vise]
I de senere år er neurale netværk vokset i popularitet, da de har vist sig at være ekstremt gode til en bred vifte af opgaver.
De har vist sig at være et godt valg til billed- og lydgenkendelse, naturlig sprogbehandling og endda at spille komplicerede spil som Go og skak.
I dette indlæg vil jeg lede dig gennem hele processen med at træne et neuralt netværk. Jeg vil nævne og forklare alle trinene til at træne et neuralt netværk.
Mens jeg vil gennemgå trinene, vil jeg gerne tilføje et simpelt eksempel for at sikre, at der også er et praktisk eksempel.
Så kom med, og lad os lære at behandle neurale netværk
Lad os starte enkelt og spørge, hvad det er neurale netværk i første omgang.
Hvad er neurale netværk præcist?
Neurale netværk er computersoftware, der simulerer den menneskelige hjernes funktion. De kan lære af store mængder data og spotmønstre, som folk kan have svært ved at opdage.
Neurale netværk er vokset i popularitet i de seneste år på grund af deres alsidighed i opgaver som billed- og lydgenkendelse, naturlig sprogbehandling og prædiktiv modellering.
Generelt er neurale netværk et stærkt værktøj til en bred vifte af applikationer og har en chance for at transformere den måde, vi nærmer os en bred vifte af jobs på.
Hvorfor skal vi vide om dem?
Forståelse af neurale netværk er afgørende, fordi de har ført til opdagelser på en række forskellige områder, herunder computersyn, talegenkendelse og naturlig sprogbehandling.
Neurale netværk er for eksempel kernen i den seneste udvikling inden for selvkørende biler, automatiske oversættelsestjenester og endda medicinsk diagnostik.
At forstå, hvordan neurale netværk fungerer, og hvordan man designer dem, hjælper os med at bygge nye og opfindsomme applikationer. Og måske kan det føre til endnu større opdagelser i fremtiden.
En note om selvstudiet
Som jeg sagde ovenfor, vil jeg gerne forklare trinene til at træne et neuralt netværk ved at give et eksempel. For at gøre dette bør vi tale om MNIST-datasættet. Det er et populært valg for begyndere, der ønsker at komme i gang med neurale netværk.
MNIST er et akronym, der står for Modified National Institute of Standards and Technology. Det er et håndskrevet cifferdatasæt, der almindeligvis bruges til træning og test af maskinlæringsmodeller, især neurale netværk.
Samlingen indeholder 70,000 gråtonebilleder af håndskrevne tal fra 0 til 9.
MNIST-datasættet er et populært benchmark for billedklassificering opgaver. Det bruges ofte til undervisning og læring, da det er kompakt og nemt at håndtere, samtidig med at det udgør en vanskelig udfordring for maskinlæringsalgoritmer at besvare.
MNIST-datasættet understøttes af flere maskinlæringsrammer og biblioteker, herunder TensorFlow, Keras og PyTorch.
Nu ved vi om MNIST-datasættet, lad os komme i gang med vores trin til at træne et neuralt netværk.
Grundlæggende trin til at træne et neuralt netværk
Importer nødvendige biblioteker
Når man først begynder at træne et neuralt netværk, er det afgørende at have de nødvendige værktøjer til at designe og træne modellen. Det første trin i at skabe et neuralt netværk er at importere nødvendige biblioteker såsom TensorFlow, Keras og NumPy.
Disse biblioteker tjener som byggesten til det neurale netværks udvikling og giver afgørende muligheder. Kombinationen af disse biblioteker giver mulighed for at skabe sofistikerede neurale netværksdesign og hurtig træning.
For at begynde vores eksempel; vi importerer de nødvendige biblioteker, som inkluderer TensorFlow, Keras og NumPy. TensorFlow er en open source-maskinelæringsramme, Keras er et neuralt netværks-API på højt niveau, og NumPy er et numerisk databehandlings-Python-bibliotek.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Indlæs datasættet
Datasættet skal nu indlæses. Datasættet er det sæt af data, som det neurale netværk vil blive trænet på. Dette kan være enhver type data, herunder fotos, lyd og tekst.
Det er afgørende at opdele datasættet i to dele: en til træning af det neurale netværk og en anden til at vurdere rigtigheden af den trænede model. Adskillige biblioteker, inklusive TensorFlow, Keras og PyTorch, kan bruges til at importere datasættet.
For vores eksempel bruger vi også Keras til at indlæse MNIST-datasættet. Der er 60,000 træningsbilleder og 10,000 testbilleder i datasættet.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Forbehandle dataene
Dataforbehandling er et vigtigt trin i træningen af et neuralt netværk. Det indebærer forberedelse og rensning af data, før de føres ind i det neurale netværk.
Skalering af pixelværdier, normalisering af data og konvertering af etiketter til one-hot-kodning er eksempler på forbehandlingsprocedurer. Disse processer hjælper det neurale netværk med at lære mere effektivt og præcist.
Forbehandling af dataene kan også hjælpe med at minimere overtilpasning og forbedre det neurale netværks ydeevne.
Du skal forbehandle dataene, før du træner det neurale netværk. Dette omfatter ændring af etiketterne til one-hot-kodning og skalering af pixelværdierne til at være mellem 0 og 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)
Definer modellen
Processen med at definere den neurale netværksmodel involverer etablering af dens arkitektur, såsom antallet af lag, antal neuroner pr. lag, aktiveringsfunktioner og netværkstype (feedforward, recurrent eller convolutional).
Det neurale netværksdesign, du bruger, bestemmes af den type problem, du forsøger at løse. Et veldefineret neuralt netværksdesign kan hjælpe med neurale netværkslæring ved at gøre det mere effektivt og præcist.
Det er tid til at beskrive den neurale netværksmodel på dette tidspunkt. Brug en simpel model med to skjulte lag, hver med 128 neuroner, og et softmax outputlag, som har 10 neuroner, til dette eksempel.
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')
])
Kompiler modellen
Tabsfunktionen, optimeringsværktøjet og metrikken skal specificeres under kompileringen af den neurale netværksmodel. Det neurale netværks evne til korrekt at forudsige outputtet måles af tabsfunktionen.
For at øge det neurale netværks nøjagtighed under træning, modificerer optimizeren sine vægte. Effektiviteten af det neurale netværk under træning måles ved hjælp af metrikker. Modellen skal oprettes, før det neurale netværk kan trænes.
I vores eksempel skal vi nu lige nu konstruere modellen.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Træn modellen
At føre det forberedte datasæt gennem det neurale netværk, mens netværkets vægte modificeres for at minimere tabsfunktionen, er kendt som træning af det neurale netværk.
Valideringsdatasættet bruges til at teste det neurale netværk under træning for at spore dets effektivitet og forhindre overtilpasning. Træningsprocessen kan tage noget tid, så det er vigtigt at sikre, at det neurale netværk er korrekt trænet for at forhindre undertilpasning.
Ved hjælp af træningsdataene kan vi nu træne modellen. For at gøre dette skal vi definere batchstørrelsen (antallet af prøver behandlet før modellen opdateres) og antallet af epoker (antallet af gentagelser på tværs af det komplette datasæt).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Evaluering af modellen
Test af det neurale netværks ydeevne på testdatasættet er processen med at evaluere det. I denne fase bruges det trænede neurale netværk til at behandle testdatasættet, og nøjagtigheden evalueres.
Hvor effektivt et neuralt netværk kan forudsige det rigtige resultat fra helt nye, uprøvede data, er et mål for dets nøjagtighed. At analysere modellen kan hjælpe med at bestemme, hvor godt det neurale netværk fungerer, og også foreslå måder at gøre det endnu bedre.
Vi kan endelig vurdere modellens præstation ved hjælp af testdata efter træning.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Det er alt! Vi trænede et neuralt netværk til at detektere cifre i MNIST-datasættet.
Fra forberedelse af data til vurdering af effektiviteten af den trænede model involverer træning af et neuralt netværk flere processer. Disse instruktioner hjælper nybegyndere med effektivt at opbygge og træne neurale netværk.
Begyndere, der ønsker at bruge neurale netværk til at tackle forskellige problemer, kan gøre det ved at følge disse instruktioner.
Visualisering af eksemplet
Lad os prøve at visualisere, hvad vi har gjort med dette eksempel for bedre at forstå.
Matplotlib-pakken bruges i dette kodestykke til at plotte et tilfældigt udvalg af fotos fra træningsdatasættet. Først importerer vi Matplotlibs "pyplot"-modul og kalder det "plt". Derefter, med en samlet dimension på 10 gange 10 tommer, laver vi en figur med 5 rækker og 5 søjler med subplot.
Derefter bruger vi en for-løkke til at iterere over underplottene og vise et billede fra træningsdatasættet på hver enkelt. For at vise billedet bruges "imshow"-funktionen, med "cmap"-indstillingen sat til 'grå' for at vise billederne i gråtoner. Titlen på hvert underplot er også sat til etiketten for det tilknyttede billede i samlingen.
Til sidst bruger vi "vis"-funktionen til at vise de plottede billeder i figuren. Denne funktion giver os mulighed for visuelt at evaluere et udsnit af fotos fra datasættet, hvilket kan hjælpe med vores forståelse af dataene og identifikation af eventuelle bekymringer.
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()
Vigtige neurale netværksmodeller
- Feedforward Neural Networks (FFNN): En simpel type neuralt netværk, hvor information kun bevæger sig på én måde, fra inputlaget til outputlaget via et eller flere skjulte lag.
- Convolutional Neural Networks (CNN): Et neuralt netværk, der almindeligvis bruges til billeddetektering og -behandling. CNN'er er beregnet til at genkende og udtrække funktioner fra billeder automatisk.
- Tilbagevendende neurale netværk (RNN): Et neuralt netværk, der almindeligvis bruges til billeddetektering og -behandling. CNN'er er beregnet til at genkende og udtrække funktioner fra billeder automatisk.
- Langtidshukommelsesnetværk (LSTM): En form for RNN skabt for at overvinde problemet med forsvindende gradienter i standard RNN'er. Langsigtede afhængigheder i sekventielle data kan bedre fanges med LSTM'er.
- Autoencodere: Uovervåget læringsneuralt netværk, hvor netværket læres at reproducere dets inputdata på dets outputlag. Datakomprimering, anomalidetektion og billedforbrænding kan alle udføres med autoencodere.
- Generative Adversarial Networks (GAN): Et generativt neuralt netværk er en form for neuralt netværk, der læres at producere nye data, der kan sammenlignes med et træningsdatasæt. GAN'er består af to netværk: et generatornetværk, der skaber friske data, og et diskriminatornetværk, der vurderer kvaliteten af de oprettede data.
Afslutning, hvad skal dine næste skridt være?
Udforsk flere onlineressourcer og kurser for at lære mere om træning af et neuralt netværk. At arbejde på projekter eller eksempler er en metode til at få et bedre greb om neurale netværk.
Start med nemme eksempler som binære klassifikationsproblemer eller billedklassificeringsopgaver, og gå derefter til mere vanskelige opgaver som naturlig sprogbehandling eller forstærkning læring.
At arbejde på projekter hjælper dig med at opnå reel erfaring og forbedre dine neurale netværkstræningsfærdigheder.
Du kan også deltage i online maskinlærings- og neurale netværksgrupper og -fora for at interagere med andre elever og fagfolk, dele dit arbejde og modtage kommentarer og hjælp.
LSRS MONRAD-KROHN
⁶ĵVille gerne have set python-programmet til fejlminimering. Særlige udvalgsknuder til vægtændringer til næste lag