কেরাস মডেলের এমএসই সর্বাধিক করুন


11

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

generator = Sequential()
generator.add(Dense(units=50, activation='sigmoid', input_shape=(15,)))
generator.add(Dense(units=1, activation='sigmoid'))
generator.compile(loss='mse', optimizer='adam')

generator.train_on_batch(x_data, y_data)

আমার কী মানিয়ে নিতে হবে, একটি জেনারেটরের মডেল পাওয়ার জন্য যা একটি উচ্চতর এমএসইর মান থেকে লাভ করে?


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

1
আমার একটি জেনারেটর অ্যাডভারসিয়াল নেটওয়ার্ক রয়েছে, যেখানে এমএসইর সাথে বৈষম্যমূলক সংক্ষিপ্ততর হয় এবং জেনারেটর সর্বাধিক হওয়া উচিত। কারণ উভয়ই বিরোধী যারা বিপরীত লক্ষ্যে অনুসরণ করে।
এমা

ঠিক আছে আপনার প্রশ্নটি বেশ বিভ্রান্তিকর ছিল। পরিষ্কার হওয়ার জন্য এটি আপডেট করুন।
জিওকোড

@ জিওকোড আমি করেছি, আপনাকে ধন্যবাদ আপনার কি মনে হয় নেতিবাচক চিহ্ন সহ মার্কো থেকে সমাধানটি সঠিক?
এমা

মিনিটের মধ্যে আমার আপডেটটি দেখুন
জিওকোড

উত্তর:


5

হালনাগাদ:

মূল এমএসই বাস্তবায়ন নীচের মত দেখাচ্ছে:

def mean_squared_error(y_true, y_pred):
    if not K.is_tensor(y_pred):
        y_pred = K.constant(y_pred)
    y_true = K.cast(y_true, y_pred.dtype)
    return K.mean(K.square(y_pred - y_true), axis=-1)

আমি মনে করি সঠিক ম্যাক্সিমাইজার ক্ষতির ফাংশন:

def mean_squared_error_max(y_true, y_pred):
    if not K.is_tensor(y_pred):
        y_pred = K.constant(y_pred)
    y_true = K.cast(y_true, y_pred.dtype)
    return K.mean(K.square(1 / (y_pred - y_true)), axis=-1)

এমএসই ফাংশনের ক্ষেত্রে, তবে বিপরীত প্রভাব সহ আমরা এইভাবে সর্বদা একটি ধনাত্মক ক্ষতির মান পাই।

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

তাই কেউ যদি চেষ্টা করেও দেখতে চান -loss:

def mean_squared_error(y_true, y_pred):
    if not K.is_tensor(y_pred):
        y_pred = K.constant(y_pred)
    y_true = K.cast(y_true, y_pred.dtype)
    return - K.mean(K.square(y_pred - y_true), axis=-1)


অতিরিক্ত তথ্য:

ওপি লিখেছেন:

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

ইব্রাহিল প্রদত্ত লিঙ্কটি থেকে:

এদিকে, জেনারেটর নতুন, সিন্থেটিক চিত্র তৈরি করছে যা এটি বৈষম্যকারীর কাছে যায়। এটি এমন প্রত্যাশায় এটি করে যে তারাও ভুয়া হলেও, তারা খাঁটি বলে বিবেচিত হবে। জেনারেটরের লক্ষ্য হ'ল পাসেবল হস্ত লিখিত অঙ্কগুলি তৈরি করা: ধরা না পড়ে মিথ্যা বলা। বৈষম্যকারীর লক্ষ্য হ'ল জেনারেটর থেকে আসা চিত্রগুলি ভুয়া হিসাবে চিহ্নিত করা।


সুতরাং এটি একটি অসুবিধাযুক্ত সমস্যা:

ইন GAN আমাদের চূড়ান্ত লক্ষ্য আমাদের দুই পাল্টা দলগুলোর প্রশিক্ষণের discriminator এবং জেনারেটরের একে অপরের বিরুদ্ধে যতটা সম্ভব ভাল হিসাবে পারফর্ম করতে। এর মানে, যখন দুই বেস লার্নিং algorythm বিভিন্ন ধরনের কার্য কিন্তু আছে ক্ষয় ফাংশন যা দিয়ে তারা অর্জন করতে পারেন সন্তোষজনক সমাধান একই অর্থাত binary_crossentropy, তাই মডেলের 'কর্ম এই হারিয়ে কমান হয়।

একটি বৈষম্যমূলক মডেলের সংকলন পদ্ধতি:

self.discriminator.compile(loss='binary_crossentropy', optimizer=optimizer)

একটি জেনারেটর মডেলের সংকলন পদ্ধতি:

self.generator.compile(loss='binary_crossentropy', optimizer=optimizer)

দুই রানারের লক্ষ্য সমাপ্তি হ'ল তাদের ফাইনালে পৌঁছানোর সময়টি ন্যূনতম করা যাতে তারা এই কাজের প্রতিযোগী হয়।

সুতরাং "বিপরীত লক্ষ্য" মানে বিপরীত কাজটি নয় অর্থ ক্ষয়কে হ্রাস করা (অর্থাত্ রানার উদাহরণে সময়কে হ্রাস করা)।

আমি আসা করি এটা সাহায্য করবে.


5

প্রশ্নটি আমার কাছে খুব একটা পরিষ্কার নয়। আমি মনে করি আপনি এমএসই এর মাপদণ্ডটি ব্যবহার করার সময়, ছোট করার পরিবর্তে সর্বাধিক করতে চান।

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

def negative_mse(y,yhat): 
    return - K.mean(K.sum(K.square(y-yhat)))

model.compile(loss=negative_mse, optimizer='adam')

অন্য বিকল্পটি কেবল একটি নেতিবাচক শিক্ষার পদক্ষেপ সরবরাহ করা - তবে আমি নিশ্চিত নই যে কেরাস আপনাকে এটি করার অনুমতি দেয়। ব্যবহার করে দেখুন মূল্য.


আপনি কি আপনার কার্যক্রমে নেতিবাচক চিহ্নটি ভুলে গেছেন?
এমা

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