বিএফজিএস বনাম কনজুগেট গ্রেডিয়েন্ট পদ্ধতি


25

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


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

মাত্র ~ 7 ফিট করতে হবে (অবশ্যই 10 এর চেয়ে কম) ভেরিয়েবলের অর্থ হেসিয়ান আনুমানিকতা কেবলমাত্র (সর্বাধিক) একটি 10x10 ম্যাট্রিক্স সঠিক? কোন ক্ষেত্রে, একটি অন্যের চেয়ে দ্রুত?
drjrm3

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

উত্তর:


13

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

বিপরীতে, সিজির জন্য ম্যাট্রিক্স-ভেক্টর পণ্যগুলির প্রয়োজন, যা আপনি কার্যকর হতে পারেন যদি আপনি নির্দেশিক ডেরিভেটিভগুলি (আবার বিশ্লেষণাত্মকভাবে, বা সীমাবদ্ধ পার্থক্যগুলি ব্যবহার করে) গণনা করতে পারেন be দিকনির্দেশক ডেরিভেটিভের একটি সীমাবদ্ধ পার্থক্য গণনা হেসিয়ানের সীমাবদ্ধ পার্থক্য গণনার তুলনায় অনেক কম সস্তা হবে, তাই আপনি যদি সীমাবদ্ধ পার্থক্য ব্যবহার করে আপনার অ্যালগরিদম তৈরির জন্য বেছে নেন, তবে সরাসরি দিকনির্দেশক ডেরিভেটিভ গণনা করুন। এই পর্যবেক্ষণটি অবশ্য BFGS- এর ক্ষেত্রে প্রযোজ্য নয়, যা গ্রেডিয়েন্ট তথ্যের অভ্যন্তরীণ পণ্যগুলি ব্যবহার করে আনুমানিক হেসিয়ানদের গণনা করবে।

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

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

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

  • উত্স থেকে উত্স এডি সরঞ্জাম
  • অপারেটর ওভারলোডিং এডি সরঞ্জাম

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


22

mm

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

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

m


আমি L-BFGS সম্পর্কে সম্পূর্ণ ভুলে গেছি। +1 এর জন্য
জেএম

15

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

বিএফজিএস বা সিজি উভয়েরই জড়তা সম্পর্কে কোনও অনুমানের প্রয়োজন নেই; শুধুমাত্র প্রাথমিক হেসিয়ান আনুমানিকতা (বিএফজিএসের জন্য) শ্রদ্ধা। পূর্বশর্ত (সিজির জন্য) অবশ্যই ইতিবাচক সুনির্দিষ্ট হতে হবে। তবে এগুলি সর্বদা খুব বেশি ক্ষতি ছাড়াই স্বল্প মাত্রায় পরিচয় ম্যাট্রিক্স হিসাবে বেছে নেওয়া যেতে পারে। Https://scicomp.stackexchange.com/a/3213/1117 এও দেখুন

প্রোগ্রামযুক্ত গ্রেডিয়েন্টের অভাবে, সংখ্যাযুক্ত গ্রেডিয়েন্টগুলি ব্যবহার করার জন্য এটি প্রচেষ্টার এক বড় অপচয়, বিশেষত যখন ফাংশনের মান ব্যয়বহুল। বরং, একটি ডেরাইভেটিভ-মুক্ত অ্যালগরিদম ব্যবহার করা উচিত। সাম্প্রতিক জরিপের জন্য http://archimedes.cheme.cmu.edu/?q=dfocomp দেখুন ।


লিঙ্কটি আমাকে একটি "404 পাওয়া যায়নি" দেয়, আপনি কি এটি ঠিক করতে পারেন?
স্টিফেল

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