আপনি আগের অনুশীলনে দেখেছেন যে আমাদের নেটওয়ার্কে কেবল লুকানো স্তরগুলি যুক্ত করা অরৈখিকতার প্রতিনিধিত্ব করার জন্য যথেষ্ট নয়। রৈখিক অপারেশনে সম্পাদিত রৈখিক অপারেশন এখনও রৈখিক।
মানগুলির মধ্যে অরৈখিক সম্পর্ক শিখতে আপনি কীভাবে একটি নিউরাল নেটওয়ার্ক কনফিগার করতে পারেন? একটি মডেলে ননলাইনার গাণিতিক ক্রিয়াকলাপ সন্নিবেশ করার জন্য আমাদের কিছু উপায় দরকার।
যদি এটি কিছুটা পরিচিত মনে হয়, তবে এর কারণ হল আমরা আসলে কোর্সের আগে একটি রৈখিক মডেলের আউটপুটে অরৈখিক গাণিতিক ক্রিয়াকলাপ প্রয়োগ করেছি। লজিস্টিক রিগ্রেশন মডিউলে, আমরা একটি সিগমায়েড ফাংশনের মাধ্যমে মডেলের আউটপুট পাস করে 0 থেকে 1 (একটি সম্ভাব্যতার প্রতিনিধিত্ব করে) একটি ক্রমাগত মান আউটপুট করার জন্য একটি লিনিয়ার রিগ্রেশন মডেলকে অভিযোজিত করেছি।
আমরা আমাদের নিউরাল নেটওয়ার্কে একই নীতি প্রয়োগ করতে পারি। আসুন আগে অনুশীলন 2 থেকে আমাদের মডেলটি আবার দেখুন, তবে এবার, প্রতিটি নোডের মান আউটপুট করার আগে, আমরা প্রথমে সিগমায়েড ফাংশনটি প্রয়োগ করব:
>| ক্লিক করে প্রতিটি নোডের গণনার মাধ্যমে ধাপে ধাপে যাওয়ার চেষ্টা করুন বোতাম (প্লে বোতামের ডানদিকে)। গ্রাফের নীচের গণনা প্যানেলে প্রতিটি নোডের মান গণনা করার জন্য সম্পাদিত গাণিতিক ক্রিয়াকলাপগুলি পর্যালোচনা করুন। মনে রাখবেন যে প্রতিটি নোডের আউটপুট এখন পূর্ববর্তী স্তরের নোডগুলির রৈখিক সংমিশ্রণের একটি সিগমায়েড রূপান্তর, এবং আউটপুট মানগুলি 0 এবং 1 এর মধ্যে স্কুইশ করা হয়েছে।
এখানে, সিগময়েড নিউরাল নেটওয়ার্কের জন্য একটি অ্যাক্টিভেশন ফাংশন হিসাবে কাজ করে, নিউরনের আউটপুট মানের একটি অরৈখিক রূপান্তর যা নিউরাল নেটওয়ার্কের পরবর্তী স্তরের গণনার জন্য ইনপুট হিসাবে প্রবেশ করার আগে।
এখন যেহেতু আমরা একটি অ্যাক্টিভেশন ফাংশন যোগ করেছি, লেয়ার যোগ করা আরও বেশি প্রভাব ফেলে। অরৈখিকতার উপর অরৈখিকতার স্ট্যাকিং আমাদের ইনপুট এবং পূর্বাভাসিত আউটপুটগুলির মধ্যে খুব জটিল সম্পর্ক মডেল করতে দেয়। সংক্ষেপে, প্রতিটি স্তর কার্যকরভাবে কাঁচা ইনপুটগুলির উপর আরও জটিল, উচ্চ-স্তরের ফাংশন শিখছে। আপনি যদি এটি কীভাবে কাজ করে সে সম্পর্কে আরও অন্তর্দৃষ্টি বিকাশ করতে চান, ক্রিস ওলার চমৎকার ব্লগ পোস্টটি দেখুন।
সাধারণ অ্যাক্টিভেশন ফাংশন
তিনটি গাণিতিক ফাংশন যা সাধারণত সক্রিয়করণ ফাংশন হিসাবে ব্যবহৃত হয় তা হল সিগমায়েড, তানহ এবং রিএলইউ।
সিগময়েড ফাংশন (উপরে আলোচনা করা হয়েছে) ইনপুট $x$ এ নিম্নলিখিত রূপান্তর সম্পাদন করে, 0 এবং 1 এর মধ্যে একটি আউটপুট মান তৈরি করে:
\[F(x)=\frac{1} {1+e^{-x}}\]
এখানে এই ফাংশনের একটি প্লট:
![চিত্র 4. সিগমায়েড ফাংশনের প্লট: একটি s-আকৃতির বক্ররেখা যা অচিহ্নিতভাবে x-অক্ষের কাছে আসে যখন x ঋণাত্মক অসীমের কাছে আসে এবং 1 যখন x অসীমের কাছে আসে।](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/sigmoid.png?authuser=4&hl=bn)
ট্যানহ ("হাইপারবোলিক ট্যানজেন্ট"-এর সংক্ষিপ্ত) ফাংশনটি $x$ ইনপুটকে রূপান্তর করে -1 এবং 1-এর মধ্যে একটি আউটপুট মান তৈরি করে:
\[F(x)=tanh(x)\]
এখানে এই ফাংশনের একটি প্লট:
![চিত্র 5. ট্যানহ ফাংশনের প্লট: সিগমায়েড ফাংশনের তুলনায় একটি সামান্য খাড়া s-আকৃতির বক্ররেখা, যা অসীমভাবে -1 এর কাছে আসে যখন x ঋণাত্মক অসীমের কাছে যায় এবং 1 যখন x অসীমের কাছে যায়।](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/tanh.png?authuser=4&hl=bn)
সংশোধিত লিনিয়ার ইউনিট অ্যাক্টিভেশন ফাংশন (বা সংক্ষেপে ReLU ) নিম্নলিখিত অ্যালগরিদম ব্যবহার করে আউটপুট রূপান্তরিত করে:
- ইনপুট মান $x$ 0 এর কম হলে, 0 প্রদান করুন।
- ইনপুট মান $x$ 0 এর থেকে বেশি বা সমান হলে, ইনপুট মান ফেরত দিন।
ReLU max() ফাংশন ব্যবহার করে গাণিতিকভাবে উপস্থাপন করা যেতে পারে:
এখানে এই ফাংশনের একটি প্লট:
![চিত্র 6. ReLU ফাংশনের প্লট: ঋণাত্মক অসীম থেকে 0 পর্যন্ত x-অক্ষ বরাবর একটি অনুভূমিক রেখা, যা 0 থেকে অসীম পর্যন্ত ঢাল 1 (y=x) সহ উপরে এবং ডানদিকে একটি তির্যক রেখায় পরিণত হয়।](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/relu.png?authuser=4&hl=bn)
RELU প্রায়শই সিগমায়েড বা তানহের মতো একটি মসৃণ ফাংশনের চেয়ে একটি সক্রিয়করণ ফাংশন হিসাবে কিছুটা ভাল কাজ করে, কারণ এটি নিউরাল নেটওয়ার্ক প্রশিক্ষণের সময় অদৃশ্য গ্রেডিয়েন্ট সমস্যার জন্য কম সংবেদনশীল। ReLU এই ফাংশনগুলির তুলনায় গণনা করা উল্লেখযোগ্যভাবে সহজ।
অন্যান্য সক্রিয়করণ ফাংশন
অনুশীলনে, যেকোনো গাণিতিক ফাংশন একটি সক্রিয়করণ ফাংশন হিসাবে কাজ করতে পারে। ধরুন যে \(\sigma\) আমাদের সক্রিয়করণ ফাংশন প্রতিনিধিত্ব করে। নেটওয়ার্কে একটি নোডের মান নিম্নলিখিত সূত্র দ্বারা দেওয়া হয়:
কেরাস অনেকগুলি অ্যাক্টিভেশন ফাংশনের জন্য বাক্সের বাইরের সমর্থন প্রদান করে। এটি বলেছে, আমরা এখনও ReLU দিয়ে শুরু করার পরামর্শ দিই।
সারাংশ
নীচের ভিডিওটি কীভাবে নিউরাল নেটওয়ার্কগুলি তৈরি করা হয় সে সম্পর্কে আপনি এখন পর্যন্ত যা শিখেছেন তার একটি সংক্ষিপ্ত বিবরণ প্রদান করে:
এখন আমাদের মডেলের সমস্ত স্ট্যান্ডার্ড উপাদান রয়েছে যখন তারা একটি নিউরাল নেটওয়ার্ককে উল্লেখ করে তখন লোকেরা সাধারণত কী বোঝায়:
- নোডের একটি সেট, নিউরনের অনুরূপ, স্তরগুলিতে সংগঠিত।
- প্রতিটি নিউরাল নেটওয়ার্ক স্তর এবং এর নীচের স্তরের মধ্যে সংযোগের প্রতিনিধিত্ব করে ওজনের একটি সেট। নীচের স্তরটি অন্য নিউরাল নেটওয়ার্ক স্তর, বা অন্য কোন ধরণের স্তর হতে পারে।
- পক্ষপাতের একটি সেট, প্রতিটি নোডের জন্য একটি।
- একটি অ্যাক্টিভেশন ফাংশন যা প্রতিটি নোডের আউটপুটকে একটি স্তরে রূপান্তরিত করে। বিভিন্ন স্তরের বিভিন্ন অ্যাক্টিভেশন ফাংশন থাকতে পারে।
একটি সতর্কতা: নিউরাল নেটওয়ার্কগুলি সবসময় ফিচার ক্রসের চেয়ে ভাল হয় না, তবে নিউরাল নেটওয়ার্কগুলি একটি নমনীয় বিকল্প অফার করে যা অনেক ক্ষেত্রে ভাল কাজ করে।