تابع بیشینه هموار (Softmax) چیست؟ | به زبان ساده
بحث نرمالسازی یا استاندارد سازی دادهها، برای مقایسه و به کارگیری روشهای آماری چند متغیره، مانند «خوشهبندی» (Clustering) و «ردهبندی» (Classification) اهمیت زیادی دارد. توابع و روشهای مختلفی برای انجام این کار وجود دارد. در این نوشتار به تابع بیشینه هموار (softmax) خواهیم پرداخت و خصوصیات آن را مورد بررسی قرار میدهیم.
به منظور آشنایی بیشتر با مفهوم استاندارد یا نرمال سازی بهتر است مطالب دیگر مجله فرادرس مانند توزیع بولتزمان در ترمودینامیک آماری— به زبان ساده و روشهای استاندارد سازی دادهها را مطالعه کنید. همچنین خواندن مطالب انحراف استاندارد و خطای استاندارد — از صفر تا صد و متغیر تصادفی، تابع احتمال و تابع توزیع احتمال نیز خالی از لطف نیست.
تابع بیشینه هموار
تابع بیشینه هموار (Softmax Fucntion)، همچنین به عنوان softargmax یا «تابع نمایی نرمال شده» (normalized exponential function)، شناخته میشود. از طرفی این تابع را تعمیمیافته «تابع لجستیک» (Logistic Function) در حالت چند بُعدی محسوب میکنند. همچنین از آن در «رگرسیون لجستیک چند جملهای» (Multinomial Logistic Regression) استفاده میشود و غالباً به عنوان آخرین «تابع فعالسازی» (Activation Function) برای یک «شبکه عصبی» (Neural Network) برای نرمال سازی خروجی شبکه و تبدیل آن به توزیع احتمال بهره میبرند. نرمال سازی در این حالت نسبت به کلاسهای خروجی پیش بینی شده، صورت میگیرد.
تابع بیشینه هموار، به عنوان ورودی یک بردار از عدد حقیقی را میگیرد و آن را به یک توزیع احتمال تبدیل میکند که متشکل از احتمال متناسب با نمای اعداد ورودی هستند. این امر به این معنی است که قبل از استفاده از تابع بیشینه هموار (Softmax)، بعضی از اجزای بردار ممکن است منفی یا بیشتر از یک باشند. اما بعد از استفاده از تابع بیشینه هموار، هر مولفه در بازه قرار میگیرد بطوری که مجموع آنها برابر با ۱ باشد. بنابراین میتوان آنها را به عنوان مقدار احتمال تفسیر کرد. علاوه بر این، ورودیهای با مقادیر بزرگتر، دارای احتمال بیشتر نیز خواهند بود.
تابع استاندارد بیشینه هموار که گاهی به آن «تابع بیشینه هموار واحد» (Unit Softmax Function) نیز گفته میشود، به صورت زیر تعریف میشود.
رابطه ۱
توجه داشته باشید که در تعریف شده است.
توجه داشته باشید که برای هر عنصر از بردار ورودی ، تابع نمایی استاندارد اعمال شده است و تقسیم کردن هر مقدار بر مجموع تمامی آنها، باعث نرمال شدن شده و اطمینان میدهد که مجموع اجزای بردار خروجی یک خواهد بود.
البته به جای استفاده از عدد نیر () به عنوان پایه تابع نمایی، میتوان از یک پایه متفاوت مثل نیز استفاده کرد. انتخاب مقدار بزرگ برای باعث میشود که توزیع احتمالی، چگالی مقادیر خروجی، حول مقادیر بزرگتر، بیشتر شود. به این ترتیب برای مقدار حقیقی ، به صورت یا خواهیم داشت:
رابطه ۲
یا
رابطه ۳
رابطههای بالا (رابطه ۲ و ۳) به ازای برقرار خواهند بود. در بعضی از زمینهها یا حوزههای علوم، پایه برای تابع بیشینه هموار، ثابت در نظر گرفته میشود ولی گاهی اوقات نیز پارامترها تغییرپذیر خواهند بود.
تاریخچه تابع بیشینه هموار
از تابع بیشینه هموار، در «مکانیک آماری» (Statistical Mechanic) در «توزیع بولتزمان» (Boltzmman Distribution) که در مقاله بنیادی او در سال 1868 منتشر شد، استفاده شده است. همچنین در کتاب معروف و تاثیر گذار «گیبس» (Gibbs) در سال ۱۹۰۸ نیز تابع بیشینه هموار به کار رفته و برای حل مسائل مرتبط با سیستمهای مبتنی بر مکانیک آماری و ترمودینامیک آماری، امری ضروری تلقی شدهاند.
استفاده از تابع بیشینه هموار در «نظریه تصمیم» (Decision Theory) نیز استفاده میشود. کارهایی که «دنکان لوسه» (Duncan Luce) در سال ۱۹۵9 انجام داد، باعث استفاده از شرط استقلال در «نظریه انتخاب منطقی» (Rational Choice Theory) شد. او در این زمینه از تابع بیشینه هموار برای ترجیح نسبی استفاده کرد.
در سال ۱۹۹۰ «جان بریدل» (John Bridle) برای الگوریتمهای یادگیری ماشین، از تابع بیشینه هموار بهره گرفت و نشان داد که برای شبکههای عصبی غیر خطی یا پرسپترونهای چند لایه (MLP)، استفاده از تابع بیشینه هموار، میتواند نتیجه بسیار بهتری ارائه کند. او این موضوع را به صورت زیر بیان کرد.
ما در حوزه شبکههای غیر خطی پیشخور (پرسپترون چند لایه یا MLP) با چندین خروجی مواجه هستیم و میخواهیم خروجیهای شبکه را به عنوان احتمال گزینهها (به عنوان مثال کلاسهای الگو)، به شکل تابعی از ورودیها، در نظر بگیریم. همچنین به دنبال پیدا کردن تابعی غیر خطی به عنوان خروجی مناسب هستیم تا معیارهای مناسب برای انطباق با پارامترهای شبکه (مثلا ضرایب وزنی برای گرهها) را دارا باشد. این کار بوسیله دو تغییر اجرا میشود. «امتیازدهی احتمالی» (probability scoring)، که جایگزینی برای به «کمینه سازی مربع خطا» (squared error minimization) است و دیگری «نرمال سازی نمایی بیشینه هموار» (softmax) روی ورودیهای چند متغیر از نوع لجستیک غیر خطی.
خروجیهای حاصل برای هر ورودی، بای مثبت بوده و مجموع همه آنها باید برابر با یک باشد. با توجه به مجموعه مقادیر مثل که بدون هیچ محدودیت در نظر گرفته میشوند، میتوان این دو تغییر را با استفاده از یک «تابع نمایی نرمال شده» (Normalized Exponential transformation) به صورت زیر ایجاد کرد.
رابطه ۴
این تغییرات را میتوان یک تعمیم از لجستیک با ورودهای چند متغیره در نظر گرفت که روی کل لایه خروجی اعمال میشود. به این ترتیب رتبه مقادیر ورودی حفظ شده و یک تعمیم جدید برای پیدا کردن مقدار حداکثر ارائه میدهد. به همین دلیل از واژه «بیشینه هموار» (Softmax) برای آن استفاده میکنیم.
تابع آرگومان حداکثر
شاید به نظر نام تابع «بیشینه هموار» (softmax) قدری گمراه کننده باشد و به نظر برسد که با تابعی مواجه هستیم که به طور مجانبی به سمت مقدار حداکثر میل میکند. باید توجه داشت که منظور از این عبارت، اشاره به یک تابع حداکثر صاف یا هموار نیست، بلکه به کمک این تابع «آرگومان» (Argument) یا شماره (ترتیب) مقداری از دامنه تابع را پیدا میکنیم که تابع را حداکثر میکند.
از طرفی مفهوم تابع بیشینه هموار کاملا با عملکرد تابع LogSumExp یا «لگاریتم مجموع عبارتهای توانی»، ارتباط دارد. به همین دلیل گاهی افراد به جای تابع softmax از softargmax استفاده میکنند. البته در حوزه یادگیری ماشین بیشتر از اصطلاح softmax برای این تابع استفاده میشود.
این بار تعریف رسمیتری برای تابع softargmax معرفی میکنیم. ورودیهای را به یاد دارید. فرض کنید تابع softmax یا همان softargmax این ورودی را دریافت کرده و یک بردار از مقادیر به صورت ارائه میدهد. به این ترتیب رابطه زیر را خواهیم داشت.
رابطه ۵
که در آن مختصات خروجی یعنی است، اگر و فقط اگر ، شماره آرگومان یا مولفهای باشد که مقدار حداکثر ها را نشان میدهد و در بقیه موارد، مقدار است.
برای مثال تابع arg max را برای بردار در نظر بگیرید. واضح است که رابطه زیر برقرار خواهد بود. زیرا بزرگترین مقدار بردار، سومین مقدار آن است.
البته توجه داشته باشید که تابع معرفی شده، فقط در زمانی که بزرگترین مقدار تکراری نباشد، قابل استفاده است. برای برداری از مشاهدات مثل احتیاج به یک تعمیم برای تعریف ارائه شده داریم تا در زمانی که مقادیر تکراری وجود داشته باشد، از آن کمک بگیریم.
به این ترتیب حالتی را در نظر بگیرید که چندین مقدار از ، حداکثر مقدار را داشته باشند. واضح است که همگی آنها باید با یکدیگر برابر باشند. در این وضعیت، تابع argmax را برای چنین مشاهداتی از تقسیم ۱ بر تعداد مقدار حداکثر (مثل ) بدست میآوریم.
در نظر بگیرید که برداری به صورت داریم. از آنجایی مقدار حداکثر، دارای فراوانی به اندازه است، مقدار تابع argmax را برای آنها به صورت در نظر میگیریم و خواهیم داشت:
زیرا آرگومان دوم و سوم، مقادیر حداکثر بردار را نشان داده و تعدادشان برابر با ۲ است. پس برای هر یک از آنها مقدار تابع arg max برابر با خواهد بود و برای بقیه مقادیر، صفر در نظر گرفته میشود.
در صورت برابر بودن همه آرگومانها، به رابطه خواهیم رسید. واضح است که چنین تابعی، یک تابع پیوسته نبوده و در نقاط نابرابر، دارای شکستگی خواهد بود.
به این ترتیب میتوان تابع argmax را یک تقریب هموار برای تابع softargmax در نظر گرفت. زمانی که بهترین تقریب برای رابطه ۲، شکل میگیرد. البته باید توجه داشت که تابع softargmax یک تابع پیوسته است ولی تابع argmax پیوسته نیست.
به عنوان مثال، اما و .
پس برای همه ورودیها، هرچه امتیازها نزدیکتر باشند به مجموعه منفرد ، سرعت همگرایی کندتر میشود. با این حال، تابع softargmax به طور فشرده به یک در مجموعه غیر منفرد، همگرا میشود.
برعکس، اگر ، آنگاه تابع softargmax به کوچکترین آرگومان (arg min) همگرا خواهد بود. در اینجا، مجموعه منفرد، شامل دو مقدار حداقل است.
همچنین برای هر ثابت، اگر یک ورودی نسبت به دما ()، خیلی بزرگ باشد، ()، آنگاه، خروجی تقریباً arg max خواهد بود. به عنوان مثال، اختلاف 10 نسبت به دمای 1 زیاد است، پس داریم: