আপডেট (18/04/18): পুরানো উত্তরটি এখনও আমার মডেলটিতে কার্যকর প্রমাণিত হয়েছে। কৌশলটি হ'ল পার্টিশন ফাংশন এবং ডিস্ট্রিবিউশনকে আলাদাভাবে মডেল করা, এভাবে সফটম্যাক্সের শক্তিটি কাজে লাগানো।
আপনার পর্যবেক্ষণ ভেক্টর বিবেচনা ধারণ লেবেলগুলি। (1 যদি নমুনা আমি লেবেল এম অন্তর্ভুক্ত থাকে, অন্যথায় 0)। সুতরাং উদ্দেশ্যটি হ'ল ম্যাট্রিক্সকে প্রতি-নমুনা পদ্ধতিতে মডেল করা। সুতরাং মডেল মূল্যায়ন করে । দুটি সম্পত্তি অর্জনের জন্য প্রসারিত করার বিবেচনা করুন :ymyim=δimF(yi,xi)=−logP(yi|xi)yim=Z⋅P(ym)
- বিতরণ ফাংশন:∑mP(ym)=1
- পার্টিশন ফাংশন: লেবেলের সংখ্যা অনুমান করেZ
তারপরে এটি দুটি আলাদাভাবে মডেলিংয়ের বিষয়। বিতরণ ফাংশনটি একটি সফটম্যাক্স স্তর সহ সেরা মডেল করা হয় , এবং পার্টিশন ফাংশনটি একটি রৈখিক ইউনিট দিয়ে মডেল করা যায় ( বাস্তবে আমি এটি হিসাবে ক্লিপ করেছিলাম । পোইসন ইউনিটের মতো আরও পরিশীলিত মডেলিং সম্ভবত আরও ভাল কাজ করবে) work তারপরে আপনি বিতরণ লোকস (ডিস্ট্রিবিউশনের কেএল এবং পার্টিশনে এমএসই) প্রয়োগ করতে বা তাদের পণ্যের উপর নীচের ক্ষতি চেষ্টা করতে পারেন।max(0.01,output)
ব্যবহারিক ক্ষেত্রে, অপটিমাইজারের পছন্দটিও একটি বিশাল পার্থক্য করে। অনুষঙ্গ পদ্ধতির সাথে আমার অভিজ্ঞতা হ'ল এটি অ্যাডাডেল্টার অধীনে সবচেয়ে ভাল কাজ করে (অ্যাডাগ্রেড আমার পক্ষে কাজ করে না, আরএমএসপ্রপ এখনও চেষ্টা করে দেখেনি, এসজিডির পারফরম্যান্সগুলি প্যারামিটার সাপেক্ষে)।
সিগময়েড সম্পর্কে পার্শ্ব মন্তব্য : আমি অবশ্যই সিগময়েড + ক্রসসেন্টরোপি চেষ্টা করেছি এবং এটি কার্যকর হয়নি। মডেলটি কেবল পূর্বাভাস দিতে ঝোঁক , এবং বিতরণ কার্যের বিভিন্নতা ক্যাপচার করতে ব্যর্থ হয়েছিল। (ওরফে, এটি কোনওভাবে পার্টিশনের মডেলিংয়ের জন্য বেশ কার্যকর এবং এর পিছনে গণিতের কারণও থাকতে পারে)Z
আপডেট : (এলোমেলো ভাবে) মনে হচ্ছে ডিরিচলেট প্রক্রিয়াটি লেবেলের সংখ্যার আগে কিছু সংযুক্তির অনুমতি দেবে?
আপডেট : পরীক্ষার মাধ্যমে, পরিবর্তিত কেএল-ডাইভারজেন্স এখনও মাল্টি-লেবেল আউটপুট না দিয়ে বহু-শ্রেণীর আউটপুট দিতে ঝোঁক।
(পুরানো উত্তর)
সিগময়েড ক্রস-এন্ট্রপির সাথে আমার অভিজ্ঞতা খুব সুখকর ছিল না। এই মুহুর্তে আমি একটি পরিবর্তিত কেএল-ডাইভারজেন্সটি ব্যবহার করছি। এটি রূপ নেয়
Loss(P,Q)=∑x|P(x)−Q(x)|⋅∣∣∣logP(x)Q(x)∣∣∣=∑x∣∣∣(P(x)−Q(x))⋅logP(x)Q(x)∣∣∣
যেখানে হ'ল ছদ্ম-বিতরণ এবং হ'ল পূর্বাভাসিত ছদ্ম-বিতরণ (তবে ফাংশনটি আসলে প্রতিসম হয় তাই এটি আসলে কোনও ব্যাপার নয়)
P(x)Q(x)
এগুলি সাধারণ না হওয়ার জন্য সিউডো-বিতরণ বলে। সুতরাং আপনার যদি নির্দিষ্ট নমুনার জন্য 2 টি লেবেল থাকে তবে আপনার থাকতে পারে।∑xP(x)=2
কেরাস প্ররোচনা
def abs_KL_div(y_true, y_pred):
y_true = K.clip(y_true, K.epsilon(), None)
y_pred = K.clip(y_pred, K.epsilon(), None)
return K.sum( K.abs( (y_true- y_pred) * (K.log(y_true / y_pred))), axis=-1)