فهرست مندرجات[پنهان شدن][نمایش]
در سالهای اخیر، شبکههای عصبی محبوبیت زیادی پیدا کردهاند، زیرا نشان دادهاند در طیف وسیعی از وظایف بسیار خوب عمل میکنند.
نشان داده شده است که آنها یک انتخاب عالی برای تشخیص تصویر و صدا، پردازش زبان طبیعی و حتی انجام بازی های پیچیده مانند Go و شطرنج هستند.
در این پست، شما را از طریق کل فرآیند آموزش شبکه عصبی راهنمایی می کنم. تمام مراحل آموزش شبکه عصبی را ذکر و توضیح خواهم داد.
در حالی که مراحل را مرور می کنم، می خواهم یک مثال ساده اضافه کنم تا مطمئن شوم که یک مثال عملی نیز وجود دارد.
پس بیایید و بیایید نحوه پردازش شبکه های عصبی را بیاموزیم
بیایید ساده شروع کنیم و بپرسیم چیست؟ شبکه های عصبی در وهله اول.
شبکه های عصبی دقیقا چیست؟
شبکه های عصبی نرم افزار کامپیوتری هستند که عملکرد مغز انسان را شبیه سازی می کنند. آنها میتوانند از حجم وسیعی از دادهها و الگوهای نقطهای یاد بگیرند که تشخیص آنها برای مردم دشوار است.
شبکههای عصبی در سالهای اخیر به دلیل تطبیقپذیری آنها در وظایفی مانند تشخیص تصویر و صدا، پردازش زبان طبیعی و مدلسازی پیشبینی، محبوبیت زیادی پیدا کردهاند.
به طور کلی، شبکه های عصبی ابزاری قوی برای طیف وسیعی از کاربردها هستند و این شانس را دارند که روشی را که ما به طیف وسیعی از مشاغل برخورد می کنیم تغییر دهند.
چرا باید درباره آنها بدانیم؟
درک شبکه های عصبی بسیار مهم است زیرا آنها به اکتشافات در زمینه های مختلفی از جمله بینایی کامپیوتری، تشخیص گفتار و پردازش زبان طبیعی منجر شده اند.
برای مثال، شبکههای عصبی در مرکز پیشرفتهای اخیر در خودروهای خودران، خدمات ترجمه خودکار و حتی تشخیصهای پزشکی قرار دارند.
درک نحوه عملکرد شبکه های عصبی و نحوه طراحی آنها به ما کمک می کند تا برنامه های کاربردی جدید و مبتکرانه بسازیم. و شاید در آینده به اکتشافات بزرگتری منجر شود.
نکته ای در مورد آموزش
همانطور که در بالا گفتم می خواهم با ذکر یک مثال مراحل آموزش شبکه عصبی را توضیح دهم. برای انجام این کار، باید در مورد مجموعه داده MNIST صحبت کنیم. این یک انتخاب محبوب برای مبتدیانی است که می خواهند با شبکه های عصبی شروع کنند.
MNIST مخفف عبارت Modified National Institute of Standards and Technology است. این یک مجموعه داده رقمی دستنویس است که معمولاً برای آموزش و آزمایش مدلهای یادگیری ماشین، بهویژه شبکههای عصبی استفاده میشود.
این مجموعه شامل 70,000 عکس در مقیاس خاکستری از اعداد دست نویس از 0 تا 9 است.
مجموعه داده MNIST یک معیار محبوب برای است طبقه بندی تصویر وظایف این اغلب برای آموزش و یادگیری استفاده می شود، زیرا فشرده و آسان است و در عین حال چالشی دشوار برای الگوریتم های یادگیری ماشینی است.
مجموعه داده MNIST توسط چندین چارچوب و کتابخانه یادگیری ماشین، از جمله TensorFlow، Keras و PyTorch پشتیبانی میشود.
اکنون ما در مورد مجموعه داده MNIST می دانیم، بیایید با مراحل آموزش یک شبکه عصبی شروع کنیم.
مراحل اساسی برای آموزش شبکه عصبی
واردات کتابخانه های ضروری
هنگام شروع آموزش یک شبکه عصبی، داشتن ابزارهای لازم برای طراحی و آموزش مدل بسیار مهم است. گام اولیه در ایجاد یک شبکه عصبی، وارد کردن کتابخانه های مورد نیاز مانند TensorFlow، Keras و NumPy است.
این کتابخانه ها به عنوان بلوک های سازنده برای توسعه شبکه عصبی عمل می کنند و قابلیت های حیاتی را ارائه می دهند. ترکیب این کتابخانه ها امکان ایجاد طرح های پیچیده شبکه عصبی و آموزش سریع را فراهم می کند.
برای شروع مثال ما؛ ما کتابخانه های مورد نیاز را وارد می کنیم که شامل TensorFlow، Keras و NumPy می شود. TensorFlow یک چارچوب یادگیری ماشین منبع باز است، Keras یک API شبکه عصبی سطح بالا است، و NumPy یک کتابخانه محاسباتی عددی پایتون است.
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 در این قطعه کد برای ترسیم یک انتخاب تصادفی از عکسها از مجموعه داده آموزشی استفاده میشود. ابتدا ماژول "pyplot" Matplotlib را وارد می کنیم و آن را با نام مستعار "plt" می نامیم. سپس با مجموع ابعاد 10 در 10 اینچ یک شکل با 5 ردیف و 5 ستون از طرح های فرعی می سازیم.
سپس، از یک حلقه for برای تکرار بر روی طرحهای فرعی استفاده میکنیم و تصویری از مجموعه دادههای آموزشی را در هر یک نمایش میدهیم. برای نمایش تصویر، از تابع "imshow" استفاده می شود، با گزینه "cmap" روی "خاکستری" برای نمایش عکس ها در مقیاس خاکستری. عنوان هر طرح فرعی نیز بر روی برچسب تصویر مرتبط در مجموعه تنظیم می شود.
در نهایت از تابع “show” برای نمایش تصاویر رسم شده در شکل استفاده می کنیم. این تابع به ما امکان می دهد نمونه ای از عکس ها را از مجموعه داده به صورت بصری ارزیابی کنیم که می تواند به درک ما از داده ها و شناسایی هرگونه نگرانی احتمالی کمک کند.
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 دریافت کرد.
- رمزگذارهای خودکار: شبکه عصبی یادگیری بدون نظارت که در آن شبکه آموزش داده می شود تا داده های ورودی خود را در لایه خروجی خود بازتولید کند. فشردهسازی دادهها، تشخیص ناهنجاری، و حذف نویز تصویر همگی ممکن است با رمزگذارهای خودکار انجام شوند.
- شبکه های متخاصم مولد (GAN): شبکه عصبی مولد شکلی از شبکه عصبی است که برای تولید داده های جدید قابل مقایسه با مجموعه داده های آموزشی آموزش داده می شود. GAN ها از دو شبکه تشکیل شده اند: یک شبکه مولد که داده های تازه ایجاد می کند و یک شبکه تشخیص دهنده که کیفیت داده های ایجاد شده را ارزیابی می کند.
جمع بندی، گام های بعدی شما چه باید باشد؟
چندین منبع و دوره آنلاین را کاوش کنید تا درباره آموزش شبکه عصبی بیشتر بدانید. کار بر روی پروژه ها یا نمونه ها یکی از روش های دستیابی به درک بهتر از شبکه های عصبی است.
با مثال های آسان مانند مسائل طبقه بندی باینری یا وظایف طبقه بندی تصویر شروع کنید و سپس به کارهای دشوارتر مانند پردازش زبان طبیعی یا تقویت یادگیری.
کار بر روی پروژه ها به شما کمک می کند تا تجربه واقعی را به دست آورید و مهارت های آموزش شبکه عصبی خود را بهبود بخشید.
همچنین میتوانید به گروهها و انجمنهای یادگیری ماشین آنلاین و شبکههای عصبی بپیوندید تا با دیگر یادگیرندگان و متخصصان تعامل داشته باشید، کار خود را به اشتراک بگذارید، نظرات و کمک دریافت کنید.
LSRS مونراد-کرون
⁶ĵدوست داشتم برنامه پایتون را برای به حداقل رساندن خطا ببینید. گره های انتخاب ویژه برای تغییر وزن به لایه بعدی