নিউরাল নেটওয়ার্কে ব্যাচের আকার কত?


174

আমি Python Keras packageনিউরাল নেটওয়ার্কের জন্য ব্যবহার করছি । এই লিঙ্কটি । অর্থাৎ batch_sizeপরীক্ষা নমুনা সংখ্যা সমান? উইকিপিডিয়া থেকে আমাদের এই তথ্য আছে:

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

উপরের তথ্যগুলি পরীক্ষার ডেটা বর্ণনা করছে? এটি কি batch_sizeকেরাসের মতো (গ্রেডিয়েন্ট আপডেটে নমুনার সংখ্যা)?


3
ক্লাস.সোর্স.আর.এ.এম.এল-005 / নির্বাচন / প্রিভিউ কোর্সটি দেখতে ভাল , বিশেষত আপনার জন্য সপ্তাহ 4-6 + 10। উইকিপিডিয়া নিউরাল নেটওয়ার্কগুলি শেখার জন্য এত মূল্যবান সংস্থান হতে পারে না।
404pio

উত্তর:


228

ব্যাচ আকার নমুনা যে নেটওয়ার্কের মাধ্যমে প্রচারিত হবে সংখ্যা সংজ্ঞায়িত করে।

উদাহরণস্বরূপ, ধরা যাক আপনার কাছে 1050 প্রশিক্ষণের নমুনা রয়েছে এবং আপনি batch_size100 এর সমান সেট আপ করতে চান । অ্যালগরিদম প্রশিক্ষণ ডেটাসেট থেকে প্রথম 100 টি নমুনা (প্রথম থেকে 100 তম) নেয় এবং নেটওয়ার্কটি প্রশিক্ষণ দেয়। এরপরে, এটি দ্বিতীয় 100 নমুনা নেয় (101 তম থেকে 200 তম) এবং আবার নেটওয়ার্ক প্রশিক্ষণ দেয়। আমরা নেটওয়ার্কের মাধ্যমে সমস্ত নমুনা প্রচার না করা পর্যন্ত আমরা এই পদ্ধতিটি চালিয়ে যেতে পারি। নমুনার শেষ সেট নিয়ে সমস্যা হতে পারে happen আমাদের উদাহরণস্বরূপ, আমরা 1050 ব্যবহার করেছি যা 100 না করে বাকী ছাড়াই বিভাজ্য নয়। সবচেয়ে সহজ সমাধানটি হ'ল চূড়ান্ত 50 টি নমুনা পাওয়া এবং নেটওয়ার্কটি প্রশিক্ষণ দেওয়া।

ব্যাচের আকার ব্যবহারের সুবিধা <সমস্ত নমুনার সংখ্যা:

  • এর জন্য কম স্মৃতি দরকার। যেহেতু আপনি কম নমুনা ব্যবহার করে নেটওয়ার্কটি প্রশিক্ষণ করছেন, সামগ্রিক প্রশিক্ষণ পদ্ধতির জন্য কম মেমরি দরকার। এটি বিশেষত গুরুত্বপূর্ণ যদি আপনি আপনার মেশিনের স্মৃতিতে পুরো ডেটাসেট ফিট করতে সক্ষম না হন।

  • সাধারণত নেটওয়ার্কগুলি মিনি-ব্যাচগুলির সাথে দ্রুত প্রশিক্ষণ দেয়। কারণ আমরা প্রতিটি প্রচারের পরে ওজন আপডেট করি। আমাদের উদাহরণে আমরা 11 টি ব্যাচ প্রচার করেছি (তাদের 10 টিতে 100 টি নমুনা ছিল এবং 1 টিতে 50 টি নমুনা ছিল) এবং তাদের প্রত্যেকের পরে আমরা আমাদের নেটওয়ার্কের পরামিতিগুলি আপডেট করেছি। যদি আমরা প্রচারের সময় সমস্ত নমুনা ব্যবহার করি তবে আমরা নেটওয়ার্কের পরামিতিগুলির জন্য কেবল 1 টি আপডেট করব।

ব্যাচের আকার ব্যবহারের অসুবিধা <সমস্ত নমুনার সংখ্যা:

  • ব্যাচ যত ছোট হবে গ্রেডিয়েন্টের অনুমান কম কম হবে। নীচের চিত্রটিতে আপনি দেখতে পাচ্ছেন যে মিনি ব্যাচের গ্রেডিয়েন্টের (সবুজ রঙ) দিকটি পুরো ব্যাচের গ্রেডিয়েন্টের (নীল বর্ণ) দিকের তুলনায় অনেক বেশি ওঠানামা করে।

বিভিন্ন ব্যাচের সেটআপগুলির জন্য গ্রেডিয়েন্ট দিকনির্দেশ

স্টোকাস্টাস্টিক batch_size1 এর সমান একটি মিনি-ব্যাচ that সেক্ষেত্রে, গ্রেডিয়েন্টটি একটি মিনি-ব্যাচের গ্রেডিয়েন্টের চেয়ে আরও বেশি বার তার দিক পরিবর্তন করে।


তোমার উত্তরের জন্য ধন্যবাদ. আপনি কি সাথে কাজ করেন Keras? যাইহোক এই প্যাকেজে পরীক্ষার ডেটা সেট করতে?
ব্যবহারকারী 2991243

3
না, আমি করিনি। এটি নিউরাল নেটওয়ার্কগুলির জনপ্রিয় কৌশল এবং এই পরিভাষাটি আপনি বিভিন্ন লাইব্রেরি, বই এবং নিবন্ধগুলিতে দেখতে পারেন। আপনি কি প্রতিটি পর্বে পরীক্ষার ডেটা ত্রুটি পরীক্ষা করতে চান বা প্রশিক্ষণের পরে কেবল মডেলটি যাচাই করতে চান?
itdxer

হ্যাঁ. সেটা সত্য. আমাদের অনুরূপ কাঠামো আছে MATLABতবে আমি এখানে কেবল ট্রেন এবং বৈধতা ডেটা-সেট পেয়েছি। আমি মনে করি এখানে এই প্যাকেজের বৈধতা ডেটা-সেটটি পরীক্ষার ডেটা হিসাবে একই তবে তাড়াতাড়ি থামছে না তাই আমাদের কোনও সত্যিকারের বৈধতা ডেটা নেই।
ব্যবহারকারী 2991243

1
আপডেটের সংখ্যা যথেষ্ট বেশি হওয়ায় নেটওয়ার্কটিও দ্রুত রূপান্তরিত হয়। মিনি ব্যাচের আকার নির্ধারণ করা এক ধরনের শিল্প, খুব ছোট এবং আপনি আপনার পড়াশোনাটিকে খুব স্টোকাস্টিক, দ্রুততর করে তোলার ঝুঁকিপূর্ণ তবে এটি অবিশ্বাস্য মডেলগুলিতে রূপান্তরিত করবে, এটি অনেক বড় এবং এটি স্মৃতিতে ফিট হবে না এবং এখনও যুগে যুগে গ্রহণ করবে take
রামালহো

1
সাধারণত যখন লোকেরা অনলাইন শিখার অর্থ তাদের বোঝায় batch_size=1। অনলাইন শিক্ষার পিছনে ধারণাটি হ'ল উদাহরণটি দেখার সাথে সাথে আপনি নিজের মডেলটি আপডেট করুন। বৃহত্তর ব্যাচের আকারের সাথে এর অর্থ হ'ল প্রথমে আপনি আপডেট করার আগে একাধিক নমুনা সন্ধান করছেন। ব্যাচের আরএনএন আকারে বিভিন্ন অর্থ হতে পারে। সাধারণত, প্রশিক্ষণের ক্রমটি স্থির আকারের উইন্ডোতে বিভক্ত করা সাধারণ (যেমন 10 শব্দ)। এই ক্ষেত্রে প্রশিক্ষণের সময় এই উইন্ডোগুলির 100 টি সহ আপনার অর্থ হবে batch_size=100
itdxer

151

নিউরাল নেটওয়ার্ক পরিভাষায়:

  • এক যুগ = একটি ফরোয়ার্ড পাস এবং সমস্ত প্রশিক্ষণের উদাহরণগুলির একটি পিছনে পাস
  • ব্যাচের আকার = এক ফরোয়ার্ড / পিছিয়ে পাসে প্রশিক্ষণের উদাহরণগুলির সংখ্যা। ব্যাচের আকার যত বেশি হবে আপনার মেমরির আরও বেশি স্থানের প্রয়োজন হবে।
  • সংখ্যা পুনরাবৃত্তিও = পাস সংখ্যা, প্রতিটি পাস ব্যবহার [ব্যাচ SIZE] উদাহরণ সংখ্যা। পরিষ্কার হওয়ার জন্য, একটি পাস = একটি ফরোয়ার্ড পাস + একটি পশ্চাৎ পাস (আমরা দুটি আলাদা পাস হিসাবে ফরোয়ার্ড পাস এবং পিছনের পাস গণনা করি না)।

উদাহরণ: আপনার যদি 1000 টি প্রশিক্ষণের উদাহরণ থাকে এবং আপনার ব্যাচের আকার 500 হয় তবে 1 যুগটি শেষ করতে এটি 2 টি পুনরাবৃত্তি গ্রহণ করবে।

এফওয়াইআই: ট্রেড অফ ব্যাচের আকার বনাম একটি নিউরাল নেটওয়ার্ক প্রশিক্ষণের জন্য পুনরাবৃত্তির সংখ্যা


তবে [ব্যাচের আকার] উদাহরণগুলির সংখ্যা ব্যবহার এবং প্রতিটি উদাহরণে নেটওয়ার্ক প্রশিক্ষণ এবং পরবর্তী [ব্যাচের আকার] সংখ্যার উদাহরণ দিয়ে এগিয়ে চলার মধ্যে পার্থক্য কী। যেহেতু আপনি নেটওয়ার্কের মাধ্যমে একটি উদাহরণ পাস করেন এবং এসজিডি প্রয়োগ করেন এবং পরবর্তী উদাহরণটি গ্রহণ করেন এবং ব্যাচের আকার 10 বা 1000 বা 100000 হয় তবে এতে কোনও তাত্পর্য হবে না [ পরবর্তী ব্যাচ অনুসরণ করবে। এটি কেবলমাত্র তখনই পার্থক্য করতে পারে যদি [ব্যাচের আকার] উদাহরণের সংখ্যাগুলি [পুনরাবৃত্তির সংখ্যা] নেটওয়ার্কের পরে পাস করবে এবং তারপরে পরবর্তী [ব্যাচের আকার] উদাহরণগুলি নিয়ে এগিয়ে যাবে।
এরহার্ড ডিনহব্ল

একটি গুরুত্বপূর্ণ পার্থক্য হ'ল লার্নিং স্টেপ (এক ধাপ) প্রতিটি ব্যাচের জন্য একবার প্রয়োগ করা হয়, যখন আপনাকে একটি যুগ শুরু করতে সমস্ত ব্যাচ ঘুরতে হয়। সুতরাং পার্থক্যটি কেবল অ্যালগোরিদমিকও নয় কেবল মেমরিতে নয়: বড় ব্যাচগুলির অর্থ হল আপনি আরও নমুনাগুলির চেয়ে গ্রেডিয়েন্ট গড়েন।
মেডুজ

যুগ এবং পুনরাবৃত্তির মধ্যে পার্থক্য কী?
সোনার নাম

1
@ গোল্ডনাম 1 যুগের সমস্ত প্রশিক্ষণের উদাহরণ অন্তর্ভুক্ত রয়েছে যখন 1 পুনরাবৃত্তিতে কেবল [ব্যাচের আকার] সংখ্যক প্রশিক্ষণের উদাহরণ অন্তর্ভুক্ত রয়েছে।
ফ্রাঙ্ক ডারননকোর্ট

3

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


2

ডকুমেন্টেশন Kerasসম্পর্কে ব্যাচ আকার অধীনে পাওয়া যাবে fitফাংশন মডেল (কার্মিক API এর) পৃষ্ঠা

batch_size: পূর্ণসংখ্যা বা কিছুই নয়। গ্রেডিয়েন্ট আপডেট প্রতি নমুনার সংখ্যা। যদি অনির্ধারিত হয়, ব্যাচ_সাইজ 32 এ ডিফল্ট হবে।

আপনার যদি একটি ছোট ডেটাसेट থাকে, তবে প্রশিক্ষণের ডেটার আকারের সাথে ব্যাচের আকারের সমতুল্য করা ভাল। প্রথমে একটি ছোট ব্যাচ দিয়ে চেষ্টা করুন তারপরে সময় বাঁচাতে বাড়ান। যেমনটি আইডিএক্সার উল্লেখ করেছেন, নির্ভুলতা এবং গতির মধ্যে একটি বাণিজ্য রয়েছে।

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