কেরাসে ব্যাচ_সাইজের ফলাফলের মানের কোনও প্রভাব আছে?


38

আমি প্রায় ২-৩ মিলিয়ন নিবন্ধ নিয়ে একটি বড় এলএসটিএম নেটওয়ার্ক প্রশিক্ষণ দিতে চলেছি এবং মেমোরি ত্রুটিগুলির সাথে লড়াই করছি (আমি এডাব্লুএস ইসি 2 জি 2 এক্স 2 লার্জ ব্যবহার করি)।

আমি খুঁজে পেয়েছি যে একটি সমাধান হ'ল হ্রাস করা batch_size। তবে, আমি নিশ্চিত নই যে এই পরামিতিটি কেবল মেমরি দক্ষতার সমস্যাগুলির সাথে সম্পর্কিত কিনা বা এটি আমার ফলাফলগুলিতে প্রভাব ফেলবে কিনা। প্রকৃতপক্ষে, আমি আরও লক্ষ্য করেছি যে batch_sizeউদাহরণগুলিতে ব্যবহৃত হয় সাধারণত দুটি শক্তি হিসাবে ব্যবহৃত হয়, যা আমি বুঝতে পারি না।

আমার নেটওয়ার্ক প্রশিক্ষণ নিতে আরও বেশি সময় নেয় কিনা তা আমি আপত্তি করি না তবে আমি জানতে চাই যে batch_sizeভবিষ্যদ্বাণীগুলির গুণমান হ্রাস পাবে কিনা।

ধন্যবাদ।


এই প্রশ্নটি কেরাসের জন্য নির্দিষ্ট নয়। আমি মনে করি যে সাধারণ কনসেসসটি হ'ল ছোট নমুনা আকারগুলি ধীরে ধীরে রূপান্তরিত হয় তবে স্থানীয় মিনিমাতে আটকা পড়ার ঝুঁকি কম
অ্যালেক্স

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

উত্তর:


43

দেড় বছর পরে, আমি আমার উত্তরটিতে ফিরে আসি কারণ আমার আগের উত্তরটি ভুল ছিল।

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

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

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

ভুল, পুরানো উত্তর: [[না, ব্যাচ_সাইজ কেবলমাত্র আপনার শেখার গতিকে প্রভাবিত করে, শেখার মানকে নয় learning ব্যাচ_সাইজেও 2 এর ক্ষমতা হওয়ার দরকার নেই, যদিও আমি বুঝতে পেরেছি যে নির্দিষ্ট প্যাকেজগুলি কেবল 2 এর ক্ষমতা দেয় GP ।]]]]


আমি 32 সাধ্যের তুলনায় কিনতে পারি না তবে আমি 16 সাধ্যের সাথে সামর্থ রাখি। তবে, আমি লক্ষ্য করেছি যে এটি খুব ধীর। আপনি কি মনে করেন যে আমার 16-৩2 এর মধ্যে কিছু মান চেষ্টা করা উচিত বা 16 দিয়ে থাকা উচিত?
হিপোগ্লুসিডো

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

9
আপনি কি নিশ্চিত যে ব্যাচের আকার শিক্ষার মানকে প্রভাবিত করে না? আমার মনে আছে কিছু ব্লগ / কাগজপত্র (?) পড়ে যেখানে তারা বলেছিল যে ছোট ব্যাচগুলি বড় ব্যাচগুলির চেয়ে গোলমাল গ্রেডিয়েন্ট তৈরি করে, তবে শব্দটি স্থানীয় মিনিমা থেকে বেরিয়ে আসতে কার্যকর হতে পারে। যদিও এটি LSTM- তে প্রযোজ্য কিনা / তা নিশ্চিত নয়।
স্ট্যাম্যাক্স

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

2
দেড় বছর পরে এবং এখন অনেক বেশি জ্ঞাতযোগ্য এবং আমি সম্মত। আমি আমার উত্তরটি পরিবর্তন করতে যাচ্ছি
জান ভ্যান ডের ভেগট

11

আমি মনে করি গৃহীত উত্তর সম্ভবত ভুল। গ্রেডিয়েন্ট বংশদ্ভুত অ্যালগরিদমে বিভিন্ন রূপ রয়েছে ।

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

  2. স্টোকাস্টিক গ্রেডিয়েন্ট বংশোদ্ভূত : এখানে এক সময়ের এক-তথ্য বিন্দু অতএব গ্রেডিয়েন্ট আক্রমণাত্মক (কোলাহলপূর্ণ গ্রেডিয়েন্টস) অতএব সেখানে প্রচুর দোলনা (আমরা মোমেন্টাম প্যারামিটারগুলি ব্যবহার করি - উদাহরণস্বরূপ নেস্ট্রোভ এটি নিয়ন্ত্রণ করতে)। সুতরাং এমন একটি সুযোগ রয়েছে যে আপনার দোলাচলগুলি অ্যালগরিদম কোনও স্থানীয় সর্বনিম্নে পৌঁছাতে পারে না ((ডাইভার্জ)।

  3. মিনি-ব্যাচের গ্রেডিয়েন্ট বংশোদ্ভূত : যা একটি ছোট ব্যাচের গড় গ্রেডিয়েন্টের পূর্ববর্তী উভয়কেই গ্রহণ করে। তাই এসজিডির মতো খুব আক্রমণাত্মক নয় এবং অনলাইনে শেখার অনুমতি দেয় যা ভ্যানিলা জিডি কখনও অনুমতি দেয় না।

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

এসজিডি-র নির্দিষ্ট পঠন প্যারামিটার ছিল তাই আমরা অন্যান্য অ্যাডাপটিভ অপটিমাইজারগুলি যেমন অ্যাডাম, অ্যাডাডেল্টা, আরএমএস প্রপ ইত্যাদি শুরু করি যা গ্রেডিয়েন্টগুলির ইতিহাসের ভিত্তিতে লার্নিং প্যারামিটারকে পরিবর্তন করে।


3) মিনিব্যাচ সাধারণত বলা হয়
অ্যালেক্স

@ অ্যালেক্স: পরিবর্তন যুক্ত করেছে।
জিল জং জুক

1
আমি সম্মত হই যে ব্যাচ-আকারের পরামিতি সম্পর্কিত কোনও নিয়ম নেই। তবে এই বিবৃতি - "আপনার মডেলের পারফরম্যান্স আরও ছোট মিনি-ব্যাচ আরও ভাল হবে" - এটি সাধারণ নিয়মের পরিপন্থী। আপনি সাধারণত ব্যাচ আকারের সর্বাধিক চান
MonsieurBeilto

4

অদ্ভুতভাবে যথেষ্ট, আমি দেখতে পেলাম যে কেরাস সহ বৃহত্তর ব্যাচের আকারগুলিতে রূপান্তর করতে আরও বেশি সময় লাগবে।

উদাহরণস্বরূপ, আউটপুট এই স্ক্রিপ্টের keras 'উপর ভিত্তি করে ইন্টিগ্রেশন পরীক্ষা হয়

epochs 15   , batch size 16   , layer type Dense: final loss 0.56, seconds 1.46
epochs 15   , batch size 160  , layer type Dense: final loss 1.27, seconds 0.30
epochs 150  , batch size 160  , layer type Dense: final loss 0.55, seconds 1.74

সম্পর্কিত

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

সম্পাদনা: সময়ের সবচেয়ে বৃদ্ধি batch_sizeগণনার গতি বাড়াতে পছন্দসই হয়, কিন্তু সেখানে এর মাধ্যমে একটি ছোট পদাঙ্ক এর ধরনের তথ্য ব্যবহার করার মত এই কাজ করতে, অন্যান্য সহজ উপায় আছে dtypeযুক্তি, কিনা keras বা tensorflow যেমন float32পরিবর্তেfloat64


বড় ব্যাচগুলির সাথে (এবং সেইজন্যে যুগের তুলনায় কম) আপনার কাছে প্রতি যুগের চেয়ে কম গ্রেডিয়েন্ট আপডেট থাকবে। "প্রশিক্ষণের সময় আপনার ডেটা দিয়ে একটি পাস" করার জন্য "যুগ" কেবল এমএল জার্গন ar আপনি যদি প্রশিক্ষণের গতি বাড়ানোর চেষ্টা করছেন, প্রাচীরের সময় পরিমাপ করুন এবং পর্বগুলি উপেক্ষা করুন।
অ্যান্ড্রু ওয়াগনার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.