গ্রেডিয়েন্টডেসেন্টঅপটিমাইজার এবং অ্যাডামঅপটিমাইজার (টেনসরফ্লো) এর মধ্যে পার্থক্য?


45

আমি একটি সহজ লিখেছি MLP মধ্যে TensorFlow যা মডেলিং করা হয় XOR যাও-গেট

অনেক দূরে:

input_data = [[0., 0.], [0., 1.], [1., 0.], [1., 1.]]

এটি নিম্নলিখিত উত্পাদন করা উচিত:

output_data = [[0.], [1.], [1.], [0.]]

নেটওয়ার্কটিতে একটি ইনপুট স্তর, একটি লুকানো স্তর এবং প্রতিটি 2, 5 এবং 1 টি নিউরন সহ একটি আউটপুট স্তর রয়েছে।

বর্তমানে আমার নিচের ক্রস এনট্রপি রয়েছে:

cross_entropy = -(n_output * tf.log(output) + (1 - n_output) * tf.log(1 - output))

আমি এই সহজ বিকল্পটিও চেষ্টা করেছি:

cross_entropy = tf.square(n_output - output)

পাশাপাশি আরও কিছু চেষ্টা করে।


যাইহোক, আমার সেটআপ কী ছিল তা বিবেচনাধীন, একটির সাথে ত্রুটিটি একটি এর চেয়ে অনেক ধীর গতিতে GradientDescentOptimizerহ্রাস পাচ্ছিল ।AdamOptimizer

প্রকৃতপক্ষে tf.train.AdamOptimizer(0.01)400-800 শেখার পদক্ষেপের পরে সত্যিকারের ভাল ফলাফল তৈরি হয়েছিল (শেখার হারের উপর নির্ভরশীলতায়, যেখানে 0.01সেরা ফলাফল ছিল) যখন tf.train.GradientDescentOptimizerসর্বদা 2000 এরও বেশি শেখার পদক্ষেপের প্রয়োজন হয় না কেন ক্রস এনট্রপি গণনা বা শেখার হারটি ব্যবহৃত হয়েছিল।

কেন এমন হয়? মনে হয় AdamOptimizerএটি সবসময়ই আরও ভাল পছন্দ ?!


2
গ্রেডিয়েন্ট বংশদ্ভুতের চেয়ে অ্যাডাম অপ্টিমাইজার আরও পরিশীলিত (এটি এই কাগজের উপর ভিত্তি করে )।
মার্ক Claesen

উত্তর:


77

tf.train.AdamOptimizerব্যবহারসমূহ Kingma এবং Ba এর আদম অ্যালগরিদম শেখার হার নিয়ন্ত্রন করতে পারেন। অ্যাডাম সহজ থেকে বেশ কয়েকটি সুবিধা দেয় tf.train.GradientDescentOptimizer। সর্বাগ্রে হ'ল এটি প্যারামিটারগুলির গতিশীল গড় (গতিবেগ) ব্যবহার করে; বেনজিও এই গবেষণাপত্রের ৩.১.১ বিভাগে কেন এটি উপকারী তা কারণগুলি নিয়ে আলোচনা করেছেন । সোজা কথায়, এটি অ্যাডামকে একটি বৃহত্তর কার্যকর ধাপের আকার ব্যবহার করতে সক্ষম করে এবং অ্যালগরিদম সূক্ষ্ম সুর ছাড়াই এই ধাপের আকারে রূপান্তরিত করে।

অ্যালগরিদমের মূল নীচের দিকটি হ'ল প্রতিটি প্রশিক্ষণ ধাপে প্রতিটি প্যারামিটারের জন্য অ্যাডামের আরও গণনা করা প্রয়োজন (চলমান গড় এবং বৈকল্পিকতা বজায় রাখতে এবং স্কেলড গ্রেডিয়েন্ট গণনা করুন); এবং প্রতিটি প্যারামিটারের জন্য আরও স্থিতি বজায় রাখতে হবে (প্রতিটি প্যারামিটারের গড় এবং বৈকল্পিক সঞ্চয় করার জন্য মডেলের আকার প্রায় তিনগুণ)। একটি সরল tf.train.GradientDescentOptimizerসমানভাবে আপনার MLP ব্যবহার করা যেতে পারে, কিন্তু আরো hyperparameter টিউনিং প্রয়োজন আগেই দ্রুত মিলিত করবে।


5
এই উত্তরের জন্য ধন্যবাদ! আপনি যখন " হাইপারপ্যারামিটার টিউনিং " সম্পর্কে কথা বলছেন তখন আপনি ঠিক কী যুক্ত করতে পারেন ?
daniel451

12
জারগনের জন্য দুঃখিত! প্রায় বলতে গেলে, আমি বোঝাতে চাইছি " কনস্ট্রাক্টরের learning_rateপক্ষে tf.train.GradientDescentOptimizerতর্কটি ভিন্নতর করা যতক্ষণ না এটি দ্রুত রূপান্তরিত করে।" :)
মি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.