paint-brush
কেন চতুর্মুখী খরচ ফাংশন নিউরাল নেটওয়ার্ক প্রশিক্ষণ অকার্যকর হয়দ্বারা@varunnakra1
2,637 পড়া
2,637 পড়া

কেন চতুর্মুখী খরচ ফাংশন নিউরাল নেটওয়ার্ক প্রশিক্ষণ অকার্যকর হয়

দ্বারা Varun Nakra6m2024/06/03
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

ডিপ লার্নিং নলেজ ইন্টারভিউয়ের সময় জিজ্ঞাসিত সবচেয়ে সাধারণ প্রশ্নগুলির মধ্যে একটি হল - "কেন আমরা একটি নিউরাল নেটওয়ার্ককে প্রশিক্ষিত করার জন্য একটি চতুর্মুখী খরচ ফাংশন ব্যবহার করতে পারি না?**" আমরা এর উত্তরটি গভীরভাবে অনুসন্ধান করব। অনেক ম্যাথ জড়িত থাকবে কিন্তু পাগলামী কিছুই হবে না! এবং আমি জিনিসগুলি সহজ তবে সুনির্দিষ্ট রাখব।
featured image - কেন চতুর্মুখী খরচ ফাংশন নিউরাল নেটওয়ার্ক প্রশিক্ষণ অকার্যকর হয়
Varun Nakra HackerNoon profile picture
0-item

ডিপ লার্নিং নলেজ ইন্টারভিউয়ের সময় জিজ্ঞাসিত সবচেয়ে সাধারণ প্রশ্নগুলির মধ্যে একটি হল - “ কেন আমরা একটি নিউরাল নেটওয়ার্ককে প্রশিক্ষিত করার জন্য একটি দ্বিঘাত খরচ ফাংশন ব্যবহার করতে পারি না? ” এই নিবন্ধে, আমরা এই প্রশ্নের উত্তর নিয়ে আলোচনা করব। অনেক ম্যাথ জড়িত থাকবে কিন্তু পাগলের মত কিছুই হবে না! আমি জিনিস সহজ এবং সুনির্দিষ্ট রাখা হবে.


আসুন একটি নিউরাল নেটওয়ার্কের সাধারণ আর্কিটেকচার নিয়ে চিন্তা করা শুরু করি


একটি নিউরাল নেটওয়ার্কের সাধারণ আর্কিটেকচার

বাইনারি শ্রেণীবিভাগের জন্য নিউরাল নেটওয়ার্ক আর্কিটেকচার


আমাদের কাছে একটি "ইনপুট স্তর" গঠনকারী ইনপুটগুলির একটি সিরিজ রয়েছে, "লুকানো স্তর"-এ একটি নিউরন এবং একটি বাইনারি শ্রেণীবিভাগ সমস্যার জন্য একটি নিউরন একটি "আউটপুট স্তর" গঠন করে। এই প্রশ্নের জন্য, আমরা ধরে নেব যে আমরা একটি বাইনারি ক্লাসিফায়ার নিয়ে কাজ করছি, তাই নেটওয়ার্কের বাইরে আমাদের মাত্র একটি আউটপুট মান আছে।


এখন, নীচের চিত্রটি দেখুন যেখানে আমরা ইনপুট স্তরটিকে সবুজ রঙে, আউটপুট নিউরনটিকে লাল এবং লুকানো স্তরটির একটি নিউরন কমলা রঙে হাইলাইট করেছি। সমস্ত সবুজ থেকে কমলা পর্যন্ত, আমরা দেখতে পাই যে সমস্ত ইনপুট কমলা নিউরনের সাথে সংযুক্ত। অন্য কথায়, কমলা নিউরনের "অ্যাক্টিভেশন" ইনপুট স্তরের সমস্ত সবুজ নিউরনের "একত্রীকরণ" ব্যবহার করে ঘটে। আমরা চূড়ান্ত লাল আউটপুট নিউরনে পৌঁছানো পর্যন্ত এই প্রক্রিয়াটি সমস্ত স্তরের সমস্ত নিউরনের উপর প্রতিলিপি করা হয়।



যদি আমরা কমলা নিউরনকে লাল নিউরনের সাথে প্রতিস্থাপন করি, অর্থাৎ, আমরা লুকানো স্তরটি সরিয়ে দিয়ে লাল নিউরনকে সবুজ নিউরনের সাথে সরাসরি সংযুক্ত করি?



আমরা নিম্নলিখিত পাবেন:

এই প্রশ্নের জন্য, আমরা পূর্বোক্ত 'সিম্পলিস্টিক আর্কিটেকচার' অনুমান করব এবং ফলাফলটি সম্পূর্ণ আর্কিটেকচারেও সাধারণীকরণ করা যেতে পারে।


এখন ধাপে ধাপে কিছু গণিতের পরিচয় দেওয়া যাক।


আমরা উপরে যা দেখি তা হল একটি নিউরাল নেটওয়ার্কের জন্য মৌলিক "ওজন আপডেট" সমীকরণ। আমি অতিরিক্ত হাইপারপ্যারামিটার যেমন লার্নিং ফ্যাক্টর এবং সাব-স্যাম্পলিং (মিন-ব্যাচ), ইত্যাদি সরিয়ে দিয়েছি। w_k হল ওজনের ভেক্টর এবং ওজন হল আমাদের নিউরাল নেটওয়ার্ক মডেলের 'প্যারামিটার'। w_k একটি কলাম ভেক্টরে সংগৃহীত পৃথক ওজন নিয়ে গঠিত। এই ওজনগুলি মডেলের ইনপুটগুলির সাথে যুক্ত (এটি আমাদের আর্কিটেকচারে সবুজ নিউরন)। আমাদের একটি কস্ট ফাংশন C_i আছে যেখানে i = 1 থেকে n হল আমাদের নমুনায় ডেটা ইনস্ট্যান্সের সংখ্যা। খরচ ফাংশন C হল প্রকৃত আউটপুট y এবং নিউরাল নেটওয়ার্ক (লাল নিউরন) থেকে আউটপুটের মধ্যে "ত্রুটি"। প্রতিটি ডেটা ইনস্ট্যান্স একটি প্রকৃত আউটপুটের বিপরীতে একটি পূর্বাভাসিত আউটপুট তৈরি করবে, তাই, প্রতিটি ডেটা উদাহরণের জন্য একটি খরচ বা ত্রুটি থাকবে। মডেলটির উদ্দেশ্য হল সমগ্র ডেটাসেটের উপর গড়ে এই খরচ ফাংশনটি কমিয়ে আনা। এবং আমরা জানি, মিনিমাইজেশন ধাপে মডেল প্যারামিটার (ওজন) এর ক্ষেত্রে একটি ডেরিভেটিভ নেওয়া জড়িত। আমরা w_k ভেক্টরের আংশিক ডেরিভেটিভ ব্যবহার করে এটি করি। এই সমস্ত মানে হল যে খরচ C হবে ওজনের একটি এক্সপ্রেশন/একত্রীকরণ w_1 থেকে w_q এবং আমরা প্রতিটি ওজনের সাথে পার্থক্য করব এবং একটি ভেক্টরে সংগ্রহ করব। একে নেতিবাচক "গ্রেডিয়েন্ট ভেক্টর" বলা হয়। এটি k-th পুনরাবৃত্তি থেকে (k+1) তম পুনরাবৃত্তিতে ওজন ভেক্টর আপডেট করতে ব্যবহৃত হয়। পদ্ধতিটি স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট কিন্তু আমরা এই নিবন্ধের জন্য এটি ছেড়ে দেব।


সংক্ষেপে, নিউরাল নেটওয়ার্ক নেতিবাচক গ্রেডিয়েন্ট ভেক্টরের মাধ্যমে ওজনের আপডেটের মাধ্যমে শেখে যা সমস্ত নমুনার উপর গড় করে এবং w_k এর জন্য গণনা করা হয়। এটি আমাদের খরচ ফাংশন ন্যূনতমকরণে যেতে সাহায্য করে এবং নেটওয়ার্ককে এর সঠিকতা শিখতে এবং উন্নত করতে সাহায্য করে। এটা স্পষ্ট যে যদি ওজনের আপডেটগুলি ঘটছে না, কারণ নেতিবাচক গ্রেডিয়েন্ট শূন্যের দিকে যাচ্ছে, শেখা বন্ধ হয়ে গেছে। এটি অগত্যা বোঝায় না যে আমরা সর্বনিম্ন পৌঁছেছি! কারণ আমাদের খরচ ফাংশন অত্যন্ত জটিল এবং আমাদের একটি বহুমাত্রিক স্থানের মধ্যে একটি সর্বনিম্ন খুঁজে বের করতে হবে। অতএব, অনেক স্থানীয় মিনিমা থাকতে পারে যেখানে গ্রেডিয়েন্ট শূন্য এবং নেটওয়ার্ক শেখা বন্ধ করে দেয়। যাইহোক, এই সমস্যার জন্য আমাদের তা নিয়ে চিন্তা করতে হবে না।


আসুন নিম্নলিখিত অভিব্যক্তিটি দেখি:


এই এক্সপ্রেশনটি z_i কে ইনপুট x_ji এর একটি ওজনযুক্ত যোগফল হিসাবে সংজ্ঞায়িত করে। মনে রাখবেন যে এই ইনপুটগুলি আমাদের আর্কিটেকচারের সবুজ নিউরন। যেহেতু আমাদের কোনো লুকানো স্তর নেই, তাই আমরা ইনপুট x_ji এবং ওজন w_j একত্রিত করি এবং z_i পাওয়ার জন্য একটি বায়াস শব্দ যোগ করি যা আমাদের আর্কিটেকচারে সবুজ নিউরন থেকে লাল নিউরনে সংযোগকারী তীর দ্বারা উপস্থাপন করা হয়। যেহেতু আমাদের কাছে q ইনপুট আছে, আমাদের কাছে আছে x_j এবং w_j যেখানে j = 1 থেকে q

কিন্তু, আমরা লাল নিউরনে z_i পাস করি না। আমরা এটিতে একটি "অ্যাক্টিভেশন ফাংশন" প্রয়োগ করি। এই সক্রিয়করণ ফাংশন বিভিন্ন নিউরাল নেটওয়ার্কের জন্য ভিন্ন হতে পারে। এই সমস্যার উদ্দেশ্যে, আমরা অনুমান করি অ্যাক্টিভেশন ফাংশন হল "সিগময়েড" বা "লজিস্টিক"। আমি এখানে অনুমান করব যে পাঠক এই ফাংশন সম্পর্কে সচেতন এবং আরও এগিয়ে যান।


পরবর্তীতে আমাদের প্রধান সমস্যা বিবৃতি আসে - আমরা কিভাবে খরচ ফাংশন (C) সংজ্ঞায়িত করব? এটা সুপরিচিত যে বাইনারি শ্রেণীবিভাগের জন্য, খরচ ফাংশন হল "ক্রস এনট্রপি" কিন্তু এখানে প্রশ্ন হল কেন এটি "চতুর্মাত্রিক" হতে পারে না।


চলুন উভয় খরচ ফাংশনের অভিব্যক্তি সংজ্ঞায়িত করা যাক:


চতুর্মুখী খরচ ফাংশন - ক্রস এনট্রপি খরচ ফাংশন -


যদিও দ্বিঘাত খরচ ফাংশনটি সহজবোধ্য (প্রকৃত আউটপুট y_i এবং পূর্বাভাসিত আউটপুট a_i-এর মধ্যে ন্যূনতম স্কোয়ার মিনিমাইজেশন মনে করুন), আমরা ক্রস-এনট্রপি খরচ ফাংশনের জন্য কিছু ব্যাখ্যা দিতে পারি। এটি আমাদের রিগ্রেশন মডেলগুলিতে নেতিবাচক লগ-সম্ভাবনার অনুরূপ। নোট করুন যে বন্ধনীর বাইরে একটি নেতিবাচক চিহ্ন রয়েছে, যা খরচকে ইতিবাচক রাখতে ব্যবহার করা হয় (কারণ a_i 0 এবং 1-এর মধ্যে হবে - সিগমায়েডের একটি আউটপুট, তাই, বন্ধনীর ভিতরে শব্দটি সর্বদা নেতিবাচক হবে)। এছাড়াও মনে রাখবেন যে যখন a_i সত্যিই y_i এর কাছাকাছি আসে, তখন খরচ সত্যিই শূন্যের কাছাকাছি চলে যায়। এর কারণ, যখন y_i = 1 এবং a_i ~ 1, ln(a_i) প্রায় 0 হবে। একইভাবে, যখন y_i= 0 এবং a_i ~ 0, ln(1-a_i) প্রায় 0 হবে। এভাবে, এই ফাংশনটি রাখে যখন মডেল ভাল ভবিষ্যদ্বাণী করে তখন খরচ ইতিবাচক এবং সর্বনিম্ন। যাইহোক, একই সাথে দ্বিঘাত খরচ ফাংশন সম্পর্কেও বলা যেতে পারে। কিন্তু, আমরা এটা ব্যবহার করি না। কেন? এখানে ব্যাখ্যা আসে


আমরা পূর্বে দেখেছি প্রাথমিক ওজন আপডেট সমীকরণে ফিরে যাই এবং এতে দ্বিঘাত খরচ ফাংশন ইনপুট করি। আমরা নিম্নলিখিত পেতে

এখন জিনিসগুলিকে সহজ রাখার জন্য, আমরা শুধুমাত্র একটি ডেটা পয়েন্ট বিবেচনা করব, তা হল i=1 এবং n=1। এবং আমরা প্রতিটি ওজন w_j জন্য আংশিকভাবে পার্থক্য. আমরা নিম্নলিখিত পেতে:

মনে রাখবেন যে যেহেতু i = 1, আমাদের আছে

z এর মান প্রতিস্থাপন করে, আমরা পাই

এটি আমাদের গ্রেডিয়েন্ট ভেক্টর যা নেটওয়ার্কের ওজন আপডেট করার জন্য দায়ী যখন আমরা একটি দ্বিঘাত মূল্য ফাংশন ব্যবহার করি তখন সিগমায়েড ফাংশনের একটি ডেরিভেটিভ থাকবে।


এখন আসুন সিগমায়েড ফাংশনের ডেরিভেটিভের আচরণটি দেখি:


উপরের প্লট থেকে, এটা স্পষ্ট যে ডেরিভেটিভ, সিগমায়েড ফাংশনের ঢালের প্রতিনিধিত্ব করে, ইনপুট z বড় হওয়ার সাথে সাথে 0 এর কাছে পৌঁছে! এটার মানে কি? এর মানে হল যে অ্যাক্টিভেশন ইনপুট z বড় হলে গ্রেডিয়েন্ট ভেক্টর শূন্য হবে। অতএব, নেটওয়ার্ক শেখা বন্ধ করবে কারণ ওজন আপডেট হবে না। মনে রাখবেন যে এর মানে এই নয় যে আমরা একটি সর্বনিম্ন পৌঁছেছি। এর মানে আমরা একটি অবাঞ্ছিত বিন্দুতে এবং ফাংশন স্পেসে আটকে গেছি যা ন্যূনতম মান থেকে অনেক দূরে হতে পারে। এটি "শিক্ষা ধীরগতি" হিসাবে পরিচিত। যাইহোক, এটি ক্রস-এনট্রপি খরচ ফাংশনের সাথে ঘটে না।


আমরা ক্রস-এনট্রপি খরচ ফাংশন ব্যবহার করে একই প্রতিস্থাপন করি এবং নিম্নলিখিতগুলি পাই:

এটি লক্ষ্য করা আকর্ষণীয় যে শব্দটি:

দ্বিঘাত খরচের জন্য গ্রেডিয়েন্টেও ঘটে। যাইহোক, একটি কৌশল আছে যা আমরা এটিকে সহজ করতে ব্যবহার করব। সিগমায়েড ফাংশনের গ্রেডিয়েন্টকে নিম্নরূপ প্রকাশ করা যেতে পারে

আমরা এটিকে আমাদের মূল অভিব্যক্তিতে প্রতিস্থাপন করি এবং নিম্নলিখিতগুলি পাই:

এটি আমাদের গ্রেডিয়েন্ট ভেক্টর যা নেটওয়ার্কের ওজন আপডেট করার জন্য দায়ী যখন আমরা একটি ক্রস এনট্রপি খরচ ফাংশন ব্যবহার করি তখন সিগমায়েড ফাংশনের ডেরিভেটিভ থাকে না । অতএব, এই খরচ ফাংশন সঙ্গে শেখার কোন ধীরগতি নেই.


আরও ভালোভাবে দেখার জন্য আমরা গ্রেডিয়েন্টকে আবার জোড়া লাগাই:

এটি আমাদের মূল প্রশ্নের উত্তর দেয় - আমরা চতুর্মুখী খরচ ফাংশন ব্যবহার করি না কারণ এটি শেখার ধীরগতির দিকে নিয়ে যায়।


উল্লেখ্য যে উপরের বিশ্লেষণটি শুধুমাত্র আউটপুট স্তর (একটি নিউরনের) উপর করা হয়েছিল, তবে, এটি একটি সাধারণ নিউরাল নেটওয়ার্কের জন্যও সাধারণীকরণ করা যেতে পারে!