শুধু মজা করার জন্য, আমি একটি নিউরাল নেটওয়ার্ক বিকাশের চেষ্টা করছি।
এখন, ব্যাকপ্রকাশের জন্য আমি দুটি কৌশল দেখেছি।
প্রথমটি এখানে এবং অন্যান্য অনেক জায়গায় ব্যবহৃত হয়।
এটি যা করে তা হ'ল:
- এটি প্রতিটি আউটপুট নিউরনের জন্য ত্রুটি গণনা করে।
- এটি নেটওয়ার্কে ব্যাকপ্রোপেট করে (প্রতিটি অভ্যন্তরীণ নিউরনের জন্য একটি ত্রুটি গণনা করে)।
- এটি সূত্রের সাহায্যে ওজন আপডেট করে: ( ওজনে পরিবর্তন, শেখার গতি, স্ন্যাপস থেকে ইনপুট প্রাপ্ত নিউরনের ত্রুটি এবং সিনপেসে পাঠানো আউটপুট হওয়ায়)।
- এটি ডেটাসেটের প্রতিটি প্রবেশের জন্য পুনরাবৃত্তি করে, যত বার প্রয়োজন হয়।
তবে, এই টিউটোরিয়ালে প্রস্তাবিত নিউরাল নেটওয়ার্ক (গিটহাবের উপরও উপলভ্য) পৃথক কৌশল ব্যবহার করে:
- এটি একটি ত্রুটি ফাংশন ব্যবহার করে (অন্য পদ্ধতিতে ত্রুটির ফাংশন রয়েছে তবে এটি প্রশিক্ষণের জন্য এটি ব্যবহার করে না)।
- এটির একটি অন্য কার্য রয়েছে যা ওজন থেকে শুরু করে চূড়ান্ত ত্রুটি গণনা করতে পারে।
- এটি সেই ক্রিয়াকে হ্রাস করে (গ্রেডিয়েন্ট বংশদ্ভুত মাধ্যমে)।
এখন, কোন পদ্ধতিটি ব্যবহার করা উচিত?
আমার মনে হয় প্রথমটি সবচেয়ে বেশি ব্যবহৃত হয় (কারণ আমি এটি ব্যবহার করে বিভিন্ন উদাহরণ দেখেছি), তবে এটি কি কাজ করে?
বিশেষত, আমি জানি না:
- এটি কি স্থানীয় ন্যূনতমের অধীন বিষয় নয় (যেহেতু এটি চতুর্ভুজ ফাংশন ব্যবহার করে না)?
- যেহেতু প্রতিটি ওজনের তারতম্যটি তার আউটপুট নিউরনের আউটপুট মান দ্বারা প্রভাবিত হয়, তাই ডেটাসেটের এন্ট্রিগুলি কি নিউরনে উচ্চতর মান তৈরি করতে পারে (কেবলমাত্র আউটপুটগুলি নয়) অন্যান্য এন্ট্রিগুলির চেয়ে ওজনকে বেশি প্রভাবিত করে?
এখন, আমি প্রথম কৌশলটি পছন্দ করি, কারণ এটি কার্যকর করা সহজ এবং এটি সম্পর্কে চিন্তা করা সহজ easier
যদিও, এতে যদি আমি উল্লেখ করা সমস্যাগুলি থাকে (যা আমি আশা করি এটি না করে) তবে এটি দ্বিতীয় পদ্ধতিতে ব্যবহার করার কোনও বাস্তব কারণ আছে কি?