ক্ষতি ফাংশন

GAN একটি সম্ভাব্যতা বন্টন প্রতিলিপি করার চেষ্টা করে। তাই তাদের ক্ষতির ফাংশন ব্যবহার করা উচিত যা GAN দ্বারা উত্পন্ন ডেটা বিতরণ এবং বাস্তব ডেটা বিতরণের মধ্যে দূরত্ব প্রতিফলিত করে।

আপনি কিভাবে GAN ক্ষতি ফাংশন দুটি বিতরণ মধ্যে পার্থক্য ক্যাপচার করবেন? এই প্রশ্নটি সক্রিয় গবেষণার একটি ক্ষেত্র, এবং অনেক পন্থা প্রস্তাব করা হয়েছে। আমরা এখানে দুটি সাধারণ GAN ক্ষতির ফাংশন সম্বোধন করব, যে দুটিই TF-GAN এ প্রয়োগ করা হয়েছে:

  • minimax লস : GAN চালু করা কাগজে ব্যবহৃত ক্ষতি ফাংশন।
  • Wasserstein ক্ষতি : TF-GAN অনুমানকারীদের জন্য ডিফল্ট ক্ষতি ফাংশন। প্রথম একটি 2017 কাগজে বর্ণিত.

TF-GAN অন্যান্য অনেক ক্ষতি ফাংশন প্রয়োগ করে।

একটি ক্ষতি ফাংশন বা দুটি?

একটি GAN এর দুটি ক্ষতির কাজ থাকতে পারে: একটি জেনারেটর প্রশিক্ষণের জন্য এবং একটি বৈষম্যমূলক প্রশিক্ষণের জন্য। সম্ভাব্যতা বন্টনের মধ্যে দূরত্ব পরিমাপ প্রতিফলিত করতে দুটি ক্ষতি ফাংশন কিভাবে একসাথে কাজ করতে পারে?

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

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

মিনিম্যাক্স লস

GAN-এর প্রবর্তন করা কাগজে, জেনারেটর নিম্নলিখিত ফাংশনটি ছোট করার চেষ্টা করে যখন বৈষম্যকারী এটিকে সর্বাধিক করার চেষ্টা করে:

$$E_x[log(D(x))] + E_z[log(1 - D(G(z)))]$$

এই ফাংশনে:

  • D(x) হল সম্ভাব্যতার বৈষম্যকারীর অনুমান যে বাস্তব ডেটা উদাহরণ x বাস্তব।
  • E x হল সমস্ত বাস্তব ডেটা দৃষ্টান্তের প্রত্যাশিত মান।
  • G(z) হল জেনারেটরের আউটপুট যখন নয়েজ z দেওয়া হয়।
  • D(G(z)) হল একটি জাল উদাহরণ বাস্তব হওয়ার সম্ভাবনার বৈষম্যকারীর অনুমান।
  • E z হল জেনারেটরের সমস্ত র‍্যান্ডম ইনপুটগুলির প্রত্যাশিত মান (কার্যক্রমে, সমস্ত জেনারেট করা জাল উদাহরণের উপর প্রত্যাশিত মান G(z))৷
  • সূত্রটি আসল এবং উৎপন্ন বন্টনের মধ্যে ক্রস-এনট্রপি থেকে উদ্ভূত হয়।

জেনারেটর ফাংশনের log(D(x)) শব্দটিকে সরাসরি প্রভাবিত করতে পারে না, তাই, জেনারেটরের জন্য, ক্ষতি কম করা log(1 - D(G(z))) মিনিমাইজ করার সমতুল্য।

TF-GAN-এ, এই লস ফাংশনের বাস্তবায়নের জন্য minimax_discriminator_loss এবং minimax_generator_loss দেখুন।

পরিবর্তিত Minimax ক্ষতি

মূল GAN কাগজে উল্লেখ করা হয়েছে যে উপরের minimax ক্ষতির ফাংশনটি GAN প্রশিক্ষণের প্রাথমিক পর্যায়ে আটকে যেতে পারে যখন বৈষম্যকারীর কাজ খুব সহজ হয়। কাগজটি তাই জেনারেটরের ক্ষতি সংশোধন করার পরামর্শ দেয় যাতে জেনারেটর log D(G(z)) সর্বাধিক করার চেষ্টা করে।

TF-GAN-এ, এই পরিবর্তনের বাস্তবায়নের জন্য modified_generator_loss দেখুন।

ওয়াসারস্টেইন লস

ডিফল্টরূপে, TF-GAN Wasserstein loss ব্যবহার করে।

এই ক্ষতি ফাংশন GAN স্কিমের পরিবর্তনের উপর নির্ভর করে (যাকে "Wasserstein GAN" বা "WGAN" বলা হয়) যেখানে বৈষম্যকারী আসলে দৃষ্টান্তগুলিকে শ্রেণীবদ্ধ করে না। প্রতিটি উদাহরণের জন্য এটি একটি সংখ্যা আউটপুট. এই সংখ্যাটি একটির কম বা 0-এর বেশি হতে হবে না, তাই আমরা 0.5 কে থ্রেশহোল্ড হিসাবে ব্যবহার করতে পারি না যে একটি দৃষ্টান্ত আসল নাকি নকল। বৈষম্যমূলক প্রশিক্ষণ জাল উদাহরণের চেয়ে বাস্তব উদাহরণের জন্য আউটপুটকে বড় করার চেষ্টা করে।

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

ক্ষতি ফাংশন নিজেই প্রতারণামূলকভাবে সহজ:

সমালোচক ক্ষতি: D(x) - D(G(z))

বৈষম্যকারী এই ফাংশনটি সর্বাধিক করার চেষ্টা করে। অন্য কথায়, এটি বাস্তব দৃষ্টান্তে এর আউটপুট এবং নকল দৃষ্টান্তে এর আউটপুটের মধ্যে পার্থক্য সর্বাধিক করার চেষ্টা করে।

জেনারেটরের ক্ষতি: D(G(z))

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

এই ফাংশনগুলিতে:

  • D(x) হল একটি বাস্তব উদাহরণের জন্য সমালোচকের আউটপুট।
  • G(z) হল জেনারেটরের আউটপুট যখন নয়েজ z দেওয়া হয়।
  • D(G(z)) হল একটি জাল উদাহরণের জন্য সমালোচকের আউটপুট।
  • সমালোচক D এর আউটপুট 1 এবং 0 এর মধ্যে হতে হবে না
  • সূত্রগুলো প্রকৃত এবং উৎপন্ন বন্টনের মধ্যে আর্থ মুভার দূরত্ব থেকে প্রাপ্ত।

TF-GAN-এ, বাস্তবায়নের জন্য wasserstein_generator_loss এবং wasserstein_discriminator_loss দেখুন।

প্রয়োজনীয়তা

Wasserstein GAN (বা WGAN) এর তাত্ত্বিক ন্যায্যতার জন্য প্রয়োজন যে GAN জুড়ে ওজনগুলি ক্লিপ করা হবে যাতে তারা একটি সীমাবদ্ধ সীমার মধ্যে থাকে।

সুবিধা

মিনিম্যাক্স-ভিত্তিক GAN-এর তুলনায় Wasserstein GAN আটকে যাওয়ার জন্য কম ঝুঁকিপূর্ণ এবং অদৃশ্য গ্রেডিয়েন্টের সমস্যা এড়ায়। আর্থ মুভার দূরত্বের একটি সত্যিকারের মেট্রিক হওয়ার সুবিধাও রয়েছে: সম্ভাব্যতা বন্টনের একটি স্থানে দূরত্বের পরিমাপ। ক্রস-এনট্রপি এই অর্থে একটি মেট্রিক নয়।