Innehållsförteckning[Dölj][Visa]
De senaste åren har neurala nätverk vuxit i popularitet eftersom de har visat sig vara extremt bra på ett brett spektrum av uppgifter.
De har visat sig vara ett utmärkt val för bild- och ljudigenkänning, naturlig språkbehandling och till och med att spela komplicerade spel som Go och schack.
I det här inlägget kommer jag att leda dig genom hela processen med att träna ett neuralt nätverk. Jag kommer att nämna och förklara alla steg för att träna ett neuralt nätverk.
Medan jag kommer att gå igenom stegen skulle jag vilja lägga till ett enkelt exempel för att se till att det också finns ett praktiskt exempel.
Så kom och låt oss lära oss hur man bearbetar neurala nätverk
Låt oss börja enkelt och fråga vad det är neurala nätverk för det första.
Exakt vad är neurala nätverk?
Neurala nätverk är datorprogram som simulerar den mänskliga hjärnans funktion. De kan lära sig av stora mängder data och spotmönster som människor kan ha svårt att upptäcka.
Neurala nätverk har vuxit i popularitet de senaste åren på grund av deras mångsidighet i uppgifter som bild- och ljudigenkänning, naturlig språkbehandling och prediktiv modellering.
Sammantaget är neurala nätverk ett starkt verktyg för ett brett spektrum av applikationer och har en chans att förändra hur vi närmar oss ett brett spektrum av jobb.
Varför bör vi veta om dem?
Att förstå neurala nätverk är avgörande eftersom de har lett till upptäckter inom en mängd olika områden, inklusive datorseende, taligenkänning och naturlig språkbehandling.
Neurala nätverk är till exempel kärnan i den senaste utvecklingen inom självkörande bilar, automatiska översättningstjänster och till och med medicinsk diagnostik.
Att förstå hur neurala nätverk fungerar och hur man designar dem hjälper oss att bygga nya och uppfinningsrika applikationer. Och kanske kan det leda till ännu större upptäckter i framtiden.
En anteckning om handledningen
Som jag sa ovan skulle jag vilja förklara stegen för att träna ett neuralt nätverk genom att ge ett exempel. För att göra detta bör vi prata om MNIST-datauppsättningen. Det är ett populärt val för nybörjare som vill komma igång med neurala nätverk.
MNIST är en akronym som står för Modified National Institute of Standards and Technology. Det är en handskriven sifferdatauppsättning som vanligtvis används för att träna och testa maskininlärningsmodeller, särskilt neurala nätverk.
Samlingen innehåller 70,000 0 gråskalefoton med handskrivna siffror från 9 till XNUMX.
MNIST-datauppsättningen är ett populärt riktmärke för bildklassificering uppgifter. Det används ofta för undervisning och lärande eftersom det är kompakt och lätt att hantera samtidigt som det utgör en svår utmaning för maskininlärningsalgoritmer att svara på.
MNIST-datauppsättningen stöds av flera ramverk och bibliotek för maskininlärning, inklusive TensorFlow, Keras och PyTorch.
Nu vet vi om MNIST-datauppsättningen, låt oss komma igång med våra steg för att träna ett neuralt nätverk.
Grundläggande steg för att träna ett neuralt nätverk
Importera nödvändiga bibliotek
När du först börjar träna ett neuralt nätverk är det viktigt att ha de nödvändiga verktygen för att designa och träna modellen. Det första steget för att skapa ett neuralt nätverk är att importera nödvändiga bibliotek som TensorFlow, Keras och NumPy.
Dessa bibliotek fungerar som byggstenar för det neurala nätverkets utveckling och ger avgörande kapacitet. Kombinationen av dessa bibliotek möjliggör skapandet av sofistikerade neurala nätverksdesigner och snabb träning.
För att börja vårt exempel; vi kommer att importera de nödvändiga biblioteken, som inkluderar TensorFlow, Keras och NumPy. TensorFlow är ett ramverk för maskininlärning med öppen källkod, Keras är ett högnivå-API för neuralt nätverk och NumPy är ett numeriskt Python-bibliotek.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Ladda datamängden
Datauppsättningen måste nu laddas. Datauppsättningen är den uppsättning data som det neurala nätverket kommer att tränas på. Detta kan vara vilken typ av data som helst, inklusive foton, ljud och text.
Det är viktigt att dela upp datasetet i två delar: en för att träna det neurala nätverket och en annan för att bedöma riktigheten av den tränade modellen. Flera bibliotek, inklusive TensorFlow, Keras och PyTorch, kan användas för att importera datamängden.
För vårt exempel använder vi även Keras för att ladda MNIST-datauppsättningen. Det finns 60,000 10,000 träningsbilder och XNUMX XNUMX testbilder i datasetet.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Förbearbeta data
Dataförbehandling är ett viktigt steg i träningen av ett neuralt nätverk. Det innebär att förbereda och rengöra data innan den matas in i det neurala nätverket.
Skalning av pixelvärden, normalisering av data och konvertering av etiketter till one-hot-kodning är exempel på förbearbetningsprocedurer. Dessa processer hjälper det neurala nätverket att lära sig mer effektivt och exakt.
Förbearbetning av data kan också hjälpa till att minimera överanpassning och förbättra det neurala nätverkets prestanda.
Du måste förbehandla data innan du tränar det neurala nätverket. Detta inkluderar att ändra etiketterna till one-hot-kodning och skala pixelvärdena till mellan 0 och 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)
Definiera modellen
Processen att definiera den neurala nätverksmodellen involverar fastställande av dess arkitektur, såsom antalet lager, antal neuroner per lager, aktiveringsfunktioner och nätverkstyp (feedforward, recurrent eller convolutional).
Den neurala nätverksdesignen du använder bestäms av vilken typ av problem du försöker lösa. En väldefinierad neurala nätverksdesign kan hjälpa till med neurala nätverksinlärning genom att göra det mer effektivt och exakt.
Det är dags att beskriva den neurala nätverksmodellen nu. Använd en enkel modell med två dolda lager, vardera med 128 neuroner, och ett softmax-utgångsskikt, som har 10 neuroner, för det här exemplet.
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')
])
Kompilera modellen
Förlustfunktionen, optimeraren och mätvärdena måste specificeras under kompileringen av den neurala nätverksmodellen. Det neurala nätverkets förmåga att korrekt prognostisera uteffekten mäts av förlustfunktionen.
För att öka det neurala nätverkets noggrannhet under träning, modifierar optimeraren sina vikter. Effektiviteten av det neurala nätverket under träning mäts med hjälp av mått. Modellen måste skapas innan det neurala nätverket kan tränas.
I vårt exempel måste vi nu just nu konstruera modellen.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Träna modellen
Att skicka det förberedda datasetet genom det neurala nätverket samtidigt som nätverkets vikter modifieras för att minimera förlustfunktionen kallas att träna det neurala nätverket.
Valideringsdataset används för att testa det neurala nätverket under träning för att spåra dess effektivitet och förhindra överanpassning. Träningsprocessen kan ta lite tid, därför är det viktigt att se till att det neurala nätverket är lämpligt utbildat för att förhindra underanpassning.
Med hjälp av träningsdata kan vi nu träna modellen. För att göra detta måste vi definiera satsstorleken (antalet prover som bearbetats innan modellen uppdateras) och antalet epoker (antalet repetitioner över hela datasetet).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Utvärdering av modellen
Att testa det neurala nätverkets prestanda på testdatauppsättningen är processen att utvärdera det. I detta skede används det tränade neurala nätverket för att bearbeta testdatauppsättningen och noggrannheten utvärderas.
Hur effektivt ett neuralt nätverk kan förutsäga rätt resultat från helt ny, oprövad data är ett mått på dess noggrannhet. Att analysera modellen kan hjälpa till att avgöra hur väl det neurala nätverket fungerar och även föreslå sätt att göra det ännu bättre.
Vi kan äntligen bedöma modellens prestanda med hjälp av testdata efter träning.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Det är allt! Vi tränade ett neuralt nätverk för att upptäcka siffror i MNIST-datauppsättningen.
Från att förbereda data till att bedöma effektiviteten av den tränade modellen, utbildning av ett neuralt nätverk involverar flera processer. Dessa instruktioner hjälper nybörjare att effektivt bygga och träna neurala nätverk.
Nybörjare som vill använda neurala nätverk för att ta itu med olika problem kan göra det genom att följa dessa instruktioner.
Visualisera exemplet
Låt oss försöka visualisera vad vi har gjort med det här exemplet för att förstå bättre.
Matplotlib-paketet används i detta kodavsnitt för att plotta ett slumpmässigt urval av foton från träningsdatauppsättningen. Först importerar vi Matplotlibs "pyplot"-modul och kallar den "plt". Sedan, med en total dimension på 10 gånger 10 tum, gör vi en figur med 5 rader och 5 kolumner med subplots.
Sedan använder vi en for-loop för att iterera över delplotterna och visar en bild från träningsdatauppsättningen på var och en. För att visa bilden används "imshow"-funktionen, med alternativet "cmap" inställt på "grå" för att visa bilderna i gråskala. Rubriken på varje delplot är också inställd på etiketten för den associerade bilden i samlingen.
Slutligen använder vi "visa"-funktionen för att visa de plottade bilderna i figuren. Med den här funktionen kan vi visuellt utvärdera ett urval av foton från datamängden, vilket kan hjälpa oss att förstå data och identifiera eventuella problem.
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()
Viktiga neurala nätverksmodeller
- Feedforward Neural Networks (FFNN): En enkel typ av neuralt nätverk där information endast färdas på ett sätt, från ingångsskiktet till utgångsskiktet via ett eller flera dolda skikt.
- Convolutional Neural Networks (CNN): Ett neuralt nätverk som ofta används vid bilddetektering och bildbehandling. CNN är avsedda att känna igen och extrahera funktioner från bilder automatiskt.
- Återkommande neurala nätverk (RNN): Ett neuralt nätverk som ofta används vid bilddetektering och bildbehandling. CNN är avsedda att känna igen och extrahera funktioner från bilder automatiskt.
- Långt korttidsminne (LSTM) nätverk: En form av RNN skapad för att övervinna problemet med att försvinna gradienter i standard RNN. Långsiktiga beroenden i sekventiella data kan fångas bättre med LSTM.
- Autokodare: Neuralt nätverk för oövervakat inlärning där nätverket lärs reproducera dess indata vid dess utgångsskikt. Datakomprimering, avvikelsedetektering och bildnedsättning kan alla utföras med autokodare.
- Generative Adversarial Networks (GAN): Ett generativt neuralt nätverk är en form av neuralt nätverk som lärs ut att producera ny data som är jämförbar med en träningsdatauppsättning. GAN:er består av två nätverk: ett generatornätverk som skapar färsk data och ett diskriminatornätverk som bedömer kvaliteten på den skapade datan.
Sammanfattning, vad bör dina nästa steg vara?
Utforska flera onlineresurser och kurser för att lära dig mer om att träna ett neuralt nätverk. Att arbeta med projekt eller exempel är en metod för att få ett bättre grepp om neurala nätverk.
Börja med enkla exempel som binära klassificeringsproblem eller bildklassificeringsuppgifter, och gå sedan till svårare uppgifter som naturlig språkbehandling eller förstärkning lärande.
Att arbeta med projekt hjälper dig att skaffa verklig erfarenhet och förbättra dina färdigheter i neurala nätverksträning.
Du kan också gå med i maskininlärnings- och neurala nätverksgrupper och forum online för att interagera med andra elever och yrkesverksamma, dela ditt arbete och få kommentarer och hjälp.
LSRS MONRAD-KROHN
⁶ĵSkulle ha velat se pythonprogrammet för felminimering. Särskilda urvalsnoder för viktändringar till nästa lager