আধুনিক নিউরাল নেটওয়ার্কের মতো কিছু তৈরি করার প্রথম প্রচেষ্টা করেছিলেন ফ্রাঙ্ক রোজেনব্ল্যাট, কর্নেল এরোনটিক্যাল ল্যাবরেটরি থেকে, ১৯৫৭ সালে। এটি একটি হার্ডওয়্যার বাস্তবায়ন ছিল, যার নাম ছিল "মার্ক-১", যা ত্রিভুজ, বর্গক্ষেত্র এবং বৃত্তের মতো প্রাথমিক জ্যামিতিক আকার চিহ্নিত করার জন্য ডিজাইন করা হয়েছিল।
![]() |
![]() |
ছবি উইকিপিডিয়া থেকে
একটি ইনপুট ইমেজ ২০x২০ ফটোসেল অ্যারে দ্বারা উপস্থাপিত হয়েছিল, তাই নিউরাল নেটওয়ার্কের ৪০০টি ইনপুট এবং একটি বাইনারি আউটপুট ছিল। একটি সাধারণ নেটওয়ার্কে একটি নিউরন ছিল, যাকে থ্রেশহোল্ড লজিক ইউনিটও বলা হয়। নিউরাল নেটওয়ার্কের ওজন পটেনশিওমিটারের মতো কাজ করত, যা প্রশিক্ষণের সময় ম্যানুয়ালি সামঞ্জস্য করতে হতো।
✅ একটি পটেনশিওমিটার এমন একটি ডিভাইস যা ব্যবহারকারীকে একটি সার্কিটের রেজিস্ট্যান্স সামঞ্জস্য করতে দেয়।
নিউ ইয়র্ক টাইমস সেই সময় পারসেপট্রন সম্পর্কে লিখেছিল: একটি ইলেকট্রনিক কম্পিউটারের ভ্রূণ যা [নেভি] আশা করে হাঁটতে, কথা বলতে, দেখতে, লিখতে, নিজেকে পুনরুৎপাদন করতে এবং তার অস্তিত্ব সম্পর্কে সচেতন হতে সক্ষম হবে।
ধরা যাক আমাদের মডেলে Nটি বৈশিষ্ট্য রয়েছে, সেক্ষেত্রে ইনপুট ভেক্টরটি হবে N আকারের একটি ভেক্টর। একটি পারসেপট্রন একটি বাইনারি ক্লাসিফিকেশন মডেল, অর্থাৎ এটি ইনপুট ডেটার দুটি শ্রেণি আলাদা করতে পারে। আমরা ধরে নেব যে প্রতিটি ইনপুট ভেক্টর x-এর জন্য আমাদের পারসেপট্রনের আউটপুট হয় +1 অথবা -1 হবে, শ্রেণির উপর নির্ভর করে। আউটপুটটি নিম্নলিখিত সূত্র ব্যবহার করে গণনা করা হবে:
y(x) = f(wTx)
যেখানে f একটি স্টেপ অ্যাক্টিভেশন ফাংশন
পারসেপট্রন প্রশিক্ষণ করতে আমাদের এমন একটি ওজন ভেক্টর w খুঁজে বের করতে হবে যা বেশিরভাগ মান সঠিকভাবে শ্রেণিবদ্ধ করে, অর্থাৎ সবচেয়ে কম ত্রুটি তৈরি করে। এই ত্রুটি E পারসেপট্রন ক্রাইটেরিয়া দ্বারা নিম্নলিখিতভাবে সংজ্ঞায়িত করা হয়:
E(w) = -∑wTxiti
যেখানে:
- যোগফলটি সেই প্রশিক্ষণ ডেটা পয়েন্টগুলির উপর নেওয়া হয় যা ভুল শ্রেণিবিন্যাসের ফলাফল দেয়
- xi হল ইনপুট ডেটা, এবং ti হল যথাক্রমে নেতিবাচক এবং ইতিবাচক উদাহরণের জন্য -1 বা +1।
এই ক্রাইটেরিয়াকে ওজন w-এর একটি ফাংশন হিসেবে বিবেচনা করা হয়, এবং আমাদের এটি কমাতে হবে। প্রায়ই, গ্রেডিয়েন্ট ডিসেন্ট নামে একটি পদ্ধতি ব্যবহার করা হয়, যেখানে আমরা কিছু প্রাথমিক ওজন w(0) দিয়ে শুরু করি এবং তারপর প্রতিটি ধাপে নিম্নলিখিত সূত্র অনুযায়ী ওজন আপডেট করি:
w(t+1) = w(t) - η∇E(w)
এখানে η হল তথাকথিত লার্নিং রেট, এবং ∇E(w) হল E-এর গ্রেডিয়েন্ট। গ্রেডিয়েন্ট গণনা করার পরে, আমরা পাই:
w(t+1) = w(t) + ∑ηxiti
পাইথনে অ্যালগরিদমটি দেখতে এমন হবে:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # Initialize weights (almost randomly :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # compute perceptron output
if z < 0: # positive example classified as negative
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # negative example classified as positive
weights = weights - eta*weights.shape
return weightsএই পাঠে, আপনি পারসেপট্রন সম্পর্কে শিখেছেন, যা একটি বাইনারি ক্লাসিফিকেশন মডেল, এবং কীভাবে এটি একটি ওজন ভেক্টর ব্যবহার করে প্রশিক্ষণ দিতে হয়।
আপনি যদি নিজের পারসেপট্রন তৈরি করতে চান, তাহলে Microsoft Learn-এর এই ল্যাবটি চেষ্টা করুন, যা Azure ML designer ব্যবহার করে।
পারসেপট্রন ব্যবহার করে কীভাবে একটি ছোট সমস্যা এবং বাস্তব জীবনের সমস্যা সমাধান করা যায় তা দেখতে এবং শেখা চালিয়ে যেতে - পারসেপট্রন নোটবুকে যান।
এখানে পারসেপট্রন সম্পর্কে একটি আকর্ষণীয় প্রবন্ধ রয়েছে।
এই পাঠে, আমরা একটি বাইনারি ক্লাসিফিকেশন টাস্কের জন্য একটি পারসেপট্রন বাস্তবায়ন করেছি এবং এটি ব্যবহার করে দুটি হাতে লেখা সংখ্যার মধ্যে পার্থক্য করেছি। এই ল্যাবে, আপনাকে সম্পূর্ণ সংখ্যার শ্রেণিবিন্যাস সমস্যাটি সমাধান করতে বলা হয়েছে, অর্থাৎ কোন সংখ্যা একটি প্রদত্ত ছবির সাথে সবচেয়ে বেশি মিল রয়েছে তা নির্ধারণ করতে হবে।


