পাশাপাশি একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল ক্রস এনট্রপি কোনও সীমাবদ্ধ নয় ক্ষতি নয়। যার অর্থ একটি একক খুব ভুল পূর্বাভাস সম্ভাব্যরূপে আপনার ক্ষতি "ব্লক আপ" করতে পারে। সেই দিক থেকে এটি সম্ভব যে একজন বা কয়েকজন আউটলির রয়েছে যা অত্যন্ত খারাপভাবে শ্রেণিবদ্ধ করা হয়েছে এবং এটি ক্ষয়টি বিস্ফোরিত করছে, কিন্তু একই সময়ে আপনার মডেলটি এখনও বাকী ডেটাসেটে শিখছে।
নিম্নলিখিত উদাহরণে আমি খুব সাধারণ ডেটাসেট ব্যবহার করি যেখানে পরীক্ষার তথ্যগুলির মধ্যে একটি আউটলেট থাকে। এখানে "শূন্য" এবং "একটি" শ্রেণি রয়েছে।
এখানে ডেটাসেটটি কেমন দেখাচ্ছে:
আপনি দেখতে পাচ্ছেন যে 2 টি শ্রেণি পৃথক করা অত্যন্ত সহজ: 0.5 এর উপরে এটি শ্রেণি "শূন্য"। ক্লাসের "এক" শ্রেণির একক আউটলেটর কেবলমাত্র পরীক্ষার সেটে "শূন্য" শ্রেণির মাঝখানে রয়েছে। এই আউটলেটটি গুরুত্বপূর্ণ কারণ এটি ক্ষতির ক্রিয়াতে গণ্ডগোল হবে।
আমি এই ডেটাসেটে একটি 1 লুকানো নিউরাল নেটওয়ার্ক প্রশিক্ষণ দিচ্ছি, আপনি ফলাফলগুলি দেখতে পারেন:
ক্ষতি বাড়তে শুরু করে, তবে যথাযথতা তবুও বাড়তে থাকে।
প্রতি নমুনা হিসাবে ক্ষতির ফাংশনটির একটি হিস্টোগ্রাম প্লট করা স্পষ্টভাবে বিষয়টি দেখায়: বেশিরভাগ নমুনার জন্য ক্ষতিটি আসলে খুব কম হয় (0-তে বড় বার) এবং সেখানে একটি বিশাল ক্ষয়ক্ষতি (17 এ ছোট বার) সহ একটি বহিরাগত রয়েছে। যেহেতু মোট লোকসান গড় হয় আপনি সেই সেটটিতে একটি উচ্চ ক্ষতি পান যদিও এটি সমস্ত পয়েন্টে তবে একটিতে খুব ভাল পারফর্ম করে।
বোনাস: ডেটা এবং মডেলের জন্য কোড
import tensorflow.keras as keras
import numpy as np
np.random.seed(0)
x_train_2 = np.hstack([1/2+1/2*np.random.uniform(size=10), 1/2-1.5*np.random.uniform(size=10)])
y_train_2 = np.array([0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1])
x_test_2 = np.hstack([1/2+1/2*np.random.uniform(size=10), 1/2-1.5*np.random.uniform(size=10)])
y_test_2 = np.array([0,0,0,1,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1])
keras.backend.clear_session()
m = keras.models.Sequential([
keras.layers.Input((1,)),
keras.layers.Dense(3, activation="relu"),
keras.layers.Dense(1, activation="sigmoid")
])
m.compile(
optimizer=keras.optimizers.Adam(lr=0.05), loss="binary_crossentropy", metrics=["accuracy"])
history = m.fit(x_train_2, y_train_2, validation_data=(x_test_2, y_test_2), batch_size=20, epochs=300, verbose=0)
টি এল; ডিআর
আপনার ক্ষতি কয়েকজন বিদেশি দ্বারা ছিনতাই করা হতে পারে, আপনার বৈধতা সেটের পৃথক নমুনাগুলিতে আপনার ক্ষতি ফাংশনের বিতরণ পরীক্ষা করুন। যদি গড়ের চারপাশে মানগুলির একটি গুচ্ছ থাকে তবে আপনি অত্যধিক মানানসই। যদি স্বল্প সংখ্যাগরিষ্ঠ গোষ্ঠীর চেয়ে খুব বেশি কয়েকটি মান থাকে তবে আপনার ক্ষতিটি বিদেশী দ্বারা প্রভাবিত হচ্ছে :)