Tanh (Hyperbolic Tangent)
تعرّف على كيفية تحسين دالة التنشيط Tanh لتدريب الشبكات العصبية من خلال جعل البيانات متمركزة حول الصفر. استكشف دورها في RNNs وGANs ونماذج Ultralytics YOLO26.
دالة Tanh (المماس الزائدي) هي دالة تنشيط رياضية تُستخدم على نطاق واسع في الطبقات المخفية للشبكات العصبية الاصطناعية. وتحول قيم الإدخال إلى نطاق إخراج يتراوح بين -1 و1، مُنشئةً منحنى على شكل حرف S مشابهًا لدالة Sigmoid، لكنه متمركز حول الصفر. وتُعد خاصية التمركز حول الصفر هذه بالغة الأهمية، لأنها تتيح للنموذج التعلم بكفاءة أكبر من خلال تطبيع مخرجات العصبونات، مما يضمن أن تكون للبيانات المتدفقة عبر الشبكة قيمة متوسطة أقرب إلى الصفر. ومن خلال التعامل مع القيم السالبة صراحةً، تساعد Tanh الشبكات العصبية على التقاط أنماط وعلاقات أكثر تعقيدًا داخل البيانات.
آلية عمل Tanh في التعلم العميق#
في بنية نماذج التعلم العميق، تُدخل دوال التنشيط اللاخطية، مما يتيح للشبكة تعلم حدود معقدة بين فئات البيانات المختلفة. ومن دون دوال مثل Tanh، ستتصرف الشبكة العصبية مثل نموذج الانحدار الخطي البسيط، بغض النظر عن عدد طبقاتها. وتُعد دالة Tanh فعالة خصوصًا في الشبكات العصبية المتكررة (RNN) وبعض أنواع الشبكات ذات التغذية الأمامية، حيث يساعد الحفاظ على توزيع تنشيط متوازن ومتمركز حول الصفر على منع مشكلة تلاشي التدرج أثناء الانتشار العكسي.
عند تعيين المدخلات إلى النطاق من -1 إلى 1، تؤدي المدخلات السالبة بشدة إلى مخرجات سالبة، وتؤدي المدخلات الموجبة بشدة إلى مخرجات موجبة. ويختلف ذلك عن دالة Sigmoid، التي تضغط القيم بين 0 و1. وبما أن مخرجات Tanh متماثلة حول الصفر، فإن عملية الانحدار المتدرج تتقارب غالبًا بسرعة أكبر، إذ إن الأوزان في الطبقات اللاحقة لا تتحرك باستمرار في اتجاه واحد، وهي ظاهرة تُعرف باسم مسار «التعرج» في التحسين.
التطبيقات الواقعية#
تواصل Tanh أداء دور حيوي في بنيات وحالات استخدام محددة، ولا سيما عندما تكون معالجة التسلسلات وتقدير القيم المستمرة مطلوبين.
- معالجة اللغة الطبيعية (NLP): في بنيات مثل شبكات الذاكرة طويلة وقصيرة المدى (LSTM) والوحدات المتكررة ذات البوابات (GRU)، تُستخدم Tanh بوصفها دالة التنشيط الأساسية لتنظيم تدفق المعلومات. فعلى سبيل المثال، في مهام الترجمة الآلية حيث يترجم نموذج نصًا من الإنجليزية إلى الفرنسية، تساعد Tanh البوابات الداخلية في LSTM على تحديد مقدار السياق السابق (الذاكرة) الذي ينبغي الاحتفاظ به أو نسيانه. ويتيح ذلك للنموذج التعامل مع الاعتماديات طويلة الأمد في بنى الجمل.
- الشبكات التوليدية الخصمية (GANs): في مكوّن المولّد في العديد من الشبكات التوليدية الخصمية، تُستخدم Tanh كثيرًا بوصفها دالة التنشيط النهائية لطبقة الإخراج. ونظرًا إلى أن الصور تُطبّع غالبًا إلى نطاق من -1 إلى 1 أثناء المعالجة المسبقة، يضمن استخدام Tanh أن ينتج المولّد قيم بكسلات ضمن النطاق الصالح نفسه. وتساعد هذه التقنية على توليد صور واقعية لتطبيقات مثل التوليد من النص إلى الصورة.
مقارنة: Tanh مقابل Sigmoid مقابل ReLU#
من المفيد التمييز بين Tanh والدوال الشائعة الأخرى لفهم الحالات المناسبة لاستخدامها.
- Tanh مقابل Sigmoid: كلتاهما منحنيان على شكل حرف S. إلا أن Sigmoid تُخرج قيمًا بين 0 و1، مما قد يتسبب في تلاشي التدرجات بسرعة أكبر مقارنةً بـ Tanh. وتُحجز Sigmoid عادةً لطبقة الإخراج النهائية في مسائل التصنيف الثنائي (تنبؤ الاحتمالات)، بينما تُفضّل Tanh للطبقات المخفية في RNNs.
- Tanh مقابل ReLU (الوحدة الخطية المصححة): في الشبكات العصبية الالتفافية الحديثة (CNNs)، مثل YOLO26، تُفضّل ReLU ومتغيراتها (مثل SiLU) عمومًا على Tanh للطبقات المخفية. ويرجع ذلك إلى أن ReLU تتجنب مشكلة تلاشي التدرج بفعالية أكبر في الشبكات العميقة جدًا، كما أن حسابها أقل تكلفة من الناحية الحاسوبية. وتُعد Tanh أعلى تكلفة حسابية بسبب الحسابات الأسية المطلوبة.
تنفيذ دوال التنشيط في PyTorch#
مع أن النماذج عالية المستوى مثل Ultralytics YOLO26 تتولى تعريفات التنشيط داخليًا ضمن ملفات إعداداتها، فإن فهم كيفية تطبيق Tanh باستخدام PyTorch مفيد لبناء نماذج مخصصة.
import torch
import torch.nn as nn
# Define a sample input tensor with positive and negative values
input_data = torch.tensor([-2.0, -0.5, 0.0, 0.5, 2.0])
# Initialize the Tanh activation function
tanh = nn.Tanh()
# Apply Tanh to the input data
output = tanh(input_data)
# Print results to see values squashed between -1 and 1
print(f"Input: {input_data}")
print(f"Output: {output}")بالنسبة إلى المستخدمين المهتمين بتدريب بنيات مخصصة أو إدارة مجموعات البيانات بفعالية، توفر منصة Ultralytics بيئة مبسطة للتجربة باستخدام المعلمات الفائقة للنموذج المختلفة، وتصوير مقاييس التدريب، ونشر الحلول دون الحاجة إلى كتابة تعليمات برمجية يدويًا لكل طبقة من طبقات الشبكة العصبية.









