Chollet ML نشر 13 أغسطس 2021 أرسل تقرير نشر 13 أغسطس 2021 أريد توضيح لدالة التنشيط softsign وكيف نستخدمها في كيراس Keras؟ اقتباس
1 Ahmed Sharshar نشر 13 أغسطس 2021 أرسل تقرير نشر 13 أغسطس 2021 (معدل) دالة Softsign هي دالة تنشيط تقوم بإعادة تعيين القيم بين -1 و 1 من خلال تطبيق عتبة threshold تمامًا مثل دالة sigmoid. الميزة فيها أن قيمة softsign هي صفر في مركزها ، اي ان نقطة الاصل لديها هي 0 مما يساعد الطبقة العصبية التالية أثناء عملية propagating. وتعبر عنها رياضيا بالصيغة التالية: f(x) = x / (1 + |x|) وتمثل مشتقتها بالصيغة التالية: dy/dx = 1 / (1 + |x|)^2 ويمكن تمثيل الدالة ومشتقتها كما هو موضح في الشكل التالي: ويمكنك اختبارها بالكود كالتالي: import tensorflow as tf input_tensor = tf.constant([-1.5, 9.0, 11.0], dtype = tf.float32) gen_output = tf.keras.activations.softsign(input_tensor) gen_output.numpy() output >>> array([-0.6 , 0.9 , 0.9166667] , dtype=float32) على الرغم من التشابة الملحوظ بينها وبين دالة tanh ، الا ان هناك اختلاف بينهما، الاختلاف الأساسي هو أن وظيفةالدالة tanh تتقارب أسيًا، اي تشبة الدوال الاسية. في حالة الدالة Softsign ، فإنها تتقارب مع دوال كثيرة الحدود. وهذا الخط الرفيع بين الدالتين يخلق فرقًا كبيرًا بين الحالتين وحالات الاستخدام الخاصة بكل منهما بهما. ورغم ذلك فان دالة relu تعد افضل واكثر استخداما من softsign لانها ابسط وتاخذ وقتا اقل في الحسابات منهاوايضا تعد افضل في الحسابات المعقدة التي توجد في طبقات التعلم العميق. ويمكنك استخدامها في keras تماما مثل اي دالة تنشيط اخري كالتالي: from keras.models import Sequential from keras.layers import Flatten, Dense model = Sequential() model.add(Embedding(10000, 8, input_length=maxlen)) model.add(Flatten()) model.add(Dense(1, activation='softsign')) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc']) model.summary() history = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2) تم التعديل في 13 أغسطس 2021 بواسطة Ahmed Sharshar اقتباس
1 Ali Haidar Ahmad نشر 13 أغسطس 2021 أرسل تقرير نشر 13 أغسطس 2021 هي دالة تنشيط تستخدم مع الشبكات العصبية وتعطي خرجاً ضمن المجال 1 ل -1. ولها الشكل التالي: softsign(x) = x / (abs(x) + 1). حسناً هذه الدالة مرتبطة ارتباطاً وثيقاً بدالة tanh لذا أنصح أولاً بقراءة مافي الرابط التالي: فهذه الدالة جاءت بغاية تطوير أو تحسين دالة ال tanh بغية منع الخلايا من الوصول لحالة ((التشبع)) بسرعة. أي بمعنى آخر منع الخلايا من الوصول لحالة عدم القدرة على تعلم أي معلومات جديدة. الآن تأمل الرسم البياني التالي، حيث أن الخط الأزرق يمثل دالة ال tanh واللون البرتقالي يمثل مشتقها واللون الأحمر هو دالة ال softsign والأخضر مشتقها. كما تلاحظ فإن دالة التانش تتقارب بشكل سريع من المقارب الأفقي (القيمة y=1 و y=-1) حيث أنها تتقارب منهم بشكل أسي، وهذا مايؤثر سلباً على قيم المشتق حيث أن ميل المماس يصبح أفقياً بسرعة كبيرة مع زيادة قيم ال x وهذا مايعني أن قيم المشتقة تنخفض وهذا مايعني أن عملية التعلم تتباطأ أسياً حتى تنعدم تقريباً في حالة استمرار تزايد قيمة قيم الدخل وهذا مانسميه بحالة (التشبع) أي أن الخلايا لم تعد قاردة على التعلم من البيانات أكثر من ذلك وهذا واضح جداً من الرسم جانباً حيث أن دالة المشتق للتانش تتقارب سريعاً من الصفر. الآن لو نظراً لدالة السوفت فإن أول أمر يمكننا ملاحظته هو أن دالة السوفت كما يشير اسمها هي دالة أنعممم والمقصود هنا أن دالة المشتق لها تتقارب ولكنها لاتنعتدم بسرعة كما في ال tanh وبالتالي منع الخلايا من التشبع. وهي الميزة الوحيدة لها مقارنة بال tanh أما على الجانب الآخر فنجد أن قيم المشتق للتانش أكبر ضمن مجال الدخل من -1 ل 1 وهذا أفضل لعملية التعلم. وفي كيراس يمكننا أن نجدها ضمن الموديول التالي: tf.keras.activations.softsign(x) ولاستخدامها أثناء تدريب نماذجك يمكنك تمريرها للطبقة بإحدى الطرق في المثال التالي: model = Sequential() model.add(Embedding(10000, 8, input_length=maxlen)) model.add(Flatten()) model.add(Dense(64, activation='softsign'))# بهذه الطريقة """ أو from tensorflow.keras import activations model.add(Dense(64, activation=activations.softsign)) أو بالشكل التالي model.add(Dense(64)) model.add(Activation(activations.softsign )) # أو model.add(Activation("softsign ")) """ model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc']) model.summary() اقتباس
السؤال
Chollet ML
أريد توضيح لدالة التنشيط softsign وكيف نستخدمها في كيراس Keras؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.