تابع بیشینه هموار (Softmax) چیست؟ | به زبان ساده

۴۲۶۵ بازدید
آخرین به‌روزرسانی: ۲۲ خرداد ۱۴۰۲
زمان مطالعه: ۱۵ دقیقه
دانلود PDF مقاله
تابع بیشینه هموار (Softmax) چیست؟ | به زبان سادهتابع بیشینه هموار (Softmax) چیست؟ | به زبان ساده

بحث نرمال‌سازی یا استاندارد سازی داده‌ها، برای مقایسه و به کارگیری روش‌های آماری چند متغیره، مانند «خوشه‌بندی» (Clustering) و «رده‌بندی» (Classification) اهمیت زیادی دارد. توابع و روش‌های مختلفی برای انجام این کار وجود دارد. در این نوشتار به تابع بیشینه هموار (softmax) خواهیم پرداخت و خصوصیات آن را مورد بررسی قرار می‌دهیم.

997696

به منظور آشنایی بیشتر با مفهوم استاندارد یا نرمال سازی بهتر است مطالب دیگر مجله فرادرس مانند توزیع بولتزمان در ترمودینامیک آماری— به زبان ساده و روش‌های استاندارد سازی داده‌ها را مطالعه کنید. همچنین خواندن مطالب انحراف استاندارد و خطای استاندارد — از صفر تا صد و متغیر تصادفی، تابع احتمال و تابع توزیع احتمال نیز خالی از لطف نیست.

تابع بیشینه هموار

تابع بیشینه هموار (Softmax Fucntion)، همچنین به عنوان softargmax یا «تابع نمایی نرمال شده» (normalized exponential function)، شناخته می‌شود. از طرفی این تابع را تعمیم‌یافته «تابع لجستیک» (Logistic Function) در حالت چند بُعدی محسوب می‌کنند. همچنین از آن در «رگرسیون لجستیک چند جمله‌ای» (Multinomial Logistic Regression) استفاده می‌شود و غالباً به عنوان آخرین «تابع فعال‌سازی» (Activation Function) برای یک «شبکه عصبی» (Neural Network) برای نرمال سازی خروجی شبکه و تبدیل آن به توزیع احتمال بهره می‌برند. نرمال سازی در این حالت نسبت به کلاس‌های خروجی پیش بینی شده، صورت می‌گیرد.

تابع بیشینه هموار، به عنوان ورودی یک بردار zz از kk عدد حقیقی را می‌گیرد و آن را به یک توزیع احتمال تبدیل می‌کند که متشکل از kk احتمال متناسب با نمای اعداد ورودی هستند. این امر به این معنی است که قبل از استفاده از تابع بیشینه هموار (Softmax)، بعضی از اجزای بردار zz ممکن است منفی یا بیشتر از یک باشند. اما بعد از استفاده از تابع بیشینه هموار، هر مولفه در بازه (0،1) {\displaystyle (0،1)} قرار می‌گیرد بطوری که مجموع آن‌ها برابر با ۱ باشد. بنابراین می‌توان آنها را به عنوان مقدار احتمال تفسیر کرد. علاوه بر این، ورودی‌های با مقادیر بزرگتر، دارای احتمال بیشتر نیز خواهند بود.

تابع استاندارد بیشینه هموار که گاهی به آن «تابع بیشینه هموار واحد» (Unit Softmax Function) نیز گفته می‌شود، به صورت زیر تعریف می‌شود.

σ(zi)=ezij=1kezj for i=1,,k and z=(z1,,zk)Rk \large {\displaystyle \sigma (\mathbf {z}_{i}) = {\dfrac {e ^ {z_{i}}} {\sum_ {j = 1} ^ {k} e ^ {z_ {j} }}} {\text { for }} i = 1, \dotsc, k {\text { and }} \mathbf {z} = (z_{1}, \dots, z_{k}) \in \mathbb { R} ^ {k}}

رابطه ۱

توجه داشته باشید که در σ:RKRk{\displaystyle \sigma: \mathbb {R} ^ {K} \to \mathbb {R} ^ {k}} تعریف شده است.

توجه داشته باشید که برای هر عنصر zi {\displaystyle z_ {i}} از بردار ورودی z {\displaystyle \mathbf {z}} ، تابع نمایی استاندارد اعمال شده است و تقسیم کردن هر مقدار بر مجموع تمامی آن‌ها، باعث نرمال شدن شده و اطمینان می‌دهد که مجموع اجزای بردار خروجی یک خواهد بود.

σ(z)=1 \large {\displaystyle \sigma (\mathbf {z}) = 1 }

البته به جای استفاده از عدد نیر (ee) به عنوان پایه تابع نمایی، می‌توان از یک پایه متفاوت مثل b>0b > 0 نیز استفاده کرد. انتخاب مقدار بزرگ برای bb باعث می‌شود که توزیع احتمالی، چگالی مقادیر خروجی، حول مقادیر بزرگتر، بیشتر شود. به این ترتیب برای مقدار حقیقی β\beta، به صورت b=eβ {\displaystyle b = e ^ {\beta}} یا b=eβ {\displaystyle b = e ^ {- \beta}} خواهیم داشت:

σ(zi)=eβzij=1keβzj \large \displaystyle \sigma (\mathbf {z}_{i}) = {\dfrac {e ^ {\beta z_{i}}} {\sum_ {j = 1} ^ {k} e ^ {\beta z_{j}}}}

رابطه ۲

یا

σ(zi)=eβzij=1keβzj \large {\displaystyle \sigma (\mathbf {z}_ i}) = {\dfrac {e ^ {- \beta z_ {i}}} {\sum_ {j = 1} ^ {k} e ^ {- \beta z_ {j}}}}

رابطه ۳

رابطه‌های بالا (رابطه ۲ و ۳) به ازای i=1,,ki = 1 , \ldots ,k برقرار خواهند بود. در بعضی از زمینه‌ها یا حوزه‌های علوم، پایه برای تابع بیشینه هموار، ثابت در نظر گرفته می‌شود ولی گاهی اوقات نیز پارامترها β\beta تغییرپذیر خواهند بود.

تاریخچه تابع بیشینه هموار

از تابع بیشینه هموار، در «مکانیک آماری» (Statistical Mechanic) در «توزیع بولتزمان» (Boltzmman Distribution) که در مقاله بنیادی او در سال 1868 منتشر شد، استفاده شده است. همچنین در کتاب معروف و تاثیر گذار «گیبس» (Gibbs) در سال ۱۹۰۸ نیز تابع بیشینه هموار به کار رفته و برای حل مسائل مرتبط با سیستم‌های مبتنی بر مکانیک آماری و ترمودینامیک آماری، امری ضروری تلقی شده‌اند.

استفاده از تابع بیشینه هموار در «نظریه تصمیم» (Decision Theory)  نیز استفاده می‌شود. کارهایی که «دنکان لوسه» (Duncan Luce) در سال ۱۹۵9 انجام داد، باعث استفاده از شرط استقلال در «نظریه انتخاب منطقی» (Rational Choice Theory) شد. او در این زمینه از تابع بیشینه هموار برای ترجیح نسبی استفاده کرد.

در سال ۱۹۹۰ «جان بریدل» (John Bridle) برای الگوریتم‌های یادگیری ماشین، از تابع بیشینه هموار بهره گرفت و نشان داد که برای شبکه‌های عصبی غیر خطی یا پرسپترون‌های چند لایه (MLP)، استفاده از تابع بیشینه هموار، می‌تواند نتیجه بسیار بهتری ارائه کند. او این موضوع را به صورت زیر بیان کرد.

ما در حوزه شبکه‌های غیر خطی پیشخور (پرسپترون چند لایه یا MLP) با چندین خروجی مواجه هستیم و می‌خواهیم خروجی‌های شبکه را به عنوان احتمال گزینه‌ها (به عنوان مثال کلاس‌های الگو)، به شکل تابعی از ورودی‌ها، در نظر بگیریم. همچنین به دنبال پیدا کردن تابعی غیر خطی به عنوان خروجی مناسب هستیم تا معیارهای مناسب برای انطباق با پارامترهای شبکه (مثلا ضرایب وزنی برای گره‌ها) را دارا باشد.  این کار بوسیله دو تغییر اجرا می‌شود. «امتیازدهی احتمالی» (probability scoring)، که جایگزینی برای به «کمینه سازی مربع خطا» (squared error minimization) است و دیگری «نرمال سازی نمایی بیشینه هموار» (softmax) روی ورودی‌های چند متغیر از نوع لجستیک غیر خطی.

خروجی‌های حاصل برای هر ورودی، بای مثبت بوده و مجموع همه آن‌ها باید برابر با یک باشد. با توجه به مجموعه مقادیر مثل VjV_{j} که بدون هیچ محدودیت در نظر گرفته می‌شوند، می‌توان این دو تغییر را با استفاده از یک «تابع نمایی نرمال شده» (Normalized Exponential transformation) به صورت زیر ایجاد کرد.

Qj(x)=eVj(x)/keVk(x) \large {\displaystyle Q_{j} (x) = \left.e ^{V_ {j} (x)} \right/ \sum_ {k} e ^ {V_{k} (x)}}

رابطه ۴

این تغییرات را می‌توان یک تعمیم از لجستیک با ورودهای چند متغیره در نظر گرفت که روی کل لایه خروجی اعمال می‌شود. به این ترتیب رتبه مقادیر ورودی حفظ شده و یک تعمیم جدید برای پیدا کردن مقدار حداکثر ارائه می‌دهد. به همین دلیل از واژه «بیشینه هموار» (Softmax) برای آن استفاده می‌کنیم.

تابع آرگومان حداکثر

شاید به نظر نام تابع «بیشینه هموار» (softmax) قدری گمراه کننده باشد و به نظر برسد که با تابعی مواجه هستیم که به طور مجانبی به سمت مقدار حداکثر میل می‌کند. باید توجه داشت که منظور از این عبارت، اشاره به یک تابع حداکثر صاف یا هموار نیست، بلکه به کمک این تابع «آرگومان» (Argument) یا شماره (ترتیب) مقداری از دامنه تابع را پیدا می‌کنیم که تابع را حداکثر می‌کند.

از طرفی مفهوم تابع بیشینه هموار کاملا با عملکرد تابع LogSumExp یا «لگاریتم مجموع عبارت‌های توانی»، ارتباط دارد. به همین دلیل گاهی افراد به جای تابع softmax از softargmax استفاده می‌کنند. البته در حوزه یادگیری ماشین بیشتر از اصطلاح softmax برای این تابع استفاده می‌شود.

این بار تعریف رسمی‌تری برای تابع softargmax معرفی می‌کنیم. ورودی‌های ziz_i را به یاد دارید. فرض کنید تابع softmax یا همان softargmax این ورودی را دریافت کرده و یک بردار از مقادیر به صورت yiy_i ارائه می‌دهد. به این ترتیب رابطه زیر را خواهیم داشت.

arg max(z1,,zn)=(y1,,yn)=(0,,0,1,0,,0) \large {\displaystyle \operatorname {arg \, max} (z_{1}, \cdots , z_{n}) = (y_{1} , \cdots, y_n}) = (0 , \cdots, \, 0,1 , 0 , \cdots, 0)

رابطه ۵

که در آن مختصات خروجی یعنی yi=1\displaystyle y_{i} = 1 است، اگر و فقط اگر ii، شماره آرگومان یا مولفه‌ای باشد که مقدار حداکثر zzها را نشان می‌دهد و در بقیه موارد، مقدار yi=0\displaystyle y_i = 0 است.

برای مثال تابع arg max را برای بردار (1,5,10)(1,5,10) در نظر بگیرید. واضح است که رابطه زیر برقرار خواهد بود. زیرا بزرگترین مقدار بردار، سومین مقدار آن است.

arg max(1,5,10)=(0,0,1)\large{ \displaystyle \operatorname{arg\,max} (1,5,10)=(0,0,1) }

البته توجه داشته باشید که تابع معرفی شده، فقط در زمانی که بزرگترین مقدار تکراری نباشد، قابل استفاده است. برای برداری از مشاهدات مثل ziz_i ‌احتیاج به یک تعمیم برای تعریف ارائه شده داریم تا در زمانی که مقادیر تکراری وجود داشته باشد، از آن کمک بگیریم.

به این ترتیب حالتی را در نظر بگیرید که چندین مقدار از ziz_i، حداکثر مقدار را داشته باشند. واضح است که همگی آن‌ها باید با یکدیگر برابر باشند. در این وضعیت، تابع argmax را برای چنین مشاهداتی از تقسیم ۱ بر تعداد مقدار حداکثر (مثل kk) بدست می‌آوریم.

در نظر بگیرید که برداری به صورت z=(0,5,5)z=(0, 5 , 5) داریم. از ‌آنجایی مقدار حداکثر، دارای فراوانی به اندازه k=2k=2 است، مقدار تابع argmax را برای آن‌ها به صورت 1/k1/k در نظر می‌گیریم و خواهیم داشت:

arg max(0,5,5)=(0,1/2,1/2) \large {\displaystyle \operatorname {arg\, max} (0 , 5 , 5) = ( 0 , 1/2, 1/2)}

زیرا آرگومان دوم و سوم، مقادیر حداکثر بردار را نشان داده و تعدادشان برابر با ۲ است. پس برای هر یک از آن‌ها مقدار تابع arg max برابر با 12\dfrac{1}{2} خواهد بود و برای بقیه مقادیر، صفر در نظر گرفته می‌شود.

در صورت برابر بودن همه آرگومان‌ها، به رابطه arg max(z,,z)=(1/n,,1/​​n) \displaystyle \operatorname {arg \, max} (z, \dots, z) = (1 / n, \dots, 1/​​n) خواهیم رسید. واضح است که چنین تابعی، یک تابع پیوسته نبوده و در نقاط نابرابر، دارای شکستگی خواهد بود.

به این ترتیب می‌توان تابع argmax را یک تقریب هموار برای تابع softargmax در نظر گرفت. زمانی که β\beta \to \infty بهترین تقریب برای رابطه ۲، شکل می‌گیرد. البته باید توجه داشت که تابع softargmax یک تابع پیوسته است ولی تابع argmax پیوسته نیست.

به عنوان مثال، σβ(1,1.0001)(0,1) {\displaystyle \sigma_{\beta} (1,1.0001) \to (0,1) } اما σβ(1,0.9999)(1,0) {\displaystyle \sigma_{\beta} (1, 0.9999) \to (1,0) } و σβ(1،1)=1/2 \sigma_ {\beta} (1،1) = 1/2 .

پس برای همه ورودی‌ها، هرچه امتیازها نزدیکتر باشند به مجموعه منفرد (x،x){\displaystyle (x، x)}، سرعت همگرایی کندتر می‌شود. با این حال، تابع softargmax به طور فشرده به یک در مجموعه غیر منفرد، همگرا می‌شود.

برعکس، اگر β\beta \to -\infty، آنگاه تابع softargmax به کوچکترین آرگومان (arg min) همگرا خواهد بود. در اینجا، مجموعه منفرد، شامل دو مقدار حداقل است.

همچنین برای هر β\beta ثابت، اگر یک ورودی zi {\displaystyle z_{i}} نسبت به دما (TT)، خیلی بزرگ باشد، (T=1βT = \dfrac{1}{\beta})، آنگاه، خروجی تقریباً arg max خواهد بود. به عنوان مثال، اختلاف 10 نسبت به دمای 1 زیاد است، پس داریم:

بر اساس رای ۱۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Wikipediaمجله فرادرس
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *