শব্দার্থক বিভাজন জন্য ক্ষয় ফাংশন


10

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

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

সমস্যাটি দুটি শ্রেণীর সাথে (আগ্রহ এবং পটভূমির বিষয়গুলি) ডিল করে। আমি টেনসরফ্লো ব্যাকএন্ডের সাথে কেরাস ব্যবহার করছি।

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

function(y_pred,y_true),

সাথে চুক্তিতে Keras

দয়া করে জড়িত টেনারগুলির মাত্রা (মডেলের ইনপুট / আউটপুট) দিয়ে সুনির্দিষ্ট হওয়ার চেষ্টা করুন। কোন চিন্তা এবং পরামর্শ অনেক প্রশংসা করা হয়। ধন্যবাদ !


এই arxiv.org/pdf/1511.00561.pdf পড়ুন "আমরা নেটওয়ার্ককে প্রশিক্ষণের উদ্দেশ্যে ক্রস-এনট্রপি ক্ষতি ব্যবহার করি" "
মিস পামার

উত্তর:


6

ক্রস এনট্রপি অবশ্যই যাওয়ার উপায়। আমি কেরাসকে জানি না তবে টিএফের কাছে এটি রয়েছে: https://www.tensorflow.org/api_docs/python/tf/nn/sigmoid_cross_entropy_with_logits

এটি সরাসরি বাস্তবায়িত করার জন্য একটি কাগজ এখানে দেওয়া হয়েছে: শেলহামার এট আল দ্বারা সিমান্টিক বিভাগকরণের জন্য সম্পূর্ণ কনভলিউশনাল নেটওয়ার্কস

ইউ-নেট কাগজ এছাড়াও স্থানিক রেজল্যুশন এড়ানোর ক্ষয় এড়িয়ে সংযোগ ব্যবহার ধারণা একটি খুব সফল বাস্তবায়ন হয়। নেট এ এর ​​অনেক বাস্তবায়ন খুঁজে পেতে পারেন।

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

শ্রেণি-ভারসাম্যহীনতার জন্য https://swarbrickjones.wordpress.com/2017/03/28/cross-entropy-and-training-test-class-imbalance/ দেখুন এখানে ধারণাটি বিভিন্ন শ্রেণীর সাথে ওজন করাα এবং β প্যারামিটার।


আমি এই ডোমেনের বিশেষজ্ঞ নই, তবে ক্লাসগুলি কি এই সেটিংয়ে একচেটিয়া হওয়া উচিত নয়? যদি হ্যাঁ তবে সফটম্যাক্স ক্ষতি আরও ভাল বিকল্প হতে পারে না? tensorflow.org/api_docs/python/tf/nn/…
হ্যারাল্ড থমসন

1
@ হারাল্ড থমসন, বিভাজন একটি বাইনারি সমস্যা। অনেকে বাইনারি সমস্যার জন্য সফটম্যাক্স ব্যবহার করেন তবে এটি সম্পূর্ণ অপ্রয়োজনীয় এবং ওভারকিল। দুটি আউটপুট নোড থাকার পরিবর্তে, একটি আউটপুট নোড রয়েছে যা পি (y = 1) উপস্থাপন করে, তারপরে ক্রস-এনট্রপি ব্যবহার করুন।
রিকার্ডো ক্রুজ

2

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


-1

আমাকে প্রথমে আরও নির্দিষ্ট হতে হবে এবং তারপরে আরও সাধারণ। আমি যদি আপনার ভুল বুঝতে পারি তবে আমি ক্ষমা চাই।

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

আপনি সিএনএন উল্লেখ করার পরে আপনি সাধারণত একটি জটিল মেশিন লার্নিং মডেল তৈরি করছেন বলে মনে হচ্ছে। সিএনএন এবং অন্যান্য গভীর শেখার মডেলগুলি এমন কিছু জটিল মেশিন লার্নিং মডেল যা বিদ্যমান।

মাত্রা, লেবেল এবং ক্ষতির ফাংশন নির্বাচন করা তত বেশি প্রাথমিক মেশিন শেখার মতো। আমি মনে করি আপনি গভীর মাথার উপরে পড়াশোনা করতে পারেন। আপনি কি সরল পুরাতন মেশিন লার্নিংয়ে প্রথম ক্লাস নিয়েছিলেন?


এটি কি প্রয়োজনীয়? উদাহরণস্বরূপ, পিক্সন পদ্ধতি দেখুন
কার্ল

এটি একটি বৈধ পন্থা: arxiv.org/pdf/1511.00561.pdf
মিস পামার

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