কনভ্যুশনাল নিউরাল নেটওয়ার্কের জন্য আপনার কতটা ডেটা দরকার?


15

যদি আমার কাছে কনভোলসনাল নিউরাল নেটওয়ার্ক (সিএনএন) থাকে, যার প্রায় 1,000,000 প্যারামিটার রয়েছে, তবে কত প্রশিক্ষণের ডেটা প্রয়োজন (ধরুন আমি স্টোকাস্টিক গ্রেডিয়েন্ট বংশোদ্ভূত করছি)? থাম্বের কোনও নিয়ম আছে?

অতিরিক্ত নোট: আমি যখন স্টোকাস্টিক গ্রেডিয়েন্ট বংশোদ্ভূত (উদাহরণস্বরূপ, 1 পুনরাবৃত্তির জন্য 64 প্যাচগুলি) সম্পাদনা করি, তখন, 10000 পুনরাবৃত্তির পরে, শ্রেণিবদ্ধের যথার্থতা মোটামুটি স্থির মান পর্যন্ত পৌঁছতে পারে)। এর অর্থ কি অনেকগুলি ডেটার প্রয়োজন হয় না? 100k-1000k ডেটা পছন্দ করুন।

উত্তর:


12

আরও ডেটা সহায়ক হবে কি না তা নির্ধারণের জন্য, আপনার প্রশিক্ষণ ডেটাতে (যেমন স্নায়বিক নেটওয়ার্ক প্রশিক্ষণে ব্যবহৃত ডেটা) আপনার অ্যালগরিদমের পারফরম্যান্সের সাথে টেস্টিং ডেটা (যেমন নিউরাল নেটওয়ার্কটি করেছে ডেটা প্রশিক্ষণে "দেখুন" নয়)।

একটি ভাল জিনিস যাচাইয়ের সংখ্যা হিসাবে একটি ফাংশন হিসাবে প্রতিটি সেট এর ত্রুটি (বা নির্ভুলতা) হবে। এর ফলাফলের জন্য দুটি সম্ভাবনা রয়েছে:

1) প্রশিক্ষণ ত্রুটি পরীক্ষার ত্রুটির তুলনায় উল্লেখযোগ্যভাবে কম মানকে রূপান্তর করে। যদি এটি হয় তবে আপনার অ্যালগরিদমের কার্যকারিতা আরও ডেটা দিয়ে প্রায় উন্নত হবে।

2) প্রশিক্ষণ ত্রুটি এবং পরীক্ষার ত্রুটি একই মান সম্পর্কে রূপান্তরিত হয় (প্রশিক্ষণের ত্রুটিটি এখনও পরীক্ষার ত্রুটির চেয়ে কিছুটা কম) lower এক্ষেত্রে অতিরিক্ত তথ্য আপনার অ্যালগরিদমকে সাহায্য করবে না। আপনি যদি এই মুহুর্তে পাওয়ার চেয়ে ভাল পারফরম্যান্সের প্রয়োজন হয় তবে আপনার নিজের লুকানো স্তরগুলিতে আরও নিউরন যুক্ত করার চেষ্টা করুন, বা আরও লুকানো স্তর যুক্ত করার চেষ্টা করা উচিত। যদি পর্যাপ্ত লুকানো ইউনিট যুক্ত করা হয় তবে আপনি দেখতে পাবেন যে আপনার পরীক্ষার ত্রুটি প্রশিক্ষণের ত্রুটির চেয়ে লক্ষণীয়ভাবে উচ্চতর হয়ে উঠবে এবং আরও তথ্য সেই মুহূর্তে সহায়তা করবে।

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


3

নিষ্পাপ উত্তর হ'ল সর্বদা আরও ডেটা প্রয়োজন। আরও যুগের জন্য একই ডেটাসেট বলার ফলে আপনাকে ফলাফলটিকে "পরিমার্জন" করতে সহায়তা করে তবে বেশি তথ্য থাকার ফলে আপনি ফলাফলটিকে উন্নত করেন না।

উদাহরণ হিসাবে আমি একটি বাক্যকে প্রশিক্ষণ দিচ্ছি বাক্য মডেলিং করতে এবং পরীক্ষা করার জন্য যদি আমার আরও ডেটা দরকার হয় তবে আমি আমার প্রশিক্ষণ ডেটাसेटকে আরও ছোট সাবসেটে বিভক্ত করার চেষ্টা করেছি এবং এটি পরীক্ষার চেষ্টা করছি।

10 টি পুনরাবৃত্তির জন্য পুরো ডেটাसेट এবং প্রশিক্ষণটি ব্যবহার করে আমি আমার বেঞ্চমার্কে 93% যথার্থতা পেয়েছি এবং এটি উন্নতি করে চলেছে। পরিবর্তে যখন আমি 100 টি পুনরাবৃত্তির জন্য ডেটাसेटের 10% এ পুনরাবৃত্তি করি তখন আমি 85% পেয়েছি।

সুতরাং সর্বদা আরও ডেটা রাখার চেষ্টা করুন তবে আপনি যদি না পারেন তবে আরও বেশি সময় লাগানো একটি দুর্দান্ত বাণিজ্য হতে পারে তবে শেষ পর্যন্ত আপনার মডেলটি আরও ভাল রূপান্তরিত করে যদি আপনি সর্বদা নতুন ডেটা দিয়ে নেটওয়ার্ককে খাওয়ান।


1
আপনার উত্তরের জন্য ধন্যবাদ! হ্যাঁ, আমি জানি আপনার যত বেশি তথ্য থাকবে, তত ভাল হবেন তবে আপনার ঠিক কতটা ডেটা দরকার তা আমি নিশ্চিত নই। কারণ সবসময় আপনার আরও ডেটা থাকতে পারে না। উদাহরণস্বরূপ, টিকা
রচনার

তার মানে কি যদি আমার একটি ছোট ডেটাसेट থাকে তবে আমার মডেলটি রূপান্তর করবে না?
সংসার

3

আমি অনুমান করি যে সবচেয়ে গুরুত্বপূর্ণ বিষয়টি হ'ল আপনার ডেটাতে থাকা নমুনাগুলি ভালভাবে ছড়িয়ে পড়েছে, কারণ আপনার যতই ডেটা থাকুক না কেন, আরও ডেটা সবসময়ই ভাল। সর্বোপরি, আপনি যদি বিড়াল এবং কুকুরের ছবিগুলির মধ্যে পার্থক্য জানার চেষ্টা করেন, তবে আপনি কেবল এটি বিড়ালের চিত্রগুলি খাওয়াতে পারলে আপনার মডেলটি ভাল পারফর্ম করতে পারে না expect

কেভিন এল এর উত্তরে যেমন পরামর্শ দেওয়া হয়েছে , প্রশিক্ষণ ত্রুটি এবং পরীক্ষার ত্রুটির মধ্যে পার্থক্য বিবেচনা করা বোধগম্য। যদি আপনার পরীক্ষার ডেটা আপনার প্রশিক্ষণ ডেটা থেকে স্বতন্ত্র থাকে, এটি আপনার মডেলটি অনুপলব্ধভাবে ডেটাতে কতটা ভাল জেনারেলাইজ করে তা একটি ইঙ্গিত দেয়। আমি এর সাথে যুক্ত করতে চাই এমন একটি বিষয় হ'ল প্রশিক্ষণ এবং পরীক্ষার ত্রুটির মধ্যে একটি বিরাট পার্থক্য কেবল আপনাকেই বলে দেয় যে আপনার মডেলটি ভাল জেনারেট করে না, অর্থাৎ আপনি প্রশিক্ষণের ডেটাতে বেশি মানিয়ে নিচ্ছেন। আরও ডেটা সম্ভবত সাহায্য করবে, কারণ এখন নেটওয়ার্ককে অতিরিক্ত ডেটা পয়েন্টের মডেল করা প্রয়োজন, অতএব এখন আর এটিকে বেশি মানিয়ে নিতে পারে না। তবে এটি আপনার মডেলটিকে আরও ভালভাবে উন্নত করার জন্য এটি আরও সার্থক হতে পারে। একটি দুর্দান্ত বই থেকে এই অধ্যায় আরও সাধারণীকরণ পেতে কী ধরণের নিয়মিতকরণ বিদ্যমান এবং কীভাবে নেটওয়ার্কগুলিতে সেগুলি প্রয়োগ করা যেতে পারে তা ব্যাখ্যা করে।

আপনি যদি আরও পরিমাণের পরিমাপ খুঁজছেন, আমি সম্প্রতি কোরাসায় এই প্রশ্নটি পেয়েছি। এটি একটি অটো-এনকোডার সম্পর্কিত, তবে আমার ধারণা এটিও আপনার উদাহরণের জন্য প্রযোজ্য। এটি সঠিক কিনা আমার কোনও ধারণা নেই (দয়া করে আমাকে জানান) তবে আমি যুক্তি দেব যে উদাহরণস্বরূপ এমএনআইএসটির জন্য, কেউ যুক্তি দিতে পারে যে আপনি সর্বোচ্চ 28 * 28 * 8 * 10 000 = 62 720 000 দিয়ে চিত্রগুলি হ্রাস করার চেষ্টা করছেন 10-10 * 10 000 = 1 000 000 এন্ট্রপির বিট সহ এক-হট এনকোডিংয়ে দশ ক্লাসে এনট্রপি বিট। যেহেতু আমরা আউটপুটে কেবলমাত্র ইন্ট্রপির 1 000 000 বিটগুলিতে আগ্রহী তাই আমরা বলতে পারি যে 1 000 000 পরামিতিগুলির সাথে প্রতিটি পরামিতি একক বিট উপস্থাপন করে যা প্রতি নমুনায় 1e-4 বিট হয় is এর অর্থ আপনার আরও ডেটা লাগবে। অথবা আপনার কাছে খুব বেশি পরামিতি রয়েছে, কারণ 100 পরামিতি সহ, আপনার প্রতি প্যারামিটারে 10 000 বিট রয়েছে এবং তাই প্রতি নমুনায় 1 বিট। যাহোক,


আপনার পরামর্শের জন্য ধন্যবাদ. আমি মনে করি আজকাল লোকেরা একটি নির্দিষ্ট কাজের জন্য ডেটা সংখ্যা হ্রাস করার জন্য বিভিন্ন কৌশল নিয়ে আসে।
রকটিস্টার

0

আপনার নেটওয়ার্কটি যথেষ্ট বৈশিষ্ট্যগুলি শিখেছে কিনা তা সনাক্ত করার জন্য সাধারণত ব্যবহৃত অন্য পদ্ধতিটি প্রাথমিক ফিল্টারগুলি ভিজ্যুয়ালাইজ করা। নেটওয়ার্কটি যদি ভাল প্রশিক্ষিত হয় তবে এটি একটি মসৃণ ফিল্টার প্রদর্শন করা উচিত। একটি শোরগোল ফিল্টার সাধারণত ইঙ্গিত দেয় যে নেটওয়ার্কটি পর্যাপ্ত প্রশিক্ষণ পায় নি বা এটি অতিরিক্ত সাফল্য পেয়েছে। আরও তথ্যের জন্য এই পৃষ্ঠাটি পড়ুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.