সঠিক অপ্টিমাইজেশন অ্যালগরিদম কীভাবে চয়ন করবেন?


16

আমার কোনও ফাংশনের সর্বনিম্ন সন্ধান করা উচিত। Http://docs.scipy.org/doc/scipy/references/optimize.htmlডকগুলি পড়ছি আমি দেখতে পাচ্ছি যে বেশ কয়েকটি অ্যালগরিদম একই জিনিস করে, অর্থাৎ সর্বনিম্ন সন্ধান করে। আমার কোনটি বেছে নেওয়া উচিত তা আমি কীভাবে জানব?

তালিকাভুক্ত কিছু অ্যালগরিদম

  • ডাউনহিল সিমপ্লেক্স অ্যালগরিদম ব্যবহার করে কোনও ফাংশন ছোট করুন।
  • বিএফজিএস অ্যালগরিদম ব্যবহার করে কোনও ফাংশন ছোট করুন।
  • ননলাইনার কনজুগেট গ্রেডিয়েন্ট অ্যালগরিদমের সাহায্যে একটি ফাংশন হ্রাস করুন।
  • নিউটন-সিজি পদ্ধতি ব্যবহার করে ফাংশনটি ছোট করুন।
  • পরিবর্তিত পাওলের পদ্ধতিটি ব্যবহার করে কোনও ফাংশন হ্রাস করুন।

আমার ফাংশন রৈখিক মাত্রিকতা 232750 এর কাছাকাছি (এটি প্রতিবার আমার কতগুলি বিভিন্ন গ্রেডিয়েন্টের গণনা করতে হবে), গ্রেডিয়েন্ট এবং ব্যয় একবারে গণনা করতে 2 মিনিট সময় লাগে, সুতরাং সস্তা নয়। আমার মনে হয় না আমার বাধা আছে। এটি নির্বিচারক এবং ক্রমাগত।


আচ্ছা আপনার সমস্যার প্রকৃতিটি আপনাকে খতিয়ে দেখতে হবে: এটি লিনিয়ার কিনা? এর মাত্রা কত? আপনার মূল্য ফাংশন মূল্যায়ন সস্তা? আপনি কীভাবে আপনার ডেরাইভেটিভ (গুলি) বিশ্লেষণ করে এবং / অথবা সস্তায় মূল্যায়ন করতে পারবেন? আপনার কি বাধা আছে? আপনার যদি সীমাবদ্ধতা থাকে তবে আপনি কী অনিয়ন্ত্রিত হয়ে আপনার সমস্যাটি সহজেই লিখতে পারেন? দয়া করে এই বিষয়গুলি আরও ব্যাখ্যা করুন।
usεr11852

@ user11852 এটি লিনিয়ার। মাত্রিকতা প্রায় 50 টি বৈশিষ্ট্যযুক্ত, গ্রেডিয়েন্ট এবং ব্যয় একবারে গণনা করতে 2 মিনিট সময় লাগে, তাই সস্তা নয়। আমার মনে হয় না আমার বাধা আছে।
সিয়ামি

আপনি এখানে "লিনিয়ার" বলতে চাইছেন তা নিশ্চিত নই। আপনার সমস্যা যদি লিনিয়ার হয় তবে গ্রেডিয়েন্ট গণনা করার জন্য ধ্রুবক এবং সস্তা। যদি আপনার উদ্দেশ্যমূলক ক্রিয়াটি লিনিয়ার হয় এবং বাধা না থাকে তবে সর্বনিম্ন হ'ল ইনফিনিটি (বা সম্ভবত 0)।
পল

@ পল: অপ্টিমাইজেশনে রৈখিকতা সাধারণত সীমাবদ্ধতাগুলিকে বোঝায়, কাজটি নিজেই নয়। আমি (ভুলভাবে মঞ্জুরি) ফাংশনটির সাবলীলতার সাথে সম্পর্কিত "লাইনারিটি" উল্লেখ করেছি এবং আমি মনে করি এটি ওপিও উল্লেখ করেছেন referred আমার উত্তরে আমি বেশিরভাগ ক্ষেত্রেই যাইহোক "ধারাবাহিক" বলেছিলাম তার উপর ভিত্তি করে ছিলাম।
ইউএসআর 11852 বলছে 23 ই

উত্তর:


14

আপনি যা বলেছিলেন তার উপর ভিত্তি করে: আমি ধরে নিলাম আপনাকে 50 টি ভেরিয়েবলের জন্য অনুকূল করতে হবে; আমি এটিও ধরে নিয়েছি যে আপনার এমন একটি পরিস্থিতি রয়েছে যে বিশ্লেষণাত্মক ডেরিভেটিভগুলি খুঁজে পাওয়া খুব ব্যয়বহুল (এককভাবে সংখ্যাগুলি বের করা যাক) এবং আপনার অপ্টিমাইজেশনটি সংবিধানবিহীন।

আমাকে চাপ দিন, আপনি 25-30 থেকে 100 ভেরিয়েবলের মধ্যে কিছুটা দুর্ভাগ্যজনক কারণ হয়ে উঠুন যখন এটি বৃহত বা ছোট আকারের অপ্টিমাইজেশনের রুটিনগুলির মধ্যে বাছাইয়ের ক্ষেত্রে কিছুটা গোধূলি অঞ্চল is যদিও তা বলে, কিছুই হারিয়ে যায় না।

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

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

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

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

সংখ্যাসূচক অপ্টিমাইজেশান সম্পর্কিত প্রথম ভাল রেফারেন্সের জন্য সিটিকেলির বই ইটিউটরিভ মেথডস ফর অপটিমাইজেশন আপনাকে বেশ সুন্দরভাবে পেয়েছে ।


ভবিষ্যতের রেফারেন্সের জন্য: আপনি অনুরূপ প্রশ্নের জন্য স্ট্যাকেক্সচেঞ্জের কম্পিউটেশনাল সায়েন্স বিটা পরীক্ষা করতে আগ্রহী হতে পারেন।
usεr11852

উত্তরের জন্য ধন্যবাদ. আসলে, আমার মাত্রিকতা 232,750। আমি প্রতিবার গণনা করা গ্রেডিয়েন্টের সংখ্যা এটি। আমি জিপিইউতে ফাংশন মূল্যায়ন এবং গ্রেডিয়েন্ট গণনা করি। এটি NLopt এর সাথে সামঞ্জস্যপূর্ণ হবে?
সিয়ামি

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

@ usεr11852, লিনিয়ার রিগ্রেশন ব্যয় কার্যকারিতা হ্রাস করার জন্য গ্রেডিয়েন্ট বংশোদ্ভূত ও কিউআর পচন পদ্ধতির তুলনা নিয়েও আলোচনা করতে পারেন? আমার কি আলাদা প্রশ্ন জিজ্ঞাসা করা দরকার?
ডাঃ নিশা অরোরা

@ শ্রনিশাআরোরা: হ্যাঁ। এটি পৃথক প্রশ্নের উপযুক্ত হবে। দয়া করে থ্রেডটি দেখুন লিনিয়ার রিগ্রেশন-এর জন্য গ্রেডিয়েন্ট বংশদ্ভুত কেন ব্যবহার করবেন, যখন কোনও ক্লোজড-ফর্ম গণিতের সমাধান পাওয়া যায়? আপনি সদৃশ এড়ানো নিশ্চিত করতে!
usεr11852 বলেছেন মনিক পুনরায় ইনস্টল করুন

1

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

আপনি যে অ্যালগরিদমগুলির কথা উল্লেখ করেছেন তার মধ্যে গুরুত্বপূর্ণ পার্থক্য হ'ল জ্যাকবীয় বা হেসিয়ান প্রয়োজন হয় বা কেবলমাত্র ফাংশন।

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


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