ব্যাকপ্রপাগেশন ডেমো
$$ \definecolor{input}{RGB}{66, 133, 244} \definecolor{output}{RGB}{219, 68, 55} \definecolor{dinput}{RGB}{244, 180, 0} \definecolor{doutput}{RGB}{15, 157, 88} \definecolor{dweight}{RGB}{102, 0, 255} $$

ব্যাকপ্রপাগেশন অ্যালগরিদম

ব্যাকপ্রপাগেশন অ্যালগরিদম বড় নিউরাল নেটওয়ার্ককে দ্রুত প্রশিক্ষণের জন্য অপরিহার্য। এই নিবন্ধটি ব্যাখ্যা করে কিভাবে অ্যালগরিদম কাজ করে।

অনুগ্রহ করে নিচে স্ক্রোল করুন...

সহজ নিউরাল নেটওয়ার্ক

ডানদিকে, আপনি একটি ইনপুট, একটি আউটপুট নোড এবং দুটি নোডের দুটি লুকানো স্তর সহ একটি নিউরাল নেটওয়ার্ক দেখতে পাচ্ছেন।

প্রতিবেশী স্তরের নোডগুলি \(w_{ij}\)ওজনের সাথে সংযুক্ত থাকে, যা নেটওয়ার্ক পরামিতি।

সক্রিয়করণ ফাংশন

প্রতিটি নোডের মোট ইনপুট রয়েছে \(\color{input}x\), একটি অ্যাক্টিভেশন ফাংশন \(f(\color{input}x\color{black})\)এবং একটি আউটপুট \(\color{output}y\color{black}=f(\color{input}x\color{black})\)। \(f(\color{input}x\color{black})\) একটি নন-লিনিয়ার ফাংশন হতে হবে, অন্যথায় নিউরাল নেটওয়ার্ক শুধুমাত্র লিনিয়ার মডেল শিখতে সক্ষম হবে।

একটি সাধারণভাবে ব্যবহৃত অ্যাক্টিভেশন ফাংশন হল সিগময়েড ফাংশন : \(f(\color{input}x\color{black}) = \frac{1}{1+e^{-\color{input}x}}\)।

ত্রুটি ফাংশন

লক্ষ্য হল ডেটা থেকে স্বয়ংক্রিয়ভাবে নেটওয়ার্কের ওজন শেখা যাতে ভবিষ্যদ্বাণী করা আউটপুট \(\color{output}y_{output}\)সমস্ত ইনপুট \(\color{input}x_{input}\)placeholder10 এর জন্য লক্ষ্য \(\color{output}y_{target}\) এর কাছাকাছি থাকে।

আমরা লক্ষ্য থেকে কতটা দূরে তা পরিমাপ করতে, আমরা একটি ত্রুটি ফাংশন \(E\)ব্যবহার করি। একটি সাধারণভাবে ব্যবহৃত ত্রুটি ফাংশন হল \(E(\color{output}y_{output}\color{black},\color{output}y_{target}\color{black}) = \frac{1}{2}(\color{output}y_{output}\color{black} - \color{output}y_{target}\color{black})^2 \)।

ফরোয়ার্ড প্রচার

আমরা একটি ইনপুট উদাহরণ \((\color{input}x_{input}\color{black},\color{output}y_{target}\color{black})\) গ্রহণ করে এবং নেটওয়ার্কের ইনপুট স্তর আপডেট করে শুরু করি।

সামঞ্জস্যের জন্য, আমরা ইনপুটটিকে অন্য যে কোনো নোডের মতো মনে করি কিন্তু কোনো অ্যাক্টিভেশন ফাংশন ছাড়াই তাই এর আউটপুট তার ইনপুটের সমান, যেমন \( \color{output}y_1 \color{black} = \color{input} x_{input} \)।

ফরোয়ার্ড প্রচার

এখন, আমরা প্রথম লুকানো স্তর আপডেট করি। আমরা পূর্ববর্তী স্তরের নোডগুলির আউটপুট \(\color{output}y\) গ্রহণ করি এবং পরবর্তী স্তরে নোডগুলির \(\color{input}x\) ইনপুট গণনা করতে ওজন ব্যবহার করি।
$$ \color{input} x_j \color{black} = $$ $$ \sum_{i\in in(j)} w_{ij}\color{output} y_i\color{black} +b_j$$

ফরোয়ার্ড প্রচার

তারপরে আমরা প্রথম লুকানো স্তরে নোডগুলির আউটপুট আপডেট করি। এর জন্য আমরা অ্যাক্টিভেশন ফাংশন ব্যবহার করি, \( f(x) \)।
$$ \color{output} y \color{black} = f(\color{input} x \color{black})$$

ফরোয়ার্ড প্রচার

এই 2টি সূত্র ব্যবহার করে আমরা বাকি নেটওয়ার্কের জন্য প্রচার করি এবং নেটওয়ার্কের চূড়ান্ত আউটপুট পাই।
$$ \color{output} y \color{black} = f(\color{input} x \color{black})$$
$$ \color{input} x_j \color{black} = $$ $$ \sum_{i\in in(j)} w_{ij}\color{output} y_i \color{black} + b_j$$

ত্রুটি ডেরিভেটিভ

ব্যাকপ্রোপগেশন অ্যালগরিদম নির্দিষ্ট উদাহরণের জন্য পছন্দসই আউটপুটের সাথে পূর্বাভাসিত আউটপুট তুলনা করার পরে নেটওয়ার্কের প্রতিটি ওজন কতটা আপডেট করতে হবে তা নির্ধারণ করে। এর জন্য, প্রতিটি ওজন \(\color{dweight}\frac{dE}{dw_{ij}}\)এর ক্ষেত্রে ত্রুটি কীভাবে পরিবর্তিত হয় তা আমাদের গণনা করতে হবে।
একবার আমাদের ত্রুটি ডেরিভেটিভস হয়ে গেলে, আমরা একটি সহজ আপডেট নিয়ম ব্যবহার করে ওজন আপডেট করতে পারি:
$$w_{ij} = w_{ij} - \alpha \color{dweight}\frac{dE}{dw_{ij}}$$
যেখানে \(\alpha\) হল একটি ইতিবাচক ধ্রুবক, যা শেখার হার হিসাবে উল্লেখ করা হয়, যা আমাদের অভিজ্ঞতাগতভাবে সূক্ষ্ম-টিউন করতে হবে।

[দ্রষ্টব্য] আপডেটের নিয়মটি খুবই সহজ: ওজন বাড়লে যদি ত্রুটি কমে যায় (\(\color{dweight}\frac{dE}{dw_{ij}}\color{black} < 0\)), তাহলে ওজন বাড়ান, অন্যথায় ওজন বাড়লে ত্রুটি বেড়ে গেলে (\(\color{dweight}\frac{dE}{dw_{ij}} \color{black} > 0\)) ওজন কমিয়ে দিন .

অতিরিক্ত ডেরিভেটিভস

\(\color{dweight}\frac{dE}{dw_{ij}}\)গণনা করতে সাহায্য করার জন্য, আমরা অতিরিক্ত প্রতিটি নোডের জন্য আরও দুটি ডেরিভেটিভ সঞ্চয় করি: ত্রুটি কীভাবে পরিবর্তিত হয়:
  • নোডের মোট ইনপুট \(\color{dinput}\frac{dE}{dx}\) এবং
  • নোড \(\color{doutput}\frac{dE}{dy}\)এর আউটপুট।

পিছনে প্রচার

এরর ডেরিভেটিভের ব্যাকপ্রোপগেটিং শুরু করা যাক। যেহেতু আমাদের কাছে এই নির্দিষ্ট ইনপুট উদাহরণের পূর্বাভাসিত আউটপুট রয়েছে, তাই আমরা গণনা করতে পারি যে আউটপুটের সাথে ত্রুটিটি কীভাবে পরিবর্তিত হয়। আমাদের ত্রুটি ফাংশন \(E = \frac{1}{2}(\color{output}y_{output}\color{black} - \color{output}y_{target}\color{black})^2\) দেওয়া আমাদের আছে:
$$ \color{doutput} \frac{\partial E}{\partial y_{output}} \color{black} = \color{output} y_{output} \color{black} - \color{output} y_{target}$$

পিছনে প্রচার

এখন আমাদের কাছে \(\color{doutput} \frac{dE}{dy}\) আছে আমরা চেইন নিয়ম ব্যবহার করে \(\color{dinput}\frac{dE}{dx}\) পেতে পারি।
$$\color{dinput} \frac{\partial E}{\partial x} \color{black} = \frac{dy}{dx}\color{doutput}\frac{\partial E}{\partial y} \color{black} = \frac{d}{dx}f(\color{input}x\color{black})\color{doutput}\frac{\partial E}{\partial y}$$
যেখানে \(\frac{d}{dx}f(\color{input}x\color{black}) = f(\color{input}x\color{black})(1 - f(\color{input}x\color{black}))\) যখন \(f(\color{input}x\color{black})\) হল সিগমায়েড অ্যাক্টিভেশন ফাংশন।

পিছনে প্রচার

যত তাড়াতাড়ি আমরা একটি নোডের মোট ইনপুট সংক্রান্ত ত্রুটি ডেরিভেটিভ আছে, আমরা সেই নোডের মধ্যে আসা ওজনের সাপেক্ষে ত্রুটি ডেরিভেটিভ পেতে পারি।
$$\color{dweight} \frac{\partial E}{\partial w_{ij}} \color{black} = \frac{\partial x_j}{\partial w_{ij}} \color{dinput}\frac{\partial E}{\partial x_j} \color{black} = \color{output}y_i \color{dinput} \frac{\partial E}{\partial x_j}$$

পিছনে প্রচার

এবং চেইন নিয়ম ব্যবহার করে, আমরা আগের লেয়ার থেকে \(\frac{dE}{dy}\) ও পেতে পারি। আমরা একটি পূর্ণ বৃত্ত তৈরি করেছি।
$$ \color{doutput} \frac{\partial E}{\partial y_i} \color{black} = \sum_{j\in out(i)} \frac{\partial x_j}{\partial y_i} \color{dinput} \frac{\partial E}{\partial x_j} \color{black} = \sum_{j\in out(i)} w_{ij} \color{dinput} \frac{\partial E}{\partial x_j}$$

পিছনে প্রচার

যতক্ষণ না আমরা সমস্ত ত্রুটি ডেরিভেটিভ গণনা করি ততক্ষণ পূর্ববর্তী তিনটি সূত্রের পুনরাবৃত্তি করতে বাকি আছে।

শেষ।

কম্পিউটিং...