სარჩევი[დამალვა][ჩვენება]
ბოლო წლების განმავლობაში, ნერვული ქსელები გაიზარდა პოპულარობით, რადგან ისინი აჩვენეს, რომ ისინი ძალიან კარგად მუშაობენ ამოცანების ფართო სპექტრში.
ნაჩვენებია, რომ ისინი შესანიშნავი არჩევანია გამოსახულების და აუდიოს ამოცნობისთვის, ბუნებრივი ენის დამუშავებისთვის და ისეთი რთული თამაშებისთვის, როგორიცაა Go და ჭადრაკი.
ამ პოსტში მე გაგაცნობთ ნერვული ქსელის მომზადების მთელ პროცესს. მე აღვნიშნავ და ავხსნი ყველა ნაბიჯს ნერვული ქსელის მომზადებისთვის.
სანამ გადავხედავ ნაბიჯებს, მსურს დავამატო მარტივი მაგალითი, რათა დავრწმუნდე, რომ არსებობს პრაქტიკული მაგალითიც.
ასე რომ, მოდი და ვისწავლოთ ნერვული ქსელების დამუშავება
დავიწყოთ მარტივი და ვიკითხოთ რა არის ნეირონული ქსელები პირველ რიგში.
რა არის ზუსტად ნერვული ქსელები?
ნერვული ქსელები არის კომპიუტერული პროგრამა, რომელიც სიმულაციას უკეთებს ადამიანის ტვინის მუშაობას. მათ შეუძლიათ ისწავლონ დიდი მოცულობის მონაცემებიდან და ლაქების ნიმუშებიდან, რომელთა აღმოჩენაც ადამიანებს შეიძლება გაუჭირდეთ.
ნეირონული ქსელები გაიზარდა პოპულარობით ბოლო წლებში მათი მრავალმხრივი ამოცანების გამო, როგორიცაა სურათების და აუდიოს ამოცნობა, ბუნებრივი ენის დამუშავება და პროგნოზირებადი მოდელირება.
საერთო ჯამში, ნერვული ქსელები არის ძლიერი ინსტრუმენტი აპლიკაციების ფართო სპექტრისთვის და აქვს შანსი გარდაქმნას ის, თუ როგორ მივუდგებით სამუშაოს ფართო სპექტრს.
რატომ უნდა ვიცოდეთ მათ შესახებ?
ნერვული ქსელების გაგება კრიტიკულია, რადგან მათ მიგვიყვანა აღმოჩენებამდე სხვადასხვა სფეროში, მათ შორის კომპიუტერული ხედვა, მეტყველების ამოცნობა და ბუნებრივი ენის დამუშავება.
მაგალითად, ნერვული ქსელები არის თვითმართვადი მანქანების, ავტომატური მთარგმნელობითი სერვისების და სამედიცინო დიაგნოსტიკის უახლესი განვითარებების ცენტრში.
იმის გაგება, თუ როგორ ფუნქციონირებს ნერვული ქსელები და როგორ შევქმნათ ისინი, გვეხმარება ახალი და გამომგონებელი აპლიკაციების შექმნაში. და, შესაძლოა, ამან მომავალში კიდევ უფრო დიდი აღმოჩენები გამოიწვიოს.
შენიშვნა სახელმძღვანელოს შესახებ
როგორც ზემოთ ვთქვი, მაგალითის მოყვანით მინდა აგიხსნათ ნერვული ქსელის მომზადების საფეხურები. ამისათვის ჩვენ უნდა ვისაუბროთ MNIST მონაცემთა ბაზაზე. ეს არის პოპულარული არჩევანი დამწყებთათვის, ვისაც სურს დაიწყოს ნერვული ქსელები.
MNIST არის აკრონიმი, რომელიც ნიშნავს სტანდარტებისა და ტექნოლოგიების შეცვლილ ეროვნულ ინსტიტუტს. ეს არის ხელნაწერი ციფრული მონაცემთა ნაკრები, რომელიც ჩვეულებრივ გამოიყენება მანქანური სწავლების მოდელების ტრენინგისა და ტესტირებისთვის, განსაკუთრებით ნერვული ქსელებისთვის.
კოლექცია შეიცავს 70,000 0 ნაცრისფერ ფერს, ხელნაწერი ციფრების, 9-დან XNUMX-მდე.
MNIST მონაცემთა ნაკრები პოპულარული საორიენტაციო ნიშანია გამოსახულების კლასიფიკაცია დავალებები. ის ხშირად გამოიყენება სწავლებისა და სწავლისთვის, რადგან კომპაქტურია და ადვილი მოსაგვარებელია, თუმცა მანქანური სწავლების ალგორითმებისთვის პასუხის გაცემა რთულ გამოწვევას წარმოადგენს.
MNIST მონაცემთა ბაზას მხარს უჭერს რამდენიმე მანქანათმცოდნეობის ჩარჩო და ბიბლიოთეკა, მათ შორის TensorFlow, Keras და PyTorch.
ახლა ჩვენ ვიცით MNIST მონაცემთა ნაკრების შესახებ, დავიწყოთ ნერვული ქსელის მომზადების ჩვენი ნაბიჯებით.
ძირითადი ნაბიჯები ნერვული ქსელის მომზადებისთვის
საჭირო ბიბლიოთეკების იმპორტი
როდესაც პირველად იწყებთ ნერვული ქსელის წვრთნას, მნიშვნელოვანია გქონდეთ საჭირო ხელსაწყოები მოდელის შესაქმნელად და მომზადებისთვის. ნერვული ქსელის შექმნის საწყისი ნაბიჯი არის საჭირო ბიბლიოთეკების იმპორტი, როგორიცაა TensorFlow, Keras და NumPy.
ეს ბიბლიოთეკები ემსახურება როგორც სამშენებლო ბლოკებს ნერვული ქსელის განვითარებისთვის და უზრუნველყოფს გადამწყვეტ შესაძლებლობებს. ამ ბიბლიოთეკების კომბინაცია საშუალებას გაძლევთ შექმნათ დახვეწილი ნერვული ქსელის დიზაინი და სწრაფი ტრენინგი.
ჩვენი მაგალითის დასაწყებად; ჩვენ შემოვიტანთ საჭირო ბიბლიოთეკებს, რომლებიც მოიცავს TensorFlow, Keras და NumPy. TensorFlow არის ღია კოდის მანქანური სწავლების ჩარჩო, Keras არის მაღალი დონის ნერვული ქსელის API და NumPy არის რიცხვითი გამოთვლითი Python ბიბლიოთეკა.
import tensorflow as tf
from tensorflow import keras
import numpy as np
ჩატვირთეთ მონაცემთა ნაკრები
მონაცემთა ნაკრები ახლა უნდა ჩაიტვირთოს. მონაცემთა ნაკრები არის მონაცემთა ერთობლიობა, რომელზედაც მოხდება ნერვული ქსელის ტრენინგი. ეს შეიძლება იყოს ნებისმიერი ტიპის მონაცემი, მათ შორის ფოტოები, აუდიო და ტექსტი.
ძალზე მნიშვნელოვანია მონაცემთა ნაკრების ორ ნაწილად დაყოფა: ერთი ნერვული ქსელის მომზადებისთვის და მეორე მომზადებული მოდელის სისწორის შესაფასებლად. მონაცემთა იმპორტისთვის შეიძლება გამოყენებულ იქნას რამდენიმე ბიბლიოთეკა, მათ შორის TensorFlow, Keras და PyTorch.
ჩვენი მაგალითისთვის, ჩვენ ასევე ვიყენებთ Keras-ს MNIST მონაცემთა ნაკრების ჩასატვირთად. მონაცემთა ნაკრებში არის 60,000 სასწავლო ფოტო და 10,000 ტესტის სურათი.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
მონაცემთა წინასწარი დამუშავება
მონაცემთა წინასწარი დამუშავება მნიშვნელოვანი ეტაპია ნერვული ქსელის მომზადებაში. ეს გულისხმობს მონაცემების მომზადებას და გაწმენდას, სანამ ისინი ნერვულ ქსელში შედიან.
პიქსელის მნიშვნელობების სკალირება, მონაცემების ნორმალიზება და ლეიბლების გადაყვანა ერთ ცხელ კოდირებად არის წინასწარი დამუშავების პროცედურების მაგალითები. ეს პროცესები ეხმარება ნერვულ ქსელს უფრო ეფექტურად და ზუსტად ისწავლოს.
მონაცემების წინასწარი დამუშავება ასევე ხელს შეუწყობს ზედმეტი მორგების შემცირებას და ნერვული ქსელის მუშაობის გაუმჯობესებას.
თქვენ უნდა წინასწარ დაამუშავოთ მონაცემები ნერვული ქსელის მომზადებამდე. ეს მოიცავს ეტიკეტების შეცვლას ერთჯერადი კოდირებით და პიქსელის მნიშვნელობების სკალირებას 0-დან 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)
განსაზღვრეთ მოდელი
ნერვული ქსელის მოდელის განსაზღვრის პროცესი მოიცავს მისი არქიტექტურის დადგენას, როგორიცაა ფენების რაოდენობა, ნეირონების რაოდენობა ფენაზე, აქტივაციის ფუნქციები და ქსელის ტიპი (მიწოდება, განმეორებადი ან კონვოლუციური).
ნერვული ქსელის დიზაინი, რომელსაც იყენებთ, განისაზღვრება იმ პრობლემის მიხედვით, რომლის გადაჭრასაც ცდილობთ. კარგად განსაზღვრული ნერვული ქსელის დიზაინს შეუძლია დაეხმაროს ნერვული ქსელის სწავლას უფრო ეფექტური და ზუსტი გახადოს.
დროა აღვწეროთ ნერვული ქსელის მოდელი ამ ეტაპზე. ამ მაგალითისთვის გამოიყენეთ მარტივი მოდელი ორი ფარული ფენით, თითოეული 128 ნეირონით და softmax გამომავალი ფენით, რომელსაც აქვს 10 ნეირონი.
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')
])
მოდელის შედგენა
დაკარგვის ფუნქცია, ოპტიმიზატორი და მეტრიკა უნდა იყოს მითითებული ნერვული ქსელის მოდელის შედგენისას. ნერვული ქსელის უნარი სწორად პროგნოზირებს გამომავალს, ფასდება დანაკარგის ფუნქციით.
ტრენინგის დროს ნერვული ქსელის სიზუსტის გასაზრდელად, ოპტიმიზატორი ცვლის მის წონებს. ტრენინგის დროს ნერვული ქსელის ეფექტურობა ფასდება მეტრიკის გამოყენებით. მოდელი უნდა შეიქმნას ნეირონული ქსელის მომზადებამდე.
ჩვენს მაგალითში ახლავე უნდა ავაშენოთ მოდელი.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
მოამზადე მოდელი
მომზადებული მონაცემთა გადაცემა ნერვულ ქსელში ქსელის წონების მოდიფიცირებისას დანაკარგის ფუნქციის შესამცირებლად ცნობილია როგორც ნერვული ქსელის სწავლება.
ვალიდაციის მონაცემთა ნაკრები გამოიყენება ტრენინგის დროს ნერვული ქსელის შესამოწმებლად, რათა თვალყური ადევნოთ მის ეფექტურობას და თავიდან აიცილოთ ზედმეტი მორგება. ტრენინგის პროცესს შეიძლება გარკვეული დრო დასჭირდეს, ამიტომ მნიშვნელოვანია დარწმუნდეთ, რომ ნერვული ქსელი სათანადოდ არის გაწვრთნილი, რათა თავიდან იქნას აცილებული არასრულფასოვნება.
ტრენინგის მონაცემების გამოყენებით, ახლა ჩვენ შეგვიძლია მოვამზადოთ მოდელი. ამისათვის ჩვენ უნდა განვსაზღვროთ სერიის ზომა (დამუშავებული ნიმუშების რაოდენობა მოდელის განახლებამდე) და ეპოქების რაოდენობა (გამეორებების რაოდენობა მთელ მონაცემთა ბაზაში).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
მოდელის შეფასება
ნერვული ქსელის მუშაობის ტესტირება ტესტის მონაცემთა ბაზაზე არის მისი შეფასების პროცესი. ამ ეტაპზე გაწვრთნილი ნერვული ქსელი გამოიყენება ტესტის მონაცემთა ნაკრების დასამუშავებლად და ფასდება სიზუსტე.
რამდენად ეფექტურად შეუძლია ნეირონულ ქსელს სწორი შედეგის პროგნოზირება სრულიად ახალი, გამოუცდელი მონაცემებიდან, მისი სიზუსტის საზომია. მოდელის ანალიზმა შეიძლება დაგვეხმაროს იმის დადგენაში, თუ რამდენად კარგად მუშაობს ნერვული ქსელი და ასევე შემოგვთავაზოს გზები მისი კიდევ უფრო გაუმჯობესების მიზნით.
ჩვენ შეგვიძლია საბოლოოდ შევაფასოთ მოდელის შესრულება ტესტის მონაცემების გამოყენებით ტრენინგის შემდეგ.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Სულ ეს არის! ჩვენ მოვამზადეთ ნერვული ქსელი MNIST მონაცემთა ნაკრების ციფრების გამოსავლენად.
მონაცემების მომზადებიდან მომზადებული მოდელის ეფექტურობის შეფასებამდე, ნერვული ქსელის სწავლება რამდენიმე პროცესს მოიცავს. ეს ინსტრუქციები ეხმარება ახალბედებს ნეირონული ქსელების ეფექტურად შექმნასა და მომზადებაში.
დამწყებთათვის, რომლებსაც სურთ გამოიყენონ ნერვული ქსელები სხვადასხვა საკითხების მოსაგვარებლად, შეუძლიათ ამის გაკეთება ამ ინსტრუქციების მიყოლებით.
მაგალითის ვიზუალიზაცია
შევეცადოთ წარმოვიდგინოთ, რა გავაკეთეთ ამ მაგალითით, რომ უკეთ გავიგოთ.
Matplotlib პაკეტი გამოიყენება ამ კოდის ნაწყვეტში, რათა მოხდეს ფოტოების შემთხვევითი შერჩევა სასწავლო მონაცემთა ნაკრებიდან. პირველ რიგში, ჩვენ იმპორტირებთ Matplotlib-ის „pyplot“ მოდულს და ასახელებს მას, როგორც „plt“. შემდეგ, ჯამური განზომილებით 10-დან 10 ინჩზე, ვაკეთებთ ფიგურას 5 სტრიქონით და ქვენაკვეთების 5 სვეტით.
შემდეგ, ჩვენ ვიყენებთ for მარყუჟს, რათა განმეორდეს ქვენაკვეთებზე, აჩვენოს სურათს სასწავლო მონაცემთა ნაკრებიდან თითოეულზე. სურათის საჩვენებლად გამოიყენება „imshow“ ფუნქცია, „cmap“ ოფცია დაყენებულია „ნაცრისფერზე“ ფოტოების ნაცრისფერ ფერებში გამოსაჩენად. თითოეული ქვენაკვეთის სათაური ასევე მითითებულია კოლექციის ასოცირებული სურათის ეტიკეტზე.
დაბოლოს, ჩვენ ვიყენებთ "ჩვენების" ფუნქციას ნახატზე დახატული სურათების საჩვენებლად. ეს ფუნქცია საშუალებას გვაძლევს ვიზუალურად შევაფასოთ ფოტოების ნიმუში მონაცემთა ნაკრებიდან, რაც დაგვეხმარება მონაცემთა გაგებაში და ნებისმიერი შესაძლო პრობლემის იდენტიფიცირებაში.
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()
ნერვული ქსელის მნიშვნელოვანი მოდელები
- მიმწოდებელი ნერვული ქსელები (FFNN): მარტივი ტიპის ნერვული ქსელი, რომელშიც ინფორმაცია გადადის მხოლოდ ერთი გზით, შეყვანის ფენიდან გამომავალ ფენამდე ერთი ან რამდენიმე ფარული ფენის მეშვეობით.
- კონვოლუციური ნერვული ქსელები (CNN): ნერვული ქსელი, რომელიც ჩვეულებრივ გამოიყენება გამოსახულების აღმოჩენისა და დამუშავებისას. CNN მიზნად ისახავს სურათებიდან ფუნქციების ავტომატურად ამოცნობას და ამოღებას.
- განმეორებადი ნერვული ქსელები (RNN): ნერვული ქსელი, რომელიც ჩვეულებრივ გამოიყენება გამოსახულების აღმოჩენისა და დამუშავებისას. CNN მიზნად ისახავს სურათებიდან ფუნქციების ავტომატურად ამოცნობას და ამოღებას.
- გრძელვადიანი მოკლევადიანი მეხსიერების (LSTM) ქსელები: RNN-ის ფორმა, რომელიც შეიქმნა სტანდარტულ RNN-ებში გრადიენტების გაქრობის საკითხის დასაძლევად. გრძელვადიანი დამოკიდებულებები თანმიმდევრულ მონაცემებში შეიძლება უკეთ იყოს აღბეჭდილი LSTM-ებით.
- ავტოკოდერები: უკონტროლო სასწავლო ნერვული ქსელი, რომელშიც ქსელს ასწავლიან მისი შეყვანის მონაცემების რეპროდუცირებას მის გამომავალ ფენაზე. მონაცემთა შეკუმშვა, ანომალიების გამოვლენა და სურათის დენოიზირება შეიძლება განხორციელდეს ავტოენკოდერებით.
- Generative Adversarial Networks (GAN): გენერაციული ნერვული ქსელი არის ნერვული ქსელის ფორმა, რომელსაც ასწავლიან ახალი მონაცემების წარმოებას, რომლებიც შედარებულია სასწავლო მონაცემთა ბაზასთან. GAN-ები შედგება ორი ქსელისგან: გენერატორის ქსელი, რომელიც ქმნის ახალ მონაცემებს და დისკრიმინატორის ქსელი, რომელიც აფასებს შექმნილი მონაცემების ხარისხს.
შეჯამება, რა უნდა იყოს თქვენი შემდეგი ნაბიჯები?
გამოიკვლიეთ რამდენიმე ონლაინ რესურსი და კურსი, რომ გაიგოთ მეტი ნერვული ქსელის მომზადების შესახებ. პროექტებზე ან მაგალითებზე მუშაობა ერთ-ერთი მეთოდია ნერვული ქსელების უკეთ ათვისებისთვის.
დაიწყეთ მარტივი მაგალითებით, როგორიცაა ორობითი კლასიფიკაციის პრობლემები ან სურათების კლასიფიკაციის ამოცანები და შემდეგ გადადით უფრო რთულ ამოცანებზე, როგორიცაა ბუნებრივი ენის დამუშავება ან გაძლიერების სწავლება.
პროექტებზე მუშაობა გეხმარებათ მიიღოთ რეალური გამოცდილება და გააუმჯობესოთ თქვენი ნერვული ქსელის ტრენინგის უნარები.
თქვენ ასევე შეგიძლიათ შეუერთდეთ ონლაინ მანქანათმცოდნეობისა და ნერვული ქსელის ჯგუფებს და ფორუმებს სხვა შემსწავლელებთან და პროფესიონალებთან ურთიერთობისთვის, გააზიაროთ თქვენი სამუშაო და მიიღოთ კომენტარები და დახმარება.
LSRS MONRAD-KROHN
⁶ĵმინდა ენახა პითონის პროგრამა შეცდომის მინიმიზაციისთვის. სპეციალური შერჩევის კვანძები წონის ცვლილებებისთვის შემდეგ ფენაზე