নিউরাল নেটওয়ার্কগুলিতে ডেরিভেটিভসের ব্যবহার ব্যাকপ্রোপেশন নামক প্রশিক্ষণ প্রক্রিয়ার জন্য । ক্ষতির ক্রিয়াকে হ্রাস করতে মডেল প্যারামিটারগুলির সর্বোত্তম সেট সন্ধান করতে এই কৌশলটি গ্রেডিয়েন্ট বংশদ্ভুত ব্যবহার করে। আপনার উদাহরণে আপনাকে অবশ্যই সিগময়েডের ডেরাইভেটিভ ব্যবহার করতে হবে কারণ এটি আপনার ব্যক্তিগত নিউরোনগুলি ব্যবহার করছে এমন সক্রিয়করণ।
ক্ষতি ফাংশন
মেশিন লার্নিংয়ের সারমর্মটি হ'ল একটি ব্যয় ফাংশনকে অনুকূলকরণ করা যাতে আমরা হয় কয়েকটি টার্গেট ফাংশন হ্রাস বা সর্বোচ্চ করতে পারি। একে সাধারণত ক্ষতি বা ব্যয় মজাদার বলা হয়। আমরা সাধারণত এই ফাংশনটি ছোট করতে চাই। মডেল পরামিতিগুলির ফাংশন হিসাবে আপনার মডেলটির মাধ্যমে ডেটা পাস করার সময় ব্যয় ফাংশন, , ফলাফল ত্রুটির উপর ভিত্তি করে কিছু জরিমানা সংযুক্ত করে।C
আসুন আমরা উদাহরণটি দেখি যেখানে আমরা কোনও ছবিতে একটি বিড়াল বা কুকুর রয়েছে কিনা তা লেবেল করার চেষ্টা করি। আমাদের যদি একটি নিখুঁত মডেল থাকে, আমরা মডেলটিকে একটি ছবি উপহার দিতে পারি এবং এটি আমাদের জানায় এটি একটি বিড়াল বা কুকুর। তবে কোনও মডেল নিখুঁত নয় এবং এটি ভুল করবে।
আমরা যখন আমাদের মডেলটিকে ইনপুট ডেটা থেকে অর্থ নির্ধারণ করতে সক্ষম হতে প্রশিক্ষণ করি তখন আমরা এটির যে পরিমাণ ভুল করে তা হ্রাস করতে চাই। সুতরাং আমরা একটি প্রশিক্ষণ সেট ব্যবহার করি, এই ডেটাতে কুকুর এবং বিড়ালের অনেকগুলি চিত্র রয়েছে এবং সেই চিত্রের সাথে আমাদের জড়িত সত্যের লেবেল রয়েছে। প্রতিবার আমরা যখন মডেলটির প্রশিক্ষণ পুনরাবৃত্তি চালাই আমরা মডেলের ব্যয় (ভুলের পরিমাণ) গণনা করি। আমরা এই ব্যয়টি হ্রাস করতে চাই।
অনেক ব্যয় ক্রিয়াকলাপ প্রতিটি তাদের নিজস্ব উদ্দেশ্যে পরিবেশন করে। ব্যবহৃত হয় এমন একটি সাধারণ ব্যয় ফাংশন হ'ল চতুর্ভুজ ব্যয় যা হিসাবে সংজ্ঞায়িত হয়
।সি= 1এনΣএনi = 0( y)^- y)2
এটি হ'ল আমরা যে প্রশিক্ষণপ্রাপ্ত ইমেজের জন্য পূর্বানুমানিত লেবেল এবং গ্রাউন্ড ট্রুথ লেবেলের মধ্যে পার্থক্যের বর্গ । আমরা এটি কোনও উপায়ে হ্রাস করতে চাই।এন
ক্ষতির ফাংশন হ্রাস করা হচ্ছে
প্রকৃতপক্ষে বেশিরভাগ মেশিন লার্নিং হ'ল ফ্রেমওয়ার্কগুলির একটি পরিবার যা কিছু ব্যয় ফাংশন হ্রাস করে একটি বিতরণ নির্ধারণ করতে সক্ষম। যে প্রশ্নটি আমরা জিজ্ঞাসা করতে পারি তা হ'ল "আমরা কীভাবে একটি ফাংশনকে ছোট করতে পারি"?
আসুন নিম্নলিখিত ফাংশনটি হ্রাস করুন
।Y= এক্স2- 4 এক্স + 6
যদি আমরা এটির পরিকল্পনা করি আমরা দেখতে পাই যে সর্বনিম্ন । এটি বিশ্লেষণাত্মকভাবে করতে আমরা এই ফাংশনটির ডেরাইভেটিভ হিসাবে নিতে পারিx = 2
ঘYঘএক্স= 2 এক্স - 4 = 0
।x = 2
তবে প্রায়শই বিশ্লেষণাত্মকভাবে সর্বনিম্ন সর্বনিম্ন সন্ধান করা সম্ভব হয় না। সুতরাং পরিবর্তে আমরা কিছু অপ্টিমাইজেশন কৌশল ব্যবহার করি। এখানে পাশাপাশি বিভিন্ন উপায় বিদ্যমান যেমন: নিউটন-র্যাফসন, গ্রিড অনুসন্ধান ইত্যাদি, এর মধ্যে গ্রেডিয়েন্ট বংশোদ্ভূত । এটি নিউরাল নেটওয়ার্কগুলি দ্বারা ব্যবহৃত কৌশল।
গ্রেডিয়েন্ট বংশোদ্ভূত
এটি বুঝতে একটি বিখ্যাত ব্যবহৃত উপমা ব্যবহার করুন alog 2D মিনিমাইজেশন সমস্যাটি কল্পনা করুন। এটি মরুভূমিতে পাহাড়ি পাহাড়ে যাওয়ার সমতুল্য। আপনি যে গ্রামটি জানেন সেখান থেকে আপনি নীচে ফিরে যেতে চান। আপনি যদি গ্রামের মূল দিকগুলি না জানেন তবেও। আপনাকে যা করতে হবে তা অবিরত নিচু পথে নেওয়ার দরকার এবং অবশেষে আপনি গ্রামে পৌঁছে যাবেন। সুতরাং আমরা opeালের খাড়াতার উপর ভিত্তি করে পৃষ্ঠের নীচে নেমে যাব।
আমাদের ফাংশন গ্রহণ করা যাক
Y= এক্স2- 4 এক্স + 6
আমরা নির্ধারণ করব যার জন্য y হ্রাস করা হবে। গ্রেডিয়েন্ট বংশদ্ভুত অ্যালগরিদম প্রথমে বলেছে যে আমরা এক্স এর জন্য একটি এলোমেলো মান বেছে নেব । আসুন x = 8 এ সূচনা করি । তারপরে অ্যালগরিদম নীচের পুনরাবৃত্তভাবে কাজ করবে যতক্ষণ না আমরা অভিমুখে পৌঁছায়।এক্সYএক্সx = 8
এক্সএন ই ডব্লিউ= এক্সo l d- νঘYঘএক্স
যেখানে শেখার হার হয়, আমরা যাই হোক না কেন মান আমরা পছন্দ করবেন এই সেট করতে পারেন। তবে এটি চয়ন করার জন্য একটি স্মার্ট উপায় রয়েছে। খুব বড় এবং আমরা আমাদের ন্যূনতম মানটিতে পৌঁছাতে পারি না এবং খুব বড় আমরা সেখানে পৌঁছানোর আগেই খুব বেশি সময় নষ্ট করব। আপনি খাড়া opeালু নামাতে চান এমন পদক্ষেপগুলির আকারের সাথে এটি সাদৃশ্য is ছোট পদক্ষেপ এবং আপনি পাহাড়ে মারা যাবেন, আপনি কখনই নামবেন না। এক ধাপে খুব বড় এবং আপনি গ্রামটি শ্যুটিং এবং পর্বতের অপর প্রান্তে গিয়ে শেষ করতে পারেন। ডেরাইভেটিভ হ'ল উপায় যা দিয়ে আমরা আমাদের slালটিকে আমাদের সর্বনিম্নের দিকে ভ্রমণ করি।ν
ঘYঘএক্স= 2 এক্স - 4
ν= 0.1
আইটেম 1:
এক্স এন ই W = 6.8 - 0.1 ( 2 * 6.8 - 4 ) = 5,84 এক্স এন ই W = 5,84 - 0.1 ( 2 * 5,84 - 4 ) = 5.07 এক্স এন ই ডব্লু = 5.07 - 0.1এক্সএন ই ডব্লিউ= 8 - 0.1 ( 2 ∗ 8 - 4 ) = 6.8
এক্সএন ই ডব্লিউ= 6.8 - 0.1 ( 2 ∗ 6.8 - 4 ) = 5.84
এক্সএন ই ডব্লিউ=5.84−0.1(2∗5.84−4)=5.07
এক্স এন ই ডাব্লু = 4.45 - 0.1 ( 2 ∗ 4.45 - 4 ) = 3.96 এক্স এন ই ডব্লু = 3.96 - 0.1 ( 2 ∗ 3.96 - 4 ) = 3.57 এক্স এন ই ডব্লু = 3.57 - 0.1 ( 2 ∗ 3.57 - 4 )xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
এক্স এন ই ডব্লু = 3.25 - 0.1 ( 2 ∗ 3.25 - 4 ) = 3.00 এক্স এন ই ডাব্লু = 3.00 - 0.1 ( 2 ∗ 3.00 - 4 ) = 2.80 এক্স এন ই ডব্লু = 2.80 - 0.1 ( 2 ∗ 2.80 - 4 ) = 2.64 x n e w =xnew=3.57−0.1(2∗3.57−4)=3.25
xnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
এক্স এন ই W = 2,51 - 0.1 ( 2 * 2,51 - 4 ) = 2.41 x এর এন ই W = 2.41 - 0.1 ( 2 * 2.41 - 4 ) = 2.32 x এর এন ই W = 2.32 - 0.1 ( 2 ∗ 2.32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnew=2.41−0.1(2∗2.41−4)=2.32
এক্স এন ই ডব্লু = 2.26 - 0.1 ( 2 ∗ 2.26 - 4 ) = 2.21 এক্স এন ই ডাব্লু = 2.21 - 0.1 ( 2 ∗ 2.21 - 4 ) = 2.16 এক্স এন ই ডাব্লু = 2.16 - 0.1 ( 2 ∗ 2.16 - 4 ) = 2.13 x এনxnew=2.32−0.1(2∗2.32−4)=2.26
xnew=2.26−0.1(2∗2.26−4)=2.21
xnew= 2.21 - 0.1 ( 2 ∗ 2.21 - 4 ) = 2.16
এক্সএন ই ডব্লিউ= 2.16 - 0.1 ( 2 ∗ 2.16 - 4 ) = 2.13
এক্স এন ই ডাব্লু =2.10-0.1(2∗2.10-4)=2.08 x এন ই ডব্লু =2.08-0.1(2∗2.08-4)=2.06 x এন ই ডব্লু =2.06-0.1(এক্সএন ই ডব্লিউ= 2.13 - 0.1 ( 2 ∗ 2.13 - 4 ) = 2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
xnew=2.03−0.1(2∗2.03−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
And we see that the algorithm converges at x=2! We have found the minimum.
Applied to neural networks
The first neural networks only had a single neuron which took in some inputs x and then provide an output y^. A common function used is the sigmoid function
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
where w is the associated weight for each input x and we have a bias b. We then want to minimize our cost function
C=12N∑Ni=0(y^−y)2.
How to train the neural network?
We will use gradient descent to train the weights based on the output of the sigmoid function and we will use some cost function C and train on batches of data of size N.
C=12N∑Ni(y^−y)2
y^ is the predicted class obtained from the sigmoid function and y is the ground truth label. We will use gradient descent to minimize the cost function with respect to the weights w. To make life easier we will split the derivative as follows
∂C∂w=∂C∂y^∂y^∂w.
∂C∂y^=y^−y
and we have that y^=σ(wTx) and the derivative of the sigmoid function is ∂σ(z)∂z=σ(z)(1−σ(z)) thus we have,
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b)).
So we can then update the weights through gradient descent as
wnew=wold−η∂C∂w
where η is the learning rate.