Talaan ng nilalaman[Tago][Ipakita]
Sa mga nakalipas na taon, ang mga neural network ay lumaki sa katanyagan dahil sila ay nagpakitang napakahusay sa isang malawak na hanay ng mga gawain.
Ipinakita na ang mga ito ay isang mahusay na pagpipilian para sa pagkilala sa imahe at audio, natural na pagpoproseso ng wika, at maging sa paglalaro ng mga kumplikadong laro tulad ng Go at chess.
Sa post na ito, ituturo ko sa iyo ang buong proseso ng pagsasanay ng isang neural network. Babanggitin at ipapaliwanag ko ang lahat ng mga hakbang upang sanayin ang isang neural network.
Habang pupunta ako sa mga hakbang, nais kong magdagdag ng isang simpleng halimbawa upang matiyak na mayroon ding praktikal na halimbawa.
Kaya, sumama, at alamin natin kung paano magproseso ng mga neural network
Magsimula tayo sa simple at itanong kung ano neural network sa unang lugar.
Ano nga ba ang mga Neural Network?
Ang mga neural network ay computer software na ginagaya ang operasyon ng utak ng tao. Maaari silang matuto mula sa napakaraming data at mga pattern ng spot na maaaring mahirap matukoy ng mga tao.
Ang mga neural network ay sumikat sa mga nakalipas na taon dahil sa kanilang versatility sa mga gawain tulad ng pagkilala sa larawan at audio, natural na pagproseso ng wika, at predictive modeling.
Sa pangkalahatan, ang mga neural network ay isang malakas na tool para sa malawak na hanay ng mga aplikasyon at may pagkakataong baguhin ang paraan ng paglapit namin sa malawak na hanay ng mga trabaho.
Bakit Dapat Natin Malaman ang Tungkol sa Kanila?
Ang pag-unawa sa mga neural network ay kritikal dahil ang mga ito ay humantong sa mga pagtuklas sa iba't ibang larangan, kabilang ang computer vision, speech recognition, at natural na pagproseso ng wika.
Ang mga neural network, halimbawa, ay nasa puso ng mga kamakailang pag-unlad sa mga self-driving na kotse, mga awtomatikong serbisyo sa pagsasalin, at kahit na mga medikal na diagnostic.
Ang pag-unawa sa kung paano gumagana ang mga neural network at kung paano idisenyo ang mga ito ay nakakatulong sa amin na bumuo ng mga bago at mapag-imbentong aplikasyon. At, marahil, maaari itong humantong sa mas malalaking pagtuklas sa hinaharap.
Isang Paalala Tungkol sa Tutorial
Tulad ng sinabi ko sa itaas, nais kong ipaliwanag ang mga hakbang ng pagsasanay ng isang neural network sa pamamagitan ng pagbibigay ng isang halimbawa. Para magawa ito, dapat nating pag-usapan ang tungkol sa dataset ng MNIST. Ito ay isang popular na pagpipilian para sa mga nagsisimula na gustong magsimula sa mga neural network.
Ang MNIST ay isang acronym na nangangahulugang Modified National Institute of Standards and Technology. Ito ay isang sulat-kamay na digit na dataset na karaniwang ginagamit para sa pagsasanay at pagsubok ng mga modelo ng machine learning, lalo na ang mga neural network.
Naglalaman ang koleksyon ng 70,000 grayscale na larawan ng mga sulat-kamay na numero mula 0 hanggang 9.
Ang MNIST dataset ay isang sikat na benchmark para sa pag-uuri ng imahe mga gawain. Ito ay madalas na ginagamit para sa pagtuturo at pag-aaral dahil ito ay compact at madaling harapin habang nagbibigay pa ng isang mahirap na hamon para sa machine learning algorithm upang sagutin.
Ang MNIST dataset ay sinusuportahan ng ilang machine learning frameworks at library, kabilang ang TensorFlow, Keras, at PyTorch.
Ngayon alam na natin ang tungkol sa dataset ng MNIST, magsimula tayo sa ating mga hakbang sa pagsasanay ng neural network.
Mga Pangunahing Hakbang sa Pagsasanay ng Neural Network
Mag-import ng Mga Kinakailangang Aklatan
Sa unang pagsisimula sa pagsasanay ng isang neural network, napakahalaga na magkaroon ng mga kinakailangang tool upang magdisenyo at magsanay ng modelo. Ang unang hakbang sa paggawa ng neural network ay ang pag-import ng mga kinakailangang library gaya ng TensorFlow, Keras, at NumPy.
Ang mga aklatan na ito ay nagsisilbing mga bloke ng gusali para sa pagbuo ng neural network at nagbibigay ng mahahalagang kakayahan. Ang kumbinasyon ng mga aklatang ito ay nagbibigay-daan para sa paglikha ng mga sopistikadong disenyo ng neural network at mabilis na pagsasanay.
Upang simulan ang ating halimbawa; ii-import namin ang mga kinakailangang aklatan, na kinabibilangan ng TensorFlow, Keras, at NumPy. TensorFlow ay isang open-source machine learning framework, ang Keras ay isang high-level na neural network API, at ang NumPy ay isang numerical computing Python library.
import tensorflow as tf
from tensorflow import keras
import numpy as np
I-load ang Dataset
Ang dataset ay dapat na ngayong ma-load. Ang dataset ay ang set ng data kung saan sasanayin ang neural network. Ito ay maaaring anumang uri ng data, kabilang ang mga larawan, audio, at teksto.
Mahalagang hatiin ang dataset sa dalawang bahagi: isa para sa pagsasanay sa neural network at isa pa para sa pagtatasa ng kawastuhan ng sinanay na modelo. Maraming library, kabilang ang TensorFlow, Keras, at PyTorch, ay maaaring gamitin upang i-import ang dataset.
Para sa aming halimbawa, ginagamit din namin ang Keras para i-load ang dataset ng MNIST. Mayroong 60,000 mga larawan sa pagsasanay at 10,000 mga larawang pansubok sa dataset.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Preprocess Ang Data
Ang preprocessing ng data ay isang mahalagang yugto sa pagsasanay ng isang neural network. Ito ay nangangailangan ng paghahanda at paglilinis ng data bago ito i-feed sa neural network.
Ang pag-scale ng mga value ng pixel, pag-normalize ng data, at pag-convert ng mga label sa one-hot encoding ay mga halimbawa ng mga preprocessing procedure. Ang mga prosesong ito ay tumutulong sa neural network sa pag-aaral nang mas epektibo at tumpak.
Ang preprocessing ng data ay maaari ding makatulong upang mabawasan ang overfitting at mapabuti ang performance ng neural network.
Dapat mong paunang iproseso ang data bago sanayin ang neural network. Kabilang dito ang pagpapalit ng mga label sa one-hot encoding at pag-scale ng mga pixel value na nasa pagitan ng 0 at 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)
Tukuyin ang Modelo
Ang proseso ng pagtukoy sa modelo ng neural network ay nagsasangkot ng pagtatatag ng arkitektura nito, tulad ng bilang ng mga layer, bilang ng mga neuron sa bawat layer, activation function, at uri ng network (feedforward, recurrent, o convolutional).
Ang disenyo ng neural network na iyong ginagamit ay tinutukoy ng uri ng problemang sinusubukan mong lutasin. Ang isang mahusay na tinukoy na disenyo ng neural network ay maaaring makatulong sa pag-aaral ng neural network sa pamamagitan ng paggawa nito na mas mahusay at tumpak.
Panahon na upang ilarawan ang modelo ng neural network sa puntong ito. Gumamit ng isang simpleng modelo na may dalawang nakatagong layer, bawat isa ay may 128 neuron, at isang softmax output layer, na mayroong 10 neuron, para sa halimbawang ito.
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')
])
I-compile ang Modelo
Dapat na tukuyin ang function ng pagkawala, optimizer, at mga sukatan sa panahon ng pagsasama-sama ng modelo ng neural network. Ang kakayahan ng neural network na wastong hulaan ang output ay sinusukat ng loss function.
Upang mapataas ang katumpakan ng neural network sa panahon ng pagsasanay, binabago ng optimizer ang mga timbang nito. Ang pagiging epektibo ng neural network sa panahon ng pagsasanay ay sinusukat gamit ang mga sukatan. Dapat gawin ang modelo bago masanay ang neural network.
Sa aming halimbawa, kailangan na nating bumuo ngayon ng modelo.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Sanayin ang Modelo
Ang pagpasa sa inihandang dataset sa pamamagitan ng neural network habang binabago ang mga timbang ng network upang mabawasan ang pagkawala ng function ay kilala bilang pagsasanay sa neural network.
Ang validation dataset ay ginagamit upang subukan ang neural network sa panahon ng pagsasanay upang subaybayan ang pagiging epektibo nito at maiwasan ang overfitting. Maaaring magtagal ang proseso ng pagsasanay, kaya mahalagang tiyakin na ang neural network ay angkop na sinanay upang maiwasan ang underfitting.
Gamit ang data ng pagsasanay, maaari na nating sanayin ang modelo. Para magawa ito, dapat nating tukuyin ang laki ng batch (ang bilang ng mga sample na naproseso bago ma-update ang modelo) at ang bilang ng mga panahon (ang bilang ng mga pag-uulit sa kumpletong dataset).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Pagsusuri sa Modelo
Ang pagsubok sa performance ng neural network sa test dataset ay ang proseso ng pagsusuri nito. Sa yugtong ito, ginagamit ang sinanay na neural network upang iproseso ang dataset ng pagsubok, at sinusuri ang katumpakan.
Kung gaano kabisa ang isang neural network na mahulaan ang tamang resulta mula sa bago at hindi pa nasusubukang data ay isang sukatan ng katumpakan nito. Ang pagsusuri sa modelo ay maaaring makatulong na matukoy kung gaano kahusay gumagana ang neural network at magmungkahi din ng mga paraan upang pagandahin pa ito.
Sa wakas ay masusuri natin ang pagganap ng modelo gamit ang data ng pagsubok pagkatapos ng pagsasanay.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Iyon lang! Nagsanay kami ng isang neural network para mag-detect ng mga digit sa dataset ng MNIST.
Mula sa paghahanda ng data hanggang sa pagtatasa ng pagiging epektibo ng sinanay na modelo, ang pagsasanay sa isang neural network ay nagsasangkot ng ilang proseso. Ang mga tagubiling ito ay tumutulong sa mga baguhan sa mahusay na pagbuo at pagsasanay ng mga neural network.
Magagawa ito ng mga baguhan na gustong gumamit ng mga neural network upang harapin ang iba't ibang isyu sa pamamagitan ng pagsunod sa mga tagubiling ito.
Pagsasalarawan sa Halimbawa
Subukan nating isalarawan kung ano ang ginawa natin sa halimbawang ito upang mas maunawaan.
Ang Matplotlib package ay ginagamit sa code snippet na ito para mag-plot ng random na seleksyon ng mga larawan mula sa training dataset. Una, ini-import namin ang module ng "pyplot" ng Matplotlib at i-alyas ito bilang "plt". Pagkatapos, na may kabuuang sukat na 10 by 10 inches, gumawa kami ng figure na may 5 row at 5 column ng subplots.
Pagkatapos, gumagamit kami ng for loop para umulit sa mga subplot, na nagpapakita ng larawan mula sa dataset ng pagsasanay sa bawat isa. Upang ipakita ang larawan, ang "imshow" na function ay ginagamit, na ang "cmap" na opsyon ay nakatakda sa 'grey' upang ipakita ang mga larawan sa grayscale. Ang pamagat ng bawat subplot ay nakatakda din sa label ng nauugnay na larawan sa koleksyon.
Sa wakas, ginagamit namin ang function na "ipakita" upang ipakita ang mga naka-plot na larawan sa figure. Binibigyang-daan kami ng function na ito na biswal na suriin ang isang sample ng mga larawan mula sa dataset, na maaaring makatulong sa aming pag-unawa sa data at pagtukoy sa anumang posibleng alalahanin.
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()
Mahahalagang Neural Network Models
- Feedforward Neural Network (FFNN): Isang simpleng uri ng neural network kung saan ang impormasyon ay naglalakbay lamang sa isang paraan, mula sa input layer hanggang sa output layer sa pamamagitan ng isa o higit pang mga nakatagong layer.
- Convolutional Neural Networks (CNN): Isang neural network na karaniwang ginagamit sa pagtuklas at pagproseso ng imahe. Ang mga CNN ay nilayon na kilalanin at kunin ang mga tampok mula sa mga larawan nang awtomatiko.
- Mga Recurrent Neural Network (RNN): Isang neural network na karaniwang ginagamit sa pagtuklas at pagproseso ng imahe. Ang mga CNN ay nilayon na kilalanin at kunin ang mga tampok mula sa mga larawan nang awtomatiko.
- Mga Network ng Long Short-Term Memory (LSTM): Isang anyo ng RNN na ginawa upang mapaglabanan ang isyu ng pagkawala ng mga gradient sa mga karaniwang RNN. Ang mga pangmatagalang dependency sa sequential data ay maaaring mas mahusay na makuha sa mga LSTM.
- Autoencoders: Unsupervised learning neural network kung saan tinuturuan ang network na kopyahin ang input data nito sa output layer nito. Ang compression ng data, pagtuklas ng anomalya, at pagtanggal ng larawan ay maaaring magawa sa mga autoencoder.
- Mga Generative Adversarial Network (GAN): Ang generative neural network ay isang anyo ng neural network na itinuro upang makagawa ng bagong data na maihahambing sa isang dataset ng pagsasanay. Ang mga GAN ay binubuo ng dalawang network: isang generator network na lumilikha ng bagong data at isang discriminator network na nagtatasa sa kalidad ng ginawang data.
Wrap-Up, Ano ang Dapat Mong Mga Susunod na Hakbang?
Mag-explore ng ilang online na mapagkukunan at kurso para matuto pa tungkol sa pagsasanay ng neural network. Ang pagtatrabaho sa mga proyekto o mga halimbawa ay isang paraan upang mas maunawaan ang mga neural network.
Magsimula sa mga madaling halimbawa tulad ng mga problema sa binary classification o mga gawain sa pag-uuri ng larawan, at pagkatapos ay pumunta sa mas mahihirap na gawain tulad ng natural na pagproseso ng wika o reinforcement learning.
Ang pagtatrabaho sa mga proyekto ay tumutulong sa iyo na makakuha ng tunay na karanasan at pagbutihin ang iyong mga kasanayan sa pagsasanay sa neural network.
Maaari ka ring sumali sa online machine learning at mga grupo at forum ng neural network para makipag-ugnayan sa ibang mga mag-aaral at propesyonal, ibahagi ang iyong trabaho, at makatanggap ng mga komento at tulong.
LSRS MONRAD-KROHN
⁶ĵGustong makita ang python program para sa pagliit ng error. Mga espesyal na node sa pagpili para sa mga pagbabago sa timbang sa susunod na layer