উচ্চ ক্ষতির মান সত্ত্বেও ভাল নির্ভুলতা


15

একটি সাধারণ নিউরাল নেটওয়ার্ক বাইনারি শ্রেণিবদ্ধের প্রশিক্ষণের সময় আমি ক্রস-এন্ট্রপি ব্যবহার করে একটি উচ্চ ক্ষতির মান পাই get এটি সত্ত্বেও, বৈধতা সেটটিতে নির্ভুলতার মানটি বেশ ভাল। এর কিছু অর্থ আছে? ক্ষতি এবং নির্ভুলতার মধ্যে কোনও কঠোর সম্পর্ক নেই?

আমি এই মানগুলি প্রশিক্ষণ এবং বৈধকরণের উপর রেখেছি : 0.4011 - acc: 0.8224 - ভাল_লস: 0.4577 - ভাল_এইচসি: 0.7826 । এটি এনএন বাস্তবায়নের জন্য আমার প্রথম প্রচেষ্টা এবং আমি কেবল মেশিন লার্নিংয়ের কাছে পৌঁছেছি, তাই আমি এই ফলাফলগুলি সঠিকভাবে মূল্যায়ন করতে পারছি না।


3
আপনি কি কেবলমাত্র প্রশিক্ষণের সেট বা বৈধতার উপর উচ্চ ক্ষতির মূল্য লক্ষ্য করেন? প্রশিক্ষণ সেট এবং বৈধতা সেট তুলনা করার সময় নির্ভুলতা বা ক্ষতি একটি বড় ড্রপ আছে? কিছু পরিসংখ্যান সহায়ক হবে
হিউ

উত্তর:


20

আমি একটি অনুরূপ সমস্যা অভিজ্ঞতা আছে।

আমি আমার নিউরাল নেটওয়ার্ক বাইনারি ক্লাসিফায়ারকে ক্রস এনট্রপি ক্ষতি সহ প্রশিক্ষণ দিয়েছি। এখানে যুগের ক্রিয়া হিসাবে ক্রস এনট্রপি ফলাফল। লাল প্রশিক্ষণের জন্য এবং নীল হল পরীক্ষার সেট set

যুগের ক্রিয়া হিসাবে ক্রস এনট্রপি।

যথার্থতা দেখিয়ে, আমি পর্বের তুলনায় 1000 এরও বেশি ভাল নির্ভুলতা পাওয়ার জন্য অবাক হয়েছিলাম, এমনকি টেস্ট সেটটির জন্যও!

যুগের কার্য হিসাবে যথার্থতা

ক্রস এনট্রপি এবং নির্ভুলতার মধ্যে সম্পর্কগুলি বুঝতে, আমি একটি সহজ মডেল, লজিস্টিক রিগ্রেশন (একটি ইনপুট এবং একটি আউটপুট সহ) খনন করেছি। নিম্নলিখিতটিতে, আমি কেবল 3 টি বিশেষ ক্ষেত্রে এই সম্পর্কটি বর্ণনা করি।

সাধারণভাবে, ক্রস এনট্রপি যেখানে প্যারামিটার ন্যূনতম হয় সেখানে প্যারামিটারটি হয় না যেখানে নির্ভুলতা সর্বোচ্চ। তবে আমরা ক্রস এনট্রপি এবং যথার্থতার মধ্যে কিছু সম্পর্ক আশা করতে পারি।

[নীচে, আমি ধরে নিলাম যে আপনি জানেন ক্রস এনট্রপি কী, আমরা কেন মডেল ইত্যাদি প্রশিক্ষণের জন্য যথার্থতার পরিবর্তে এটি ব্যবহার করি যদি না হয় তবে দয়া করে প্রথমে এটি পড়ুন: ক্রস এনট্রপি স্কোর কীভাবে ব্যাখ্যা করবেন? ]

চিত্রণ ঘ এইটি দেখানোর জন্য যে ক্রস এনট্রপি ন্যূনতম প্যারামিটারটি সঠিকতা সর্বাধিক যেখানে পরামিতি নয় এবং কেন তা বোঝার জন্য।

এখানে আমার নমুনা তথ্য। আমার 5 টি পয়েন্ট রয়েছে এবং উদাহরণস্বরূপ ইনপুট -1 এর ফলাফল 0 হয়। 5 পয়েন্টের নমুনা

ক্রস এনট্রপি। ক্রস এনট্রপিকে হ্রাস করার পরে, আমি 0.6 এর যথার্থতা পেয়েছি। 0 এবং 1 এর মধ্যে কাটাটি x = 0.52 এ করা হয়। 5 টি মানের জন্য, আমি যথাক্রমে 0.14, 0.30, 1.07, 0.97, 0.43 এর ক্রস এনট্রপি পাই।

সঠিকতা. গ্রিডে নির্ভুলতা সর্বাধিক করার পরে, আমি 0.8-তে পৌঁছানোর জন্য বিভিন্ন ধরণের পরামিতি পাই। কাট x = -0.1 নির্বাচন করে এটি সরাসরি প্রদর্শিত হতে পারে। ভাল, আপনি সেটগুলি কাটতে x = 0.95 নির্বাচন করতে পারেন।

প্রথম ক্ষেত্রে, ক্রস এনট্রপি বড়। প্রকৃতপক্ষে, চতুর্থ পয়েন্টটি কাটা থেকে অনেক দূরে, সুতরাং একটি বৃহত ক্রস এনট্রপি রয়েছে। যথা, আমি যথাক্রমে এর ক্রস এনট্রপি পাই: 0.01, 0.31, 0.47, 5.01, 0.004।

দ্বিতীয় ক্ষেত্রে, ক্রস এনট্রপিও বড়। সেক্ষেত্রে তৃতীয় পয়েন্টটি কাটা থেকে অনেক দূরে, সুতরাং একটি বৃহত ক্রস এনট্রপি রয়েছে। আমি যথাক্রমে এর ক্রস এনট্রপি পাই: 5e-5, 2e-3, 4.81, 0.6, 0.6।

একটিএকটিছোট তথ্য উদাহরণ

এন=100একটি=0.3=0.5 । আমি একটি বড় প্রভাব ফেলতে একটি বীজ নির্বাচন করেছি, তবে অনেকগুলি বীজ সম্পর্কিত আচরণের দিকে পরিচালিত করে।

একটিমাঝারি সেট

একটি

একটি=0.3

এন=10000একটি=1=0

বেশ বড় ডেটা

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

গ্রন্থলিখন: ক্রস এন্ট্রপি এবং নির্ভুলতার সাথে সম্পর্কিত লিখিত বিষয়টি আকর্ষণীয় এবং জটিল, তবে আমি এর সাথে সম্পর্কিত নিবন্ধগুলি খুঁজে পাচ্ছি না ... যথাযথতা অধ্যয়ন করা আকর্ষণীয় কারণ একটি ভুল স্কোরিং নিয়ম থাকা সত্ত্বেও প্রত্যেকে এর অর্থ বুঝতে পারে।

দ্রষ্টব্য: প্রথমে, আমি এই ওয়েবসাইটে একটি উত্তর খুঁজে পেতে চাই, নির্ভুলতা এবং ক্রস এনট্রপির মধ্যে সম্পর্কের সাথে সম্পর্কিত পোস্টগুলি বেশ কয়েকটি তবে কয়েকটি উত্তর সহ দেখুন, দেখুন: তুলনামূলক ট্রেইং এবং পরীক্ষার ক্রস-এন্ট্রোপিজির ফলাফল খুব আলাদা আলাদা ; বৈধতা হ্রাস হ্রাস, কিন্তু বৈধতা নির্ভুলতা অবনতি ; বিভাগীয় ক্রস এন্ট্রপি ক্ষতি ফাংশন নিয়ে সন্দেহ ; শতাংশ হিসাবে লগ-ক্ষতি ব্যাখ্যা করা হচ্ছে ...


খুব ভাল চিত্র। এই চিত্রগুলির দ্বারা অনুপ্রাণিত হয়ে আমি 2 সম্ভাব্য কারণগুলিতে পৌঁছেছি। 1. পূর্বাভাসের জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি নিষ্কাশন করতে মডেল খুব সহজ। আপনার চিত্র 1 এ, এটি বহুগুণিত সমস্যা এবং 100% নির্ভুলতা পেতে আরও একটি স্তর প্রয়োজন।
দিয়ানশেং

1

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

নিম্নলিখিত উদাহরণে আমি খুব সাধারণ ডেটাসেট ব্যবহার করি যেখানে পরীক্ষার তথ্যগুলির মধ্যে একটি আউটলেট থাকে। এখানে "শূন্য" এবং "একটি" শ্রেণি রয়েছে।

এখানে ডেটাসেটটি কেমন দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

আপনি দেখতে পাচ্ছেন যে 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)

টি এল; ডিআর

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


-1

আহস্তাত খুব ভাল চিত্র দেয়।

এই চিত্রগুলির দ্বারা অনুপ্রাণিত হয়ে আমি 2 সম্ভাব্য কারণগুলিতে পৌঁছেছি। 1. পূর্বাভাসের জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি নিষ্কাশন করতে মডেল খুব সহজ। আপনার চিত্র 1 এ, এটি বহুগুণিত সমস্যা এবং 100% নির্ভুলতা পেতে আরও একটি স্তর প্রয়োজন। ২. ডেটাতে অনেকগুলি গোলমাল লেবেল রয়েছে ((চিত্রের তুলনা 1 এবং 3)

উদাহরণ 2 হিসাবে, এটি ব্যাখ্যা করে যে আমরা কেন মডেলটিতে খুব বেশি এল 1 / এল 2 নিয়মিত করতে পারি না।

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