תוכן העניינים[להתחבא][הופעה]
בשנים האחרונות, רשתות עצביות גדלו בפופולריות מאז שהוכיחו כי הן טובות ביותר במגוון רחב של משימות.
הם הוכחו כבחירה מצוינת לזיהוי תמונה ואודיו, עיבוד שפה טבעית, ואפילו משחקים מסובכים כמו Go ושחמט.
בפוסט הזה אני אדריך אותך בכל התהליך של אימון רשת עצבית. אזכיר ואסביר את כל השלבים לאימון רשת עצבית.
בעוד אני אעבור על השלבים אני רוצה להוסיף דוגמה פשוטה כדי לוודא שיש גם דוגמה מעשית.
אז בואו, ובואו נלמד כיצד לעבד רשתות עצביות
נתחיל פשוט ונשאל מה הם רשתות עצביות במקום הראשון.
מהן בעצם רשתות עצביות?
רשתות עצביות הן תוכנת מחשב המדמה את פעולת המוח האנושי. הם יכולים ללמוד מכמויות אדירות של נתונים ודפוסי זיהוי שאנשים עשויים להתקשות לזהות.
רשתות עצביות גדלו בפופולריות בשנים האחרונות בגלל הרבגוניות שלהן במשימות כמו זיהוי תמונות ואודיו, עיבוד שפה טבעית ומודלים חזויים.
בסך הכל, רשתות עצביות הן כלי חזק למגוון רחב של יישומים ויש להם סיכוי לשנות את הדרך בה אנו ניגשים למגוון רחב של עבודות.
למה אנחנו צריכים לדעת עליהם?
הבנת רשתות עצביות היא קריטית מכיוון שהן הובילו לתגליות במגוון תחומים, כולל ראייה ממוחשבת, זיהוי דיבור ועיבוד שפה טבעית.
רשתות עצביות, למשל, הן בלב ההתפתחויות האחרונות במכוניות לנהיגה עצמית, שירותי תרגום אוטומטי ואפילו אבחון רפואי.
ההבנה כיצד פועלות רשתות עצביות וכיצד לעצב אותן עוזרת לנו לבנות יישומים חדשים ויצירתיים. ואולי, זה עשוי להוביל לתגליות גדולות עוד יותר בעתיד.
הערה לגבי המדריך
כפי שאמרתי לעיל, ברצוני להסביר את השלבים של אימון רשת עצבית על ידי מתן דוגמה. כדי לעשות זאת, עלינו לדבר על מערך הנתונים של MNIST. זוהי בחירה פופולרית למתחילים שרוצים להתחיל עם רשתות עצביות.
MNIST הוא ראשי תיבות המייצגים את המכון הלאומי לתקנים וטכנולוגיה. זהו מערך ספרות בכתב יד המשמש בדרך כלל לאימון ובדיקה של מודלים של למידת מכונה, בעיקר רשתות עצביות.
האוסף מכיל 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" מוגדרת ל'אפור' כדי להציג את התמונות בגווני אפור. הכותרת של כל עלילת משנה מוגדרת גם לתווית של התמונה המשויכת באוסף.
לבסוף, אנו משתמשים בפונקציית "הצג" כדי להציג את התמונות המתוכננות באיור. פונקציה זו מאפשרת לנו להעריך חזותית מדגם של תמונות ממערך הנתונים, מה שיכול לסייע בהבנת הנתונים ובזיהוי של כל דאגה אפשרית.
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()
מודלים חשובים של רשתות עצביות
- Feedforward Neural Networks (FFNN): סוג פשוט של רשת עצבית שבה המידע עובר רק בדרך אחת, משכבת הקלט לשכבת הפלט דרך שכבה נסתרת אחת או יותר.
- Convolutional Neural Networks (CNN): רשת עצבית המשמשת בדרך כלל בזיהוי ועיבוד תמונה. CNNs נועדו לזהות ולחלץ תכונות מתמונות באופן אוטומטי.
- רשתות עצביות חוזרות (RNN): רשת עצבית המשמשת בדרך כלל בזיהוי ועיבוד תמונה. CNNs נועדו לזהות ולחלץ תכונות מתמונות באופן אוטומטי.
- רשתות זיכרון לטווח קצר (LSTM): צורה של RNN שנוצרה כדי להתגבר על נושא ההיעלמות של שיפועים ב-RNN סטנדרטיים. תלות ארוכת טווח בנתונים עוקבים ניתנת ללכוד טוב יותר עם LSTMs.
- מקודדים אוטומטיים: רשת עצבית למידה ללא פיקוח שבה מלמדים את הרשת לשחזר את נתוני הקלט שלה בשכבת הפלט שלה. דחיסת נתונים, זיהוי חריגות והפחתת תמונות עשויים להתבצע באמצעות מקודדים אוטומטיים.
- רשתות יריבות יצירתיות (GAN): רשת עצבית גנרטיבית היא צורה של רשת עצבית הנלמדת לייצר נתונים חדשים הדומים למערך אימון. GANs מורכבים משתי רשתות: רשת מחוללים שיוצרת נתונים טריים ורשת מפלה שמעריכה את איכות הנתונים שנוצרו.
לסיכום, מה צריכים להיות הצעדים הבאים שלך?
חקור מספר משאבים וקורסים מקוונים כדי ללמוד עוד על אימון רשת עצבית. עבודה על פרויקטים או דוגמאות היא שיטה אחת להשיג הבנה טובה יותר של רשתות עצביות.
התחל עם דוגמאות קלות כמו בעיות סיווג בינארי או משימות סיווג תמונות, ולאחר מכן עבור למשימות קשות יותר כמו עיבוד שפה טבעית או למידה חיזוק.
עבודה על פרויקטים עוזרת לך להשיג ניסיון אמיתי ולשפר את כישורי האימון ברשת העצבית שלך.
אתה יכול גם להצטרף לקבוצות ופורומים של למידת מכונה ורשתות עצביות כדי ליצור אינטראקציה עם לומדים ואנשי מקצוע אחרים, לשתף את עבודתך ולקבל הערות ועזרה.
LSRS MONRAD-KROHN
⁶ĵהאם היה רוצה לראות את תוכנית python למזעור השגיאות. צמתי בחירה מיוחדים לשינויי משקל לשכבה הבאה