
যখনই আমরা নিউরাল নেটওয়ার্কে একটি শ্রেণীবদ্ধকরণ সমস্যা চালাই তখন আমরা সর্বদা "সফটম্যাক্স" শব্দটিকে দেখি। আমরা সবাই জানতাম এটি একটি অ্যাক্টিভেশন ফাংশন, কিন্তু পর্দার পিছনে আসলে কি? আসুন সফটম্যাক্স এর গল্প শুনুন ..
এর আগে আমাদের বুঝতে হবে কেন আমাদের এমন একটি ফাংশন দরকার। যদি আমাদের উত্তরের উত্তরগুলি "হ্যাঁ" / "না" লেখে তবে আমাদের কোনও পদক্ষেপের সম্ভাব্যতা পূর্বাভাসের প্রয়োজন হয় যাতে আমাদের ধাপে ফাংশন এবং সিগময়েড ফাংশন থাকে। যদি আপনি তাদের সম্পর্কে কোনও মন্তব্য না করেন তবে আমিও তাদের সম্পর্কে লিখব।
কিন্তু ক্লাসিফিকেশন করার জন্য আমাদের আরো ক্লাস আছে কি না। আমাদের একটি মডেল তৈরি করতে হবে যা আমাদেরকে বলে দেয় যে আমরা আমাদের ক্যামেরাতে কোন প্রাণীকে ধরে রেখেছি। প্রাণী এবং সম্ভাব্যতা অনুমান করা হয়,
- Dog: P(Dog) = 0.67
- Cat: P(Cat) = 0.24
- Lion: P(Lion) = 0.09
উল্লেখ্য, সম্ভাব্যতাগুলিতে 1 যোগ করতে হবে, অর্থাৎ সমষ্টি (P (সমস্ত ক্লাস) = 1, এবং কল্পনা করুন আমাদের একটি রৈখিক মডেল রয়েছে যা teeth, tail, color, fang, hair and etc. ইত্যাদি বৈশিষ্ট্যগুলির একটি সেট সহ এই তিনটি প্রাণীকে পূর্বাভাস দেয়। আমরা বৈশিষ্ট্যগুলির উপর ভিত্তি করে রৈখিক ফাংশন গণনা করতে পারি এবং অনুমান করতে পারি যে আমাদের এই স্কোর/ হিসাব আছে,
- Dog get the score of 2
- Cat get the score of 1
- Lion get the score of 0
দ্রষ্টব্য: যদি আমাদের রৈখিক সীমানাটি y = b + w1x1 + w2x2 + ...... দ্বারা উপস্থাপিত হয় ...... wnxn + b। স্কোর b, w, এবং x প্রতিস্থাপন আউটপুট হয়। (তথ্য পয়েন্ট সমন্বয়)
এখন প্রশ্ন হচ্ছে আমরা কিভাবে এই স্কোরগুলিকে সম্ভাব্যতাতে পরিণত করতে পারি?
মনে করি, আমাদের দুটি শর্ত পূরণ করতে হবে,
- The probabilities have to sum up to 1/সম্ভাবনা 1 পর্যন্ত সমষ্টি আছে
- Since the Dog has the highest score than the Cat & Lion, it has to get a higher probability and likewise.কুকুর ও সিংহের চেয়ে কুকুরের সর্বোচ্চ স্কোর আছে, তাই এটি উচ্চ সম্ভাবনা এবং একইভাবে পেতে হবে।
আমরা সব মনে করি একটি সহজ উপায় স্কোর (x) / Sum (all স্কোর), কিন্তু সেখানে একটি আমরা সমস্যা পেতে পারি । প্রাণী একটি নেতিবাচক স্কোর আছে কি? সম্ভাবনা নেতিবাচক হতে পারে না এবং দ্বিতীয় সমস্যাটি যদি Sum (All Scores) = 0 আমাদের লিনিয়ার মডেলগুলিতে নেতিবাচক স্কোর পেতে পারি , তবে এটি সম্ভব এবং আমরা সবাই জানি যে, আমরা 0 দ্বারা একটি সংখ্যা ভাগ করতে পারব না।
তাহলে সমাধান কি? একটি ফাংশন যা ইতিবাচক নেতিবাচক মান চালু করতে পারেন?
অবশ্যই হ্যাঁ!, আমরা সবাই জানি যে, কোন মূল্যের সূচকটি ইতিবাচক মানগুলির ফলস্বরূপ হবে। সুতরাং স্কোর (x) / sum (সমস্ত স্কোর) এর পরিবর্তে চল চেষ্টা করি,
এখনে আউটপুট হয় exp (x) / sum (exp (all scores)) ,
- P(Dog) = exp(2)/(exp(2) + exp(1) + exp(0)) = 0.67
- P(Cat) = exp(1)/(exp(2) + exp(1) + exp(0)) = 0.24
- P(Dog) = exp(0)/(exp(2) + exp(1) + exp(0)) = 0.09
Hoorey !!!, আমরা তথাকথিত সফটম্যাক্স ফাংশন পিছনে seceret কিছু খুঁজে পাওয়া যায় নি।এবং সূচকীয় মানগুলি সর্বদা বৃদ্ধি পেয়েছে, কারণ আমাদের কুকুরের তুলনায় আরও দুটি সম্ভাব্য সম্ভাবনা রয়েছে, যেমনটি আমরা আশা করি সিংহের তুলনায় বিড়ালের জন্য উচ্চ সম্ভাবনা।
import numpy as np
L = [5,6,7]
def softmax(L): expL = np.exp(L) sumExpL = sum(expL) result = [] for i in expL: result.append(i*1.0/sumExpL) return result
print(softmax(L)
আশা করি আপনি সফটম্যাক ফাংশন পিছনে ধারণা বুঝতে পেরেছেন।
0 comments:
Post a Comment