טיש פון קאָנטענץ[באַהאַלטן][ווייַזן]
אין די לעצטע יאָרן, נעוראַל נעטוואָרקס האָבן געוואקסן אין פּאָפּולאַריטעט זינט זיי האָבן געוויזן צו זיין גאָר גוט אין אַ ברייט קייט פון טאַסקס.
זיי האָבן שוין געוויזן צו זיין אַ גרויס ברירה פֿאַר בילד און אַודיאָ דערקענונג, נאַטירלעך שפּראַך פּראַסעסינג און אפילו פּלייינג קאָמפּליצירט שפּילערייַ ווי גיין און שאָך.
אין דעם פּאָסטן, איך וועל פירן איר דורך די גאנצע פּראָצעס פון טריינינג אַ נעוראַל נעץ. איך וועל דערמאָנען און דערקלערן אַלע די סטעפּס צו באַן אַ נעוראַל נעץ.
בשעת איך וועל גיין איבער די סטעפּס איך וואָלט ווי צו לייגן אַ פּשוט בייַשפּיל צו מאַכן זיכער אַז עס איז אויך אַ פּראַקטיש בייַשפּיל.
אַזוי, קומען צוזאמען, און לאָזן אונדז לערנען ווי צו פּראָצעס נעוראַל נעטוואָרקס
זאל ס אָנהייבן פּשוט און פרעגן וואָס זענען נוראַל נעטוואָרקס אין דער ערשטער אָרט.
וואָס פּונקט זענען נעוראַל נעטוואָרקס?
נעוראַל נעטוואָרקס זענען קאָמפּיוטער ווייכווארג וואָס סימיאַלייץ די אָפּעראַציע פון די מענטשלעך מאַרך. זיי קענען לערנען פון וואַסט וואַליומז פון דאַטן און אָרט פּאַטערנז וואָס מענטשן קען זיין שווער צו דעטעקט.
נעוראַל נעטוואָרקס האָבן געוואקסן אין פּאָפּולאַריטעט אין די לעצטע יאָרן ווייַל פון זייער ווערסאַטילאַטי אין טאַסקס אַזאַ ווי בילד און אַודיאָ דערקענונג, נאַטירלעך שפּראַך פּראַסעסינג און פּרידיקטיוו מאָדעלינג.
קוילעלדיק, נעוראַל נעטוואָרקס זענען אַ שטאַרק געצייַג פֿאַר אַ ברייט קייט פון אַפּלאַקיישאַנז און האָבן אַ געלעגנהייט צו יבערמאַכן די וועג מיר צוגאַנג אַ ברייט קייט פון דזשאָבס.
פארוואס מיר זאָל וויסן וועגן זיי?
פארשטאנד פון נעוראַל נעטוואָרקס איז קריטיש ווייַל זיי האָבן געפֿירט צו דיסקאַוועריז אין אַ פאַרשיידנקייַט פון פעלדער, אַרייַנגערעכנט קאָמפּיוטער זעאונג, רעדע דערקענונג און נאַטירלעך שפּראַך פּראַסעסינג.
נעוראַל נעטוואָרקס, פֿאַר בייַשפּיל, זענען די האַרץ פון די לעצטע דיוועלאַפּמאַנץ אין זיך-דרייווינג קאַרס, אָטאַמאַטיק איבערזעצונג באַדינונגס און אפילו מעדיציניש דיאַגנאָסטיקס.
פארשטאנד ווי נעוראַל נעטוואָרקס פונקציאָנירן און ווי צו פּלאַן זיי העלפּס אונדז בויען נייַע און ינווענטיוו אַפּלאַקיישאַנז. און, טאָמער, עס קען פירן צו אפילו גרעסערע דיסקאַוועריז אין דער צוקונפֿט.
א באַמערקונג וועגן דעם טוטאָריאַל
ווי איך געזאגט אויבן, איך וואָלט ווי צו דערקלערן די סטעפּס פון טריינינג אַ נעוראַל נעץ דורך געבן אַ בייַשפּיל. צו טאָן דאָס, מיר זאָל רעדן וועגן די MNIST דאַטאַסעט. עס איז אַ פאָלקס ברירה פֿאַר ביגינערז וואָס ווילן צו אָנהייבן מיט נעוראַל נעטוואָרקס.
MNIST איז אַן אַקראַנים וואָס שטייט פֿאַר מאָדיפיעד נאַשאַנאַל אינסטיטוט פון סטאַנדאַרדס און טעכנאָלאָגיע. עס איז אַ כאַנדריטאַן ציפֿער דאַטאַסעט וואָס איז קאַמאַנלי געניצט פֿאַר טריינינג און טעסטינג מאַשין לערנען מאָדעלס, ספּעציעל נעוראַל נעטוואָרקס.
די זאַמלונג כּולל 70,000 גרייסקאַלע פאָטאָס פון כאַנדריטאַן נומעראַלס ריינדזשינג פון 0 צו 9.
די MNIST דאַטאַסעט איז אַ פאָלקס בענטשמאַרק פֿאַר בילד קלאַסאַפאַקיישאַן טאַסקס. עס איז אָפט געניצט פֿאַר לערנען און לערנען ווייַל עס איז סאָליד און גרינג צו האַנדלען מיט, אָבער עס איז אַ שווער אַרויסרופן פֿאַר מאַשין לערנען אַלגערידאַמז צו ענטפֿערן.
די MNIST דאַטאַסעט איז געשטיצט דורך עטלעכע מאַשין לערנען פראַמעוואָרקס און לייברעריז, אַרייַנגערעכנט TensorFlow, Keras און PyTorch.
איצט מיר וויסן וועגן די MNIST דאַטאַסעט, לאָזן אונדז אָנהייבן מיט אונדזער סטעפּס פון טריינינג אַ נעוראַל נעץ.
יקערדיק סטעפּס צו באַן אַ נעוראַל נעץ
אַרייַנפיר נויטיק ליבראַריעס
ווען איר ערשטער אָנהייבן צו באַן אַ נעוראַל נעץ, עס איז קריטיש צו האָבן די נייטיק מכשירים צו פּלאַן און באַן די מאָדעל. דער ערשט שריט אין קריייטינג אַ נעוראַל נעץ איז צו אַרייַנפיר פארלאנגט לייברעריז אַזאַ ווי TensorFlow, Keras און NumPy.
די לייברעריז דינען ווי בנין בלאַקס פֿאַר די אַנטוויקלונג פון די נעוראַל נעץ און צושטעלן קריטיש קייפּאַבילאַטיז. די קאָמבינאַציע פון די לייברעריז אַלאַוז די שאַפונג פון סאַפיסטאַקייטיד נעוראַל נעץ דיזיינז און שנעל טריינינג.
צו אָנהייבן אונדזער בייַשפּיל; מיר וועלן אַרייַנפיר די פארלאנגט לייברעריז, וואָס אַרייַננעמען TensorFlow, Keras און NumPy. TensorFlow איז אַן אָפֿן-מקור מאַשין לערנען פריימווערק, קעראַס איז אַ הויך-מדרגה נעוראַל נעץ אַפּי, און 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 נוראַנז, און אַ סאָפטמאַקס רעזולטאַט שיכטע, וואָס האט 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 ס "פּיפּלאָט" מאָדולע און אַליאַס עס ווי "פּלט". דערנאָך, מיט אַ גאַנץ ויסמעסטונג פון 10 דורך 10 אינטשעס, מיר מאַכן אַ פיגור מיט 5 ראָוז און 5 שפאלטן פון סובפּלאָץ.
דערנאָך, מיר נוצן אַ פֿאַר שלייף צו יטערייט איבער די סאַבפּלאָץ, ווייַזנדיק אַ בילד פון די טריינינג דאַטאַסעט אויף יעדער. צו אַרויסווייַזן די בילד, די "ימשאָוו" פֿונקציע איז געניצט, מיט די "קמאַפּ" אָפּציע איז באַשטימט צו 'גרוי' צו ווייַזן די פאָטאָס אין גרייסקאַלע. דער טיטל פון יעדער סאַבפּלאַן איז אויך באַשטימט צו די פירמע פון די פֿאַרבונדן בילד אין דער זאַמלונג.
צום סוף, מיר נוצן די "ווייַזן" פֿונקציע צו ווייַזן די פּלאַטיד בילדער אין די פיגור. די פֿונקציע אַלאַוז אונדז צו וויזשוואַלי אָפּשאַצן אַ מוסטער פון פאָטאָס פֿון די דאַטאַסעט, וואָס קענען העלפֿן אונדזער פארשטאנד פון די דאַטן און די לעגיטימאַציע פון מעגלעך קאַנסערנז.
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): א נעוראַל נעץ וואָס איז אָפט געניצט אין בילד דיטעקשאַן און פּראַסעסינג. CNNs זענען בדעה צו דערקענען און עקסטראַקט פֿעיִקייטן פון בילדער אויטאָמאַטיש.
- ריקעראַנט נעוראַל נעטוואָרקס (רנן): א נעוראַל נעץ וואָס איז אָפט געניצט אין בילד דיטעקשאַן און פּראַסעסינג. CNNs זענען בדעה צו דערקענען און עקסטראַקט פֿעיִקייטן פון בילדער אויטאָמאַטיש.
- לאנג קורץ-טערמין זכּרון (LSTM) נעטוואָרקס: א פאָרעם פון RNN באשאפן צו באַקומען די אַרויסגעבן פון דיסאַפּירינג גראַדיענץ אין נאָרמאַל RNNs. לאַנג-טערמין דיפּענדאַנסיז אין סאַקווענטשאַל דאַטן קענען זיין בעסער קאַפּטשערד מיט LSTMs.
- אַוטאָ ענקאָדערס: ונסופּערוויסעד לערנען נעוראַל נעץ אין וואָס די נעץ איז געלערנט צו רעפּראָדוצירן זייַן אַרייַנשרייַב דאַטן אין זייַן רעזולטאַט שיכטע. דאַטאַ קאַמפּרעשאַן, אַנאַמאַלי דיטעקשאַן און בילד דענאָיסינג קען אַלע זיין דורכגעקאָכט מיט אַוטאָענקאָדערס.
- גענעראַטיווע אַדווערסאַריאַל נעטוואָרקס (GAN): א גענעראַטיווע נעוראַל נעץ איז אַ פאָרעם פון נעוראַל נעץ וואָס איז געלערנט צו פּראָדוצירן נייַ דאַטן וואָס איז פאַרגלייַכלעך צו אַ טריינינג דאַטאַסעט. GANs זענען געמאכט פון צוויי נעטוואָרקס: אַ גענעראַטאָר נעץ וואָס קריייץ פריש דאַטן און אַ דיסקרימינאַטאָר נעץ וואָס אַססעסס די קוואַליטעט פון די באשאפן דאַטן.
ראַפּ-אַרויף, וואָס זאָל זיין דיין ווייַטער סטעפּס?
ויספאָרשן עטלעכע אָנליין רעסורסן און קאָרסאַז צו לערנען מער וועגן טריינינג אַ נעוראַל נעץ. ארבעטן אויף פּראַדזשעקס אָדער ביישפילן איז איין אופֿן צו באַקומען אַ בעסער אָנכאַפּן פון נעוראַל נעטוואָרקס.
אָנהייב מיט גרינג ביישפילן ווי ביינערי קלאַסאַפאַקיישאַן פּראָבלעמס אָדער בילד קלאַסאַפאַקיישאַן טאַסקס, און דאַן גיין צו מער שווער טאַסקס ווי נאַטירלעך שפּראַך פּראַסעסינג אָדער ריינפאָרסינג לערנען.
ארבעטן אויף פּראַדזשעקס העלפּס איר צו באַקומען פאַקטיש דערפאַרונג און פֿאַרבעסערן דיין נעוראַל נעץ טריינינג סקילז.
איר קענט אויך פאַרבינדן אָנליין מאַשין לערנען און נעוראַל נעץ גרופּעס און גרופּעס צו ינטעראַקט מיט אנדערע לערנערז און פּראָפעססיאָנאַלס, טיילן דיין אַרבעט און באַקומען באַמערקונגען און הילף.
LSRS MONRAD-KROHN
⁶ĵ וואָלט ווי צו זען די פּיטהאָן פּראָגראַם פֿאַר דער טעות מינימיזאַטיאָן. ספּעציעלע סעלעקציע נאָודז פֿאַר וואָג ענדערונגען צו דער ווייַטער שיכטע