پیش از این، با مدلهای طبقهبندی باینری مواجه بودید که میتوانستند یکی از دو گزینه ممکن را انتخاب کنند، مانند:
- ایمیل داده شده هرزنامه است یا هرزنامه نیست.
- تومور داده شده بدخیم یا خوش خیم است.
در این بخش، مدلهای طبقهبندی چند طبقه را بررسی میکنیم که میتوانند از چندین احتمال انتخاب کنند. به عنوان مثال:
- آیا این سگ یک بیگل، یک سگ شکاری یا یک سگ شکاری است؟
- آیا این گل زنبق سیبری، زنبق هلندی، زنبق با پرچم آبی یا زنبق ریشدار کوتوله است؟
- آیا آن هواپیما بوئینگ 747، ایرباس 320، بوئینگ 777 یا امبرائر 190 است؟
- آیا این تصویر یک سیب، خرس، آب نبات، سگ یا تخم مرغ است؟
برخی از مشکلات چند طبقه در دنیای واقعی مستلزم انتخاب از بین میلیون ها کلاس جداگانه است. به عنوان مثال، یک مدل طبقه بندی چند کلاسه را در نظر بگیرید که می تواند تصویر تقریباً هر چیزی را شناسایی کند.
این بخش دو نوع اصلی طبقه بندی چند طبقه را شرح می دهد:
- یک در مقابل همه
- one-vs.-one که معمولاً به عنوان softmax شناخته می شود
یکی در مقابل همه
یک در مقابل همه راهی برای استفاده از طبقه بندی باینری برای یک سری از پیش بینی های بله یا خیر در چندین برچسب ممکن ارائه می دهد.
با توجه به یک مسئله طبقهبندی با N راهحل ممکن، یک راهحل یک در مقابل همه از N طبقهبندیکننده باینری مجزا تشکیل شده است - یک طبقهبندی باینری برای هر نتیجه ممکن. در طول آموزش، مدل از طریق دنبالهای از طبقهبندیکنندههای باینری اجرا میشود و هر کدام را برای پاسخ به یک سؤال طبقهبندی جداگانه آموزش میدهد.
به عنوان مثال، با توجه به تصویری از یک میوه، چهار تشخیص دهنده مختلف ممکن است آموزش ببینند که هر کدام به یک سوال بله/خیر متفاوت پاسخ دهند:
- آیا این تصویر یک سیب است؟
- آیا این تصویر نارنجی است؟
- آیا این تصویر موز است؟
- آیا این تصویر انگور است؟
تصویر زیر نحوه عملکرد این روش را در عمل نشان می دهد.
![شکل 7. تصویری از گلابی که به عنوان ورودی به 4 مدل طبقه بندی کننده باینری مختلف منتقل می شود. مدل اول «سیب» یا «نه سیب» را پیشبینی میکند و پیشبینی آن «سیب نیست». مدل دوم «نارنجی» یا «نارنجی نیست» را پیشبینی میکند و پیشبینی آن «نارنجی نیست». مدل سوم «گلابی» یا «نه گلابی» را پیشبینی میکند و پیشبینی آن «گلابی» است. مدل چهارم «انگور» یا «نه انگور» را پیشبینی میکند و پیشبینی آن «انگور نیست».](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/one_vs_all_binary_classifiers.png?authuser=4&hl=fa)
این رویکرد زمانی که تعداد کل کلاس ها کم باشد نسبتا معقول است، اما با افزایش تعداد کلاس ها ناکارآمدتر می شود.
ما میتوانیم یک مدل یک در مقابل همه کارآمدتر با یک شبکه عصبی عمیق ایجاد کنیم که در آن هر گره خروجی یک کلاس متفاوت را نشان میدهد. تصویر زیر این رویکرد را نشان می دهد.
![شکل 8. یک شبکه عصبی با معماری زیر: لایه ورودی با 1 گره، لایه پنهان با 3 گره، لایه پنهان با 4 گره، لایه خروجی با 4 گره. گره ورودی با تصویری از گلابی تغذیه می شود. یک تابع فعال سازی سیگموئید به لایه خروجی اعمال می شود. هر گره خروجی نشان دهنده این احتمال است که تصویر یک میوه مشخص است. گره خروجی 1 نشان دهنده "آیا اپل است؟" و دارای مقدار 0.34 می باشد. گره خروجی 2 نشان دهنده "آیا نارنجی است؟" و دارای مقدار 0.18 می باشد. گره خروجی 3 نشان دهنده "آیا گلابی است؟" و دارای مقدار 0.84 می باشد. گره خروجی 4 نشان دهنده "آیا انگور است؟" و دارای مقدار 0.07 است.](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/one_vs_all_neural_net.png?authuser=4&hl=fa)
یک در مقابل یک (softmax)
ممکن است متوجه شده باشید که مقادیر احتمال در لایه خروجی شکل 8 به 1.0 (یا 100٪) جمع نمی شود. (در واقع، مجموع آنها 1.43 است.) در رویکرد یک در مقابل همه، احتمال هر مجموعه باینری از نتایج مستقل از همه مجموعه های دیگر تعیین می شود. یعنی ما در حال تعیین احتمال "سیب" در مقابل "نه سیب" بدون در نظر گرفتن احتمال گزینه های میوه دیگرمان هستیم: "پرتقال"، "گلابی" یا "انگور".
اما اگر بخواهیم احتمالات هر میوه را نسبت به یکدیگر پیش بینی کنیم چه؟ در این حالت، به جای پیش بینی «سیب» در مقابل «نه سیب»، می خواهیم «سیب» در مقابل «پرتقال» در مقابل «گلابی» در مقابل «انگور» را پیش بینی کنیم. این نوع طبقه بندی چند طبقه ای طبقه بندی یک در مقابل یک نامیده می شود.
ما می توانیم یک طبقه بندی یک در مقابل یک را با استفاده از همان نوع معماری شبکه عصبی مورد استفاده برای طبقه بندی یک در مقابل همه، با یک تغییر کلید پیاده سازی کنیم. باید یک تبدیل متفاوت در لایه خروجی اعمال کنیم.
برای یک در مقابل همه، تابع فعالسازی سیگموئید را برای هر گره خروجی بهطور مستقل اعمال کردیم، که منجر به یک مقدار خروجی بین 0 تا 1 برای هر گره شد، اما تضمین نکرد که این مقادیر دقیقاً به 1 جمع شوند.
برای یک در مقابل یک، میتوانیم به جای آن تابعی به نام softmax اعمال کنیم که احتمالات اعشاری را به هر کلاس در یک مسئله چند کلاسه اختصاص میدهد، به طوری که مجموع احتمالات به 1.0 میرسد. این محدودیت اضافی کمک می کند تا آموزش سریعتر از آنچه در غیر این صورت می شد، همگرا شود.
تصویر زیر وظیفه طبقهبندی چند طبقهای یک در مقابل همه را بهعنوان کار یک در مقابل یک دوباره پیادهسازی میکند. توجه داشته باشید که برای اجرای سافت مکس، لایه مخفی که مستقیماً قبل از لایه خروجی قرار دارد (که لایه سافت مکس نامیده می شود) باید به اندازه لایه خروجی گره داشته باشد.
![شکل 9. یک شبکه عصبی با معماری زیر: لایه ورودی با 1 گره، لایه پنهان با 3 گره، لایه پنهان با 4 گره، لایه خروجی با 4 گره. گره ورودی با تصویری از گلابی تغذیه می شود. یک تابع فعال سازی softmax به لایه خروجی اعمال می شود. هر گره خروجی نشان دهنده این احتمال است که تصویر یک میوه مشخص است. گره خروجی 1 نشان دهنده "آیا اپل است؟" و دارای مقدار 0.19 می باشد. گره خروجی 2 نشان دهنده "آیا نارنجی است؟" و دارای مقدار 0.12 می باشد. گره خروجی 3 نشان دهنده "آیا گلابی است؟" و دارای مقدار 0.63 می باشد. گره خروجی 4 نشان دهنده "آیا انگور است؟" و دارای مقدار 0.06 است.](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/one_vs_one_neural_net.png?authuser=4&hl=fa)
گزینه های سافت مکس
انواع زیر softmax را در نظر بگیرید:
سافت مکس کامل ، سافت مکسی است که در مورد آن صحبت کردیم. یعنی softmax یک احتمال را برای هر کلاس ممکن محاسبه می کند.
نمونه گیری کاندید به این معنی است که softmax یک احتمال را برای همه برچسب های مثبت محاسبه می کند اما فقط برای یک نمونه تصادفی از برچسب های منفی. به عنوان مثال، اگر ما علاقه مندیم که تشخیص دهیم یک تصویر ورودی یک بیگل است یا یک سگ خونی، لازم نیست برای هر نمونه غیر سگی احتمالاتی ارائه کنیم.
softmax کامل زمانی که تعداد کلاسها کم است نسبتاً ارزان است، اما زمانی که تعداد کلاسها افزایش مییابد بسیار گران میشود. نمونه گیری کاندیدا می تواند کارایی را در مسائلی که تعداد کلاس های زیادی دارند بهبود بخشد.
یک برچسب در مقابل بسیاری از برچسب ها
Softmax فرض می کند که هر مثال دقیقاً عضوی از یک کلاس است. با این حال، برخی از نمونه ها می توانند به طور همزمان عضوی از چندین کلاس باشند. برای چنین نمونه هایی:
- ممکن است از softmax استفاده نکنید.
- شما باید بر رگرسیون های لجستیک متعدد تکیه کنید.
به عنوان مثال، مدل یک در مقابل یک در شکل 9 در بالا فرض می کند که هر تصویر ورودی دقیقاً یک نوع میوه را به تصویر می کشد: یک سیب، یک پرتقال، یک گلابی یا یک انگور. با این حال، اگر یک تصویر ورودی ممکن است حاوی چندین نوع میوه باشد - یک کاسه سیب و پرتقال - باید به جای آن از چندین رگرسیون لجستیک استفاده کنید.