এর আগে, আপনি বাইনারি শ্রেণীবিভাগের মডেলগুলির সম্মুখীন হয়েছেন যা দুটি সম্ভাব্য পছন্দের মধ্যে একটি বেছে নিতে পারে, যেমন কিনা:
- একটি প্রদত্ত ইমেল স্প্যাম বা স্প্যাম নয়৷
- একটি প্রদত্ত টিউমার ম্যালিগন্যান্ট বা সৌম্য।
এই বিভাগে, আমরা বহু-শ্রেণীর শ্রেণিবিন্যাসের মডেলগুলি তদন্ত করব, যা একাধিক সম্ভাবনা থেকে বেছে নিতে পারে। যেমন:
- এই কুকুরটি কি বিগল, একটি বাসেট হাউন্ড বা ব্লাডহাউন্ড?
- এই ফুলটি কি সাইবেরিয়ান আইরিস, ডাচ আইরিস, ব্লু ফ্ল্যাগ আইরিস, বা বামন দাড়িওয়ালা আইরিস?
- সেই বিমানটি কি বোয়িং ৭৪৭, এয়ারবাস ৩২০, বোয়িং ৭৭৭, নাকি এমব্রার ১৯০?
- এটি কি আপেল, ভালুক, মিছরি, কুকুর বা ডিমের ছবি?
কিছু বাস্তব-বিশ্বের বহু-শ্রেণির সমস্যা লক্ষ লক্ষ আলাদা ক্লাস থেকে বেছে নেওয়ার অন্তর্ভুক্ত। উদাহরণস্বরূপ, একটি মাল্টি-ক্লাস শ্রেণীবিভাগ মডেল বিবেচনা করুন যা প্রায় যেকোনো কিছুর চিত্র সনাক্ত করতে পারে।
এই বিভাগটি মাল্টি-ক্লাস শ্রেণীবিভাগের দুটি প্রধান রূপের বিবরণ দেয়:
- এক বনাম সব
- এক-বনাম-এক , যা সাধারণত সফটম্যাক্স নামে পরিচিত
এক বনাম সব
এক-বনাম-সমস্ত একাধিক সম্ভাব্য লেবেল জুড়ে হ্যাঁ বা না ভবিষ্যদ্বাণীগুলির সিরিজের জন্য বাইনারি শ্রেণীবিভাগ ব্যবহার করার একটি উপায় প্রদান করে।
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=bn)
এই পদ্ধতিটি মোটামুটি যুক্তিসঙ্গত যখন ক্লাসের মোট সংখ্যা কম, কিন্তু ক্লাসের সংখ্যা বাড়ার সাথে সাথে ক্রমবর্ধমান অদক্ষ হয়ে ওঠে।
আমরা একটি গভীর নিউরাল নেটওয়ার্ক সহ একটি উল্লেখযোগ্যভাবে আরও দক্ষ এক-বনাম-সমস্ত মডেল তৈরি করতে পারি যেখানে প্রতিটি আউটপুট নোড একটি ভিন্ন শ্রেণীর প্রতিনিধিত্ব করে। নিম্নলিখিত চিত্রটি এই পদ্ধতির চিত্র তুলে ধরে।
![চিত্র 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=bn)
এক বনাম এক (সফটম্যাক্স)
আপনি হয়তো লক্ষ্য করেছেন যে চিত্র 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=bn)
Softmax অপশন
সফটম্যাক্সের নিম্নলিখিত রূপগুলি বিবেচনা করুন:
সম্পূর্ণ সফটম্যাক্স হল সেই সফটম্যাক্স যা আমরা আলোচনা করছি; অর্থাৎ, softmax প্রতিটি সম্ভাব্য শ্রেণীর জন্য একটি সম্ভাব্যতা গণনা করে।
প্রার্থীর নমুনা নেওয়ার মানে হল যে softmax সমস্ত ইতিবাচক লেবেলের জন্য একটি সম্ভাব্যতা গণনা করে কিন্তু শুধুমাত্র নেতিবাচক লেবেলের একটি এলোমেলো নমুনার জন্য। উদাহরণস্বরূপ, যদি আমরা একটি ইনপুট চিত্র একটি বিগল বা ব্লাডহাউন্ড কিনা তা নির্ধারণ করতে আগ্রহী, আমাদের প্রতিটি নন-ডগি উদাহরণের জন্য সম্ভাব্যতা প্রদান করতে হবে না।
ক্লাশের সংখ্যা কম হলে সম্পূর্ণ সফটম্যাক্স মোটামুটি সস্তা কিন্তু ক্লাসের সংখ্যা বেড়ে গেলে নিষেধাজ্ঞামূলকভাবে ব্যয়বহুল হয়ে ওঠে। প্রচুর সংখ্যক ক্লাস থাকার সমস্যায় প্রার্থীর নমুনা দক্ষতার উন্নতি করতে পারে।
একটি লেবেল বনাম অনেক লেবেল
Softmax অনুমান করে যে প্রতিটি উদাহরণ ঠিক একটি শ্রেণীর সদস্য। কিছু উদাহরণ, তবে, একই সাথে একাধিক শ্রেণীর সদস্য হতে পারে। এই ধরনের উদাহরণের জন্য:
- আপনি সফটম্যাক্স ব্যবহার করতে পারবেন না।
- আপনাকে একাধিক লজিস্টিক রিগ্রেশনের উপর নির্ভর করতে হবে।
উদাহরণস্বরূপ, উপরের চিত্র 9-এ এক-বনাম-এক মডেল অনুমান করে যে প্রতিটি ইনপুট চিত্র ঠিক এক ধরনের ফল চিত্রিত করবে: একটি আপেল, একটি কমলা, একটি নাশপাতি বা একটি আঙ্গুর৷ যাইহোক, যদি একটি ইনপুট ইমেজে একাধিক ধরনের ফল থাকতে পারে—একটি বাটি আপেল এবং কমলালেবুর—তার পরিবর্তে আপনাকে একাধিক লজিস্টিক রিগ্রেশন ব্যবহার করতে হবে।