تست مدل یادگیری ماشین با گزارش یک Accuracy یا F1 تمام نمی‌شود. پیش از هر عدد باید بدانیم Model artifact برای کدام Intended Use، روی چه Population و Operating condition، با کدام Label و Split، در چه Threshold و با چه هزینهٔ خطایی ارزیابی می‌شود. بعد هم باید نشان دهیم Test set به آموزش و انتخاب مدل نشت نکرده، Metric با تصمیم واقعی سازگار است، Sliceهای پرریسک پنهان نشده‌اند و Evidence به نسخهٔ دقیق داده، کد و مدل متصل است.

این راهنما یک Evaluation Protocol قابل‌نسخه‌بندی می‌سازد: Intended Use → Claim → Dataset/Split → Label/Oracle → Metric/Threshold → Uncertainty → Slice/Metamorphic/Robustness → Reproducibility → Model Release Gate. هدف «تضمین هوش مصنوعی قابل‌اعتماد» نیست؛ هدف تولید شواهد محدود و صادقانه برای یک تصمیم مشخص دربارهٔ یک Model candidate است.

خلاصهٔ اجرایی پروتکل ارزیابی مدل

  1. Intended Use، Out-of-scope Use و Consequence خطا را تعریف کنید.
  2. Task، Unit of analysis، Population، Label و Prediction horizon را قفل کنید.
  3. Split را پیش از preprocessing/feature selection/tuning و بر اساس زمان/گروه/Dependency طراحی کنید.
  4. Baseline و Candidate، Metric، Averaging، Threshold و Gate را پیش از Test نهایی ثبت کنید.
  5. Confusion matrix، Calibration، Uncertainty و Sliceهای ازپیش‌تعریف‌شده را کنار Metric کل گزارش دهید.
  6. Metamorphic relation، Boundary، Missingness، Perturbation و Shift scenario را با Claim محدود بیازمایید.
  7. Test set نهایی را برای انتخاب مکرر مصرف نکنید؛ Selection و Confirmation را جدا نگه دارید.
  8. Model artifact، Data snapshots، Code/Config/Seed/Environment و Evaluation output را هویت‌گذاری کنید.
  9. PASS را فقط برای شرایط آزموده‌شده بنویسید و Unknown/INCONCLUSIVE را پنهان نکنید.
  10. برای کل AI system، Fairness/Harm، XAI، Privacy و Production Monitoring به مالکان تخصصی متصل شوید.

مرز این مقاله با تست کل سیستم AI/ML

این صفحه فقط Model artifact و پروتکل ارزیابی پیش از Release را مالک است. برای Data/Feature pipeline، Serving API، latency، fallback، Shadow، Drift و Incident به راهنمای تست سیستم‌های AI/ML مراجعه کنید. برای قرارداد خط داده و Replay، تست Data Pipeline مالک محتواست.

Intentمالکمرز با این صفحه
Harm، Fairness، Contestability و Remedyتست اخلاقی AIاینجا فقط Metric/slice contract را مرزبندی می‌کنیم
Explanation fidelity و فهم کاربرتست XAIFeature importance را اثبات علیت نمی‌نامیم
Label/Leakage در Defect-risk productپیش‌بینی ریسک نقصیک Domain case تخصصی است
PII، Purpose، Retention و Data subject rightsتست حریم خصوصی دادهEvaluation data مجوز مصرف مستقل می‌خواهد
ارزیابی ابزار/Agent تست AIارزیابی ابزار AI Testingمحصول مورد ارزیابی متفاوت است
Expected result و Comparator عمومیTest OracleLabel/Metric Oracle را اینجا تخصصی می‌کنیم

Model artifact با ML system یکی نیست

سطحنمونه Claimشاهد مناسب
DatasetPopulation/label/split مناسب استdatasheet، audit، sampling evidence
Feature transformفقط اطلاعات prediction-time را مصرف می‌کندlineage، unit/property tests
Model artifactروی locked test و threshold مشخص معیارها را داردevaluation report
Servingهمان feature/schema/model را اجرا می‌کندcontract/differential test
Human workflowOperator خروجی را درست می‌بیند/استفاده می‌کندusability/human factors
Outcomeسیستم در Context سود/ضرر مشخص داردfield study/monitoring/impact evidence

مدلی با Recall خوب ممکن است در Serving به‌علت Feature skew بد عمل کند؛ سیستم با پیش‌بینی درست ممکن است UI گمراه‌کننده یا Automation bias داشته باشد؛ و Metric فنی بهتر ممکن است Outcome انسانی بهتر نسازد. پس نتیجهٔ Model evaluation را به کل سامانه یا جامعه تعمیم ندهید.

Evaluation، Testing، Verification و Validation

فعالیتپرسشخروجی
VerificationArtifact طبق Specification ساخته شده؟implementation evidence
Evaluationروی Dataset/Metric مشخص چه عددی دارد؟measurement + uncertainty
TestingClaimها زیر Example/Boundary/Relation/Fault چه می‌شوند؟verdict + counterexample
Validationبرای Intended Use و Context مناسب است؟fitness/limit decision
Monitoringشرایط و رفتار پس از Release تغییر کرده؟signal → investigation/response

این اصطلاح‌ها در سازمان‌ها ممکن است متفاوت تعریف شوند؛ قرارداد داخلی را ثبت کنید. بخش Measure در NIST AI RMF Playbook مستندسازی Test set، Metric، ابزار TEVV، شرایط کاربرد، حدود تعمیم و عدم‌قطعیت را توصیه می‌کند. این Playbook داوطلبانه است، checklist اجباری یا گواهی انطباق نیست و خود NIST اعلام کرده AI RMF ۱.۰ در حال بازنگری است.

Intended Use Contract؛ نقطهٔ شروع Metric

model_use_contract:
  use_case: route fictional payment-support cases to human review
  decision: prioritize review queue; never auto-settle or deny
  operator/user: trained support analyst
  subject/unit: one synthetic PaymentAttempt case
  population: declared marketplace support cases
  prediction_target: needs reconciliation within defined horizon
  prediction_time: before analyst review
  available_features: only fields available at prediction_time
  output: score + model/version + limitations
  action/threshold: queue priority under capacity C
  high-cost error: missed timeout-after-commit case
  fallback: ordinary review path
  out_of_scope: credit, fraud accusation, employment, health, identity
  owner/approver: named
  review/expiry: dated

«تشخیص تقلب»، «ریسک مشتری» یا «مدل خوب» Intended Use نیست. Unit، زمان تصمیم، Actor، Action، ظرفیت، Benefit/Harm، fallback و ممنوعیت‌ها باید قابل‌مشاهده باشند. اگر خروجی فقط Queue priority است، Evaluation نباید آن را حکم جرم یا حقیقت دربارهٔ شخص بنامد.

Model Claim Contract

claim_id: M-C1
claim: detect use-critical reconciliation cases for human routing
model_candidate: artifact digest
population/split: locked_test_v2
operating_point: threshold=0.50
metrics:
  overall_recall >= predeclared limit
  critical_slice_recall >= predeclared limit
  false_positive workload <= review capacity
comparators: baseline + prior approved model
uncertainty: method and interval declared
known_unknowns: low support / label delay / excluded cases
required_tests: leakage audit, slice, metamorphic, robustness
verdict_owner: evaluation owner
release_decision_owner: product/risk owner

Claim با Goal فرق دارد. Goal ممکن است «کاهش زمان بررسی» باشد؛ Claim باید قابل‌ردشدن باشد. Threshold و Gate نیز واقعیت علمی جهانی نیستند؛ از Cost، capacity، risk tolerance و Domain review می‌آیند و باید پیش از نگاه‌کردن به Test نهایی تثبیت شوند.

هویت و Lineage ارزیابی مدل

هویتنمونههدف
Experiment/Runevaluation_run_idتفکیک attemptها
Model artifactdigest + registry versionهمان Candidate دقیق
Training datasnapshot/manifest/query hashبازتولید fit
Validation datasnapshot + split IDsselection/tuning
Locked testsealed snapshot + access logconfirmation مستقل‌تر
Labeldefinition/version/horizonتعریف Target
Feature pipelinecode/config/schemaLeakage/skew trace
Environmentimage/dependencies/hardwarereproducibility
Randomnessseed + algorithm controlsvariation analysis
Protocolmetric/threshold/slice versionprevent outcome-driven edits

Population، Sample و Unit of Analysis

هر Report باید Target population، Sampling frame، Inclusion/Exclusion، observation window، missing/unknown و Unit را بنویسد. اگر چند ردیف متعلق به یک User/Device/Order/Patient هستند، محاسبهٔ interval با فرض استقلال ردیف‌ها می‌تواند بیش‌ازحد مطمئن باشد. Group، cluster و repeated measures را در Split و uncertainty لحاظ کنید.

evaluation_population:
  intended_population: declared cases during operating condition O
  sampling_frame: immutable query/snapshot
  unit_of_analysis: PaymentAttempt, not event row
  grouping: tenant_id + order_id
  inclusion/exclusion: explicit with counts
  observation/label_horizon: fixed
  known_missingness: reasoned categories
  sample_size_by_class_slice: reported
  representativeness_limits: documented, not assumed

Label Contract؛ Ground Truth همیشه ساده نیست

فیلدپرسشریسک
Constructواقعاً چه مفهوم مشاهده‌ناپذیری را Proxy می‌کنیم؟construct invalidity
Operational rulepositive دقیقاً با چه Evidence تعریف می‌شود؟ambiguity
SourceLabel از کدام system/human/process می‌آید؟source bias
Horizonتا چه زمانی outcome را صبر می‌کنیم؟censoring
Adjudicationاختلاف Annotator چگونه حل می‌شود؟hidden disagreement
Unknownunresolved را negative می‌کنیم؟silent mislabel
VersionRule در طول زمان تغییر کرده؟label drift
LeakageLabel یا proxy بعد از prediction time وارد Feature شده؟optimistic result

NIST در بحث Validation روی Construct validity تأکید می‌کند: Proxyهایی مثل «hireability» یا صفات پیچیده لزوماً همان مفهومی را که نام می‌برند اندازه نمی‌گیرند. توافق Annotator نیز به‌تنهایی حقیقت را ثابت نمی‌کند؛ disagreement، uncertainty و unresolved cases را نگه دارید.

Split Strategy بر اساس ساختار Dependency

Splitمناسب برایFailure پنهان
Random rowIID-like rows با dependency کمهمان Subject در Train/Test
Stratifiedحفظ نسبت Classgroup/time leakage را حل نمی‌کند
GroupUser/Device/Order/Site clustersتعمیم زمانی را ثابت نمی‌کند
Temporalپیش‌بینی آیندهseason/site shift جدا می‌ماند
Geographic/Siteتعمیم به location جدیدداخل همان site temporal leak
Nested CVselection + performance estimationlocked external test را جایگزین نمی‌کند
Challenge setFailure mode هدفمندPopulation estimate نیست

Split تصادفی Default بی‌خطر نیست. اگر آینده را پیش‌بینی می‌کنید، Train باید از نظر زمانی پیش از Validation/Test باشد؛ اگر چند رکورد از یک موجودیت دارید، Group باید یک‌جا بماند. Test set برای سؤال تعمیم طراحی می‌شود، نه فقط برای رسیدن به نسبت ۸۰/۲۰.

Data Leakage؛ نشت فقط تکرار ردیف نیست

راهنمای رسمی scikit-learn دربارهٔ Data Leakage توضیح می‌دهد که اطلاعات Test نباید برای ساخت مدل یا preprocessing استفاده شود و Split باید پیش از fit کردن Transformer انجام شود. Pipeline می‌تواند اجرای صحیح fit/transform را آسان‌تر کند، اما Leakage معنایی، زمانی، گروهی یا ناشی از انتخاب feature/threshold را خودکار حل نمی‌کند.

نوع Leakageنمونهکنترل
Direct targetLabel یا derivative در Featurefeature provenance/audit
Post-outcomeفیلدی که بعد از prediction time ساخته می‌شودas-of dataset
PreprocessingScaler/Imputer روی کل داده fitfit فقط در Train fold
Groupیک Order/User در دو Splitgroup-aware split
Duplicate/near-duplicateهمان متن/تصویر با تغییر کوچکcontent identity/dedup
TemporalFeature آینده یا revised historypoint-in-time reconstruction
Selectionبارها انتخاب Candidate با TestValidation vs locked test
HumanAnnotator Test نتیجهٔ Model را می‌بیندblinding/adjudication design
leakage_audit:
  prediction_time: fixed
  label_available_at: timestamp/source
  feature_available_at: timestamp/source per feature
  train/validation/test entity overlap: measured
  exact/near-duplicate policy: versioned
  preprocessing_fit_scope: train folds only
  feature_selection/tuning_scope: training/validation only
  test_accesses: logged
  point_in_time_rebuild: evidenced
  verdict: PASS / FAIL / UNKNOWN

Train، Validation، Test و Challenge Set را جدا کنید

Datasetمصرف مجازمصرف نامعتبر
Trainfit parameters/representationگزارش unbiased نهایی
Validationhyperparameter/model/threshold selectionconfirmation مستقل پس از انتخاب‌های زیاد
Locked testیک پروتکل confirmation ازپیش‌ثبت‌شدهiterate until pass
Challenge setFailure mode و Counterexampleبرآورد شیوع در Population
Production field datacontext/monitoring/impact با مجوزبرچسب‌زدن خودکار و retrain بی‌بررسی

هر بار که بر اساس نتیجهٔ Test مدل، Feature یا Threshold را تغییر می‌دهید، Test عملاً بخشی از Selection می‌شود. راه‌حل همیشه «یک Test دیگر» نیست؛ Budget دسترسی، audit log، Holdout خارجی یا دوره‌ای، Nested design و گزارش صادقانهٔ adaptivity را متناسب با ریسک انتخاب کنید.

Metric از Error Cost و Action می‌آید

Metricمی‌پرسدBlind spot
Accuracyچند پیش‌بینی label برابر دارد؟Class imbalance/error cost
Precisionاز Positiveهای اعلامی چند درست‌اند؟Missed positive
Recall/Sensitivityاز Positiveها چند پیدا شدند؟False-positive workload
Specificityاز Negativeها چند درست رد شدند؟Missed positive
F1میانگین هارمونیک P/RTN، calibration و cost
ROC-AUCranking across thresholdsoperating point/prevalence/action
PR-AUCprecision-recall tradeoffیک Threshold عملی را انتخاب نمی‌کند
Log loss/Brierکیفیت score احتمالیuse-specific decision cost
MAE/quantile lossregression errortail/slice/domain cost
Recall@Kبا ظرفیت K چند مورد مثبت می‌آید؟quality beyond K/queue dynamics

مستندات Model Evaluation در scikit-learn مجموعه‌ای از Metricها و شیوه‌های averaging ارائه می‌دهد؛ وجود API به معنی مناسب‌بودن Metric برای Domain شما نیست. Positive class، label order، averaging (micro/macro/weighted)، sample weight، zero-division و واحد Report باید ثبت شوند.

Confusion Matrix را با Support منتشر کنید

evaluation_cell:
  population/slice: timeout_after_commit
  threshold: 0.50
  support: N
  positive_support: P
  negative_support: N-P
  TP / FP / TN / FN: counts
  precision / recall / specificity: values + undefined policy
  interval/uncertainty: declared method
  exclusions/unknown labels: counts
  consequence: human-review routing impact

در Slice کوچک، ۱۰۰٪ می‌تواند حاصل یک نمونه باشد. Percent بدون numerator/denominator، Support و missing/unknown فریبنده است. اگر denominator صفر است، Metric را صفرسازی خام نکنید؛ `undefined`/`NA` و علت آن را در Gate لحاظ کنید.

Threshold بخشی از Model decision است

Classifier score بدون Threshold Action نمی‌سازد. Threshold می‌تواند بر اساس capacity، هزینهٔ FP/FN، risk tolerance و fallback تعیین شود. آن را روی Locked test optimize نکنید و بعد همان Test را «تأیید مستقل» ننامید. اگر شرایط یا prevalence تغییر کرد، operating point ممکن است نیاز به بازبینی داشته باشد.

Threshold کمترThreshold بیشترپرسش تصمیم
معمولاً Recall بالاترمعمولاً Precision بالاترکدام خطا پرهزینه‌تر است؟
Review workload بیشترMiss بیشترظرفیت واقعی چند مورد است؟
False alarm بیشترAutomation silence بیشترfallback/appeal چیست؟
ممکن است Sliceها متفاوت تغییر کنندممکن است Sliceها متفاوت تغییر کنندGate slice-specific لازم است؟

Calibration با Discrimination فرق دارد

مدل ممکن است Ranking خوبی داشته باشد ولی Score ۰.۸ واقعاً با نرخ رخداد حدود ۸۰٪ متناظر نباشد. راهنمای Calibration در scikit-learn Reliability diagram و proper scoring ruleهایی مانند Log loss/Brier را توضیح می‌دهد. Calibration را روی دادهٔ جدا یا روش درست fit کنید؛ calibrator نیز یک مدل است و می‌تواند overfit یا drift کند.

ClaimTestمحدودیت
RankingAUC/PR curveاحتمال معتبر نیست
Operating pointP/R/confusion at thresholdفقط همان condition
Probability qualitycalibration curve/Brier/log lossbinning/sample/prevalence
Decision utilitycost/capacity analysiscost assumptions contextual

عدم‌قطعیت و Variation را گزارش کنید

  • Sampling uncertainty: Test sample محدود است.
  • Label uncertainty: Ground truth ناقص/متأخر/مورد اختلاف است.
  • Training variation: Seed، initialization و data order می‌توانند Artifact را تغییر دهند.
  • Measurement variation: preprocessing/library/hardware/numerical settings اثر دارند.
  • Distribution uncertainty: Deployment با Test population دقیقاً یکسان نیست.
  • Threshold uncertainty: هزینه/ظرفیت و prevalence ممکن است تغییر کند.

Interval را با روشی متناسب با Unit/Dependency بسازید؛ bootstrap ردیف‌محور برای دادهٔ clustered همیشه مناسب نیست. چند Seed می‌تواند sensitivity به stochastic training را نشان دهد، اما انتخاب «بهترین Seed» و گزارش تنها آن، uncertainty را پنهان می‌کند. تعداد Run، aggregation و selection rule را از پیش مشخص کنید.

Baseline و Comparator را جدی بگیرید

Comparatorسؤالهشدار
Constant/majorityآیا Model از حد ساده بهتر است؟Metric نامناسب می‌تواند گمراه کند
Rule-basedپیچیدگی ML ارزش افزوده دارد؟Rule نیز version لازم دارد
Prior approved modelRegression/Tradeoff چیست؟قدیمی بودن مساوی حقیقت نیست
Human workflowکمک/آسیب در Task چیست؟human study/ethics/learning effects
Oracle upper/lower boundحد تفسیر چیست؟ممکن است دست‌نیافتنی/biased باشد

Slice Testing؛ Aggregate می‌تواند Failure را پنهان کند

Slice را بر اساس Failure mode، Operating condition، Product/version، geography، time، input quality و stakeholder harm از پیش تعریف کنید. Sliceهای مربوط به صفات انسانی/حساس نیازمند مبنای مشروع، privacy، governance، متخصص Domain و مشارکت ذی‌نفعان‌اند؛ صرفاً شکستن داده بر اساس demographic و بهینه‌سازی یک parity metric «عدالت» را تضمین نمی‌کند.

slice_contract:
  slice_id / rationale / owner
  definition_version / query_hash
  relation_to_intended_use_or_failure_mode
  support / positive_support / unknown_count
  metric / threshold / interval method
  minimum_evidence rule
  privacy/ethical authorization if sensitive
  verdict: PASS / FAIL / INCONCLUSIVE
  action: hold / collect evidence / mitigate / restrict use

آزمایش قطعی: Accuracy ۹۰٪ و Failure حیاتی

یک Fixture مستقل Node.js ۲۴.۱۸.۰ با ۲۰ نمونه و Scoreهای کاملاً ساختگی ساختیم. Intended Use فقط اولویت‌دهی پرونده‌های پرداخت فرضی برای بازبینی انسانی بود. Threshold=۰.۵۰ و دو Gate پیش از همین ارزیابی قفل شدند. Candidate چهار True Positive، چهارده True Negative، صفر False Positive و دو False Negative تولید کرد.

LOCKED FIXTURE RESULT
support=20; positiveSupport=6
TP=4; TN=14; FP=0; FN=2
accuracy=0.90
recall=0.667
precision=1.00

critical slice: timeout_after_commit
support=2; positiveSupport=2
recall=0.00; missed=T19,T20

NAIVE GATE: accuracy >= 0.90 → PASS
CLAIM GATE:
accuracy >= 0.85 AND recall >= 0.75
AND critical-slice recall >= 0.80 → HOLD

هر دو Verdict از همان Prediction ثابت آمده‌اند؛ تفاوت در Claim است، نه دست‌کاری مدل. بااین‌حال این Fixture عمداً کوچک و هماهنگ با Demonstration است و هیچ Population را نمایندگی نمی‌کند. هیچ Model train/inference یا interval محاسبه نشده؛ تمام نمونه‌ها، Labelها، Scoreها، Slice، Threshold و Gate ساختهٔ نویسنده‌اند. هیچ شخص، ویژگی محافظت‌شده، Fairness، Outcome کاربر، پرداخت یا تصمیم Production ارزیابی نشده و Calibration، Robustness، Drift، Leakage، Causality، Security، latency، کیفیت Human review یا ارزش کسب‌وکار پوشش ندارد. نتیجه Benchmark، Threshold جهانی، Release algorithm، ارزیابی مقرراتی یا اثبات کفایت Slice metric نیست.

Metamorphic Testing؛ وقتی Expected label کافی نیست

Relationمثالاحتیاط
Invarianceتغییر Format بی‌معنا خروجی را تغییر ندهدواقعاً معنای Domain ثابت باشد
Equivarianceتغییر ورودی، خروجی را طبق Rule تغییر دهدrelation باید اثبات/تأیید شود
MonotonicityFeature با فرض ceteris paribus جهت مشخصinteraction/causality را ساده نکنید
Permutationترتیب مجموعهٔ unordered بی‌اثر باشدSequence task مستثناست
Round-tripencode/decode feature حفظ شودlossy transform ممکن است مجاز باشد
Duplicateتکرار مورد نباید score فرد را تغییر دهدbatch normalization/context effects
metamorphic_test:
  relation_id: MR-UNICODE-01
  source_cases: versioned
  transformation: normalize equivalent Persian text form
  precondition: meaning independently judged equivalent
  expected_relation: class unchanged; score delta within declared bound
  exceptions: listed
  comparator/tolerance: versioned
  counterexample evidence: original + transformed + model digest

Robustness با Adversarial Security یکی نیست

آزمونسؤالمرز
Natural corruptionnoise/missing/blur/typo رایج چه اثری دارد؟distribution واقعی لازم است
Boundary/OODخارج از operating envelope چه می‌شود؟OOD detector کامل نیست
Stress/challengeknown failure mode چگونه رخ می‌دهد؟prevalence estimate نیست
Adversarial exampleمهاجم با knowledge/budget معین چه می‌کند؟authorization/threat model لازم است
Poisoning/backdoortraining/supply chain دست‌کاری شده؟AppSec/Data governance مالکیت مشترک
Extraction/inversionModel/data افشا می‌شود؟privacy/security تخصصی

یک نویز تصادفی را «تست متخاصمانه جامع» ننامید. Threat actor، Knowledge، Access، Query budget، Constraint، Success criterion و مجوز باید تعریف شوند. High-stakes safety/security به Domain expert، red team مجاز و کنترل‌های مستقل نیاز دارد؛ Model metric جای safety case یا security assessment را نمی‌گیرد.

Determinism و Reproducibility را تفکیک کنید

ML inference لزوماً «ذاتاً غیرقطعی» نیست. یک Artifact ثابت با preprocessing و runtime ثابت می‌تواند خروجی تکرارپذیر داشته باشد؛ stochastic sampling، dropout فعال، hardware/kernel، parallel reduction، nondeterministic operator یا unpinned dependency ممکن است Variation بسازد. رفتار probabilistic Model نیز با nondeterministic execution یکی نیست.

ویژگیپرسشTest
Repeatabilityهمان setup/run چه می‌دهد؟repeated inference/training
Reproducibilitysetup مستقلِ مستند چه می‌دهد؟rebuild from manifests
Determinisminput/state یکسان output یکسان؟byte/semantic comparison
Stabilityperturbation مجاز چه variation دارد؟sensitivity distribution
Replicability of conclusionنتیجهٔ Claim با sample/run دیگر می‌ماند؟external/temporal replication
reproducibility_record:
  model_artifact_digest
  training/eval data manifests
  feature/label/split/protocol versions
  source code commit + dirty state
  config + seed(s) + dependency lock
  container/runtime/hardware/driver
  deterministic flags/known nondeterminism
  command + environment variables without secrets
  output metrics/predictions/errors digest
  acceptable semantic tolerance + rationale

Train–Serve Skew و Artifact Contract

Model evaluation فقط وقتی به Serving مربوط است که Feature name/type/default/unit/order/normalization، vocabulary، missing policy، threshold و postprocessing همان Contract را اجرا کنند. Candidate را از raw request تا serving response در برابر offline evaluator مقایسه کنید و Model digest را در Response/Trace قابل‌ردیابی نگه دارید؛ اختلاف مجاز عددی باید از پیش تعریف شود.

مرزFailureEvidence
Raw→Featuretimezone/unit/category mismatchfeature vector diff
Feature→Modelcolumn order/type/defaultschema/model signature
Score→Decisionthreshold/postprocess mismatchdecision trace
Artifact loadingwrong/stale model versiondigest/registry/deployment ID
Batch vs onlinedifferent library/logicgolden request-response corpus

Drift یک Signal است، نه Verdict

Signalتوضیحاقدام نامعتبر خودکار
Data/covariate shiftP(X) تغییر کردهفرض افت عملکرد بدون Label
Prior shiftP(Y) تغییر کردهretrain فوری بدون علت
Concept shiftP(Y|X) تغییر کردهتشخیص صرفاً از Feature histogram
Label shift/delayOutcome mix/availability تغییر کردهnegative کردن unresolved
Performance changeMetric با Label بالغ تغییر کردهنسبت‌دادن قطعی به Model
Operational shiftlatency/error/fallback/context تغییر کردهحل با retraining تنها

Drift detector می‌تواند Investigation را شروع کند: مشکل upstream، seasonality، policy، product mix، attack، label pipeline یا مدل؟ Retraining یک تغییر پرریسک تازه است و باید Data/Label/Split/Protocol/Comparison/Gate جدید داشته باشد. Drift metric یا A/B به‌تنهایی علت، harm یا بهترشدن را ثابت نمی‌کند.

Shadow و A/B خارج از Model-only Evaluation

Shadow می‌تواند Candidate را روی traffic واقعی بدون اثر مستقیم اجرا کند، اما Label delay، selection bias، privacy، logging و resource contention باقی‌اند. A/B یک Experiment روی انسان/سیستم است، نه «بهترین راه» جهانی؛ randomization unit، interference، novelty، sample size/power، stopping rule، guardrail، informed governance، harm containment و rollback لازم‌اند. High-stakes تصمیم را برای یادگیری محصول بی‌محافظ روی کاربر واقعی آزمایش نکنید.

Model Release Gate

GatePASSHOLD/INCONCLUSIVE
Use/Claimuse/out-of-scope/action/error cost approvedambiguous construct/owner
Dataset/Labelpopulation/split/label version and limitsunknown leakage/horizon
Protocolmetric/threshold/slices fixed pre-testtest-driven tuning
Aggregaterequired metrics/intervals supportedsingle score/no support
Critical slicespredeclared evidence supportedfail or insufficient support
Behaviormetamorphic/boundary/robustness claims passcounterexample unresolved
Reproducibilityartifact/data/code/config/environment linkedunversioned dependency
Serving contractoffline/online parity within tolerancefeature/threshold skew
System dependenciesowners attest required system evidencemodel-only proof used as system proof

Gate باید PASS، FAIL، ERROR و INCONCLUSIVE را جدا کند. نبود Label بالغ یا Support کافی، «Pass با ریسک» نیست؛ ممکن است Evidence ناکافی باشد. Exception باید Claim، affected population، uncertainty، compensating control، owner، monitoring، expiry و re-evaluation داشته باشد. QA یا Data scientist به‌تنهایی Business/Risk acceptance را امضا نمی‌کند.

Model Evaluation Evidence Pack

evaluation_evidence_pack:
  intended-use + out-of-scope-use contract
  claims + consequences + owners
  model card/artifact digest/signature
  training/validation/locked-test manifests
  population/sample/unit/label/split documentation
  leakage and overlap audit
  baseline/candidate/protocol/threshold/slice versions
  confusion/support/metrics/calibration/uncertainty
  counterexamples/metamorphic/robustness results
  seed/environment/reproducibility record
  offline-serving parity evidence
  fairness/XAI/privacy/security/system evidence links
  limitations/unknowns/exceptions/expiry
  evaluation verdict + separate release decision

سناریوی ایرانی ساختگی: مدل اولویت‌دهی پروندهٔ پرداخت

یک Model کاملاً فرضی فقط پرونده‌های پشتیبانی Marketplace را برای بازبینی انسانی مرتب می‌کند. نه پرداخت را تأیید/رد می‌کند، نه فرد را متقلب می‌نامد و نه دسترسی/قیمت/اعتبار را تغییر می‌دهد. Dataset مصنوعی شامل Order، PaymentAttempt، Callback از PSP جعلی، Ledger و Reconciliation result است؛ هیچ بانک، PSP، کاربر، فروشنده، پول یا تراکنش واقعی وجود ندارد.

ریسک/ContractFixtureOracle/Gate
Identitytenant/order/attempt/event/model/runno cross-tenant/group leakage
Prediction timebefore analyst reconciliationno future ledger/result feature
Moneycanonical IRR + explicit displayed tomanno 10× unit leakage
Digits/TextPersian/Arabic/Latin + Unicode/RTLdeclared normalization relation
TimeUTC event + Asia/Tehran/Jalali viewtemporal split/as-of features
Critical slicetimeout_after_commitpredeclared recall/support
Actionhuman queue prioritycapacity/false-negative guardrail
Fallbackordinary reviewno silent automatic denial

تمام Caseها Synthetic هستند و نام، موبایل، نشانی، PAN، CVV2، OTP، Token، Cookie، IP یا Secret واقعی ندارند. Featureهای مربوط به هویت/صفات حساس ساخته یا استنباط نمی‌شوند. Artifact/dependencyها با checksum و lockfile Pin می‌شوند و برای محدودیت دسترسی Cloud/Registry/Package در ایران، Cache/Mirror/Offline restore آزموده می‌شود. این سناریو مشاورهٔ بانکی، مالی، حقوقی، حریم خصوصی، تبعیض یا تحریم نیست.

Privacy، Security و Human Review

  • Evaluation data باید Purpose، lawful/authorized use، minimization، access و retention مستقل داشته باشد.
  • Test/Challenge set و Model artifact می‌توانند دارایی حساس یا attack target باشند.
  • Prompt/Notebook/Log/Artifact نباید Secret یا دادهٔ شخصی را نشت دهد.
  • Human review «حفاظ کامل» نیست؛ training، workload، UI، authority، automation bias و appeal باید آزموده شوند.
  • Reviewer label می‌تواند تحت تأثیر Model score آلوده شود؛ blinding/ordering را در Protocol بسنجید.
  • حذف/اصلاح داده باید اثرش بر Dataset lineage، Artifact و Evidence روشن باشد.

نقش‌ها و جدایی تصمیم‌ها

نقشمسئولیتتصمیم
Domain/Product owneruse/action/error consequence/capacityintended use and release value
Data ownerpopulation/source/quality/accessdataset readiness
Label owner/domain expertconstruct/rule/horizon/adjudicationlabel validity limits
ML engineer/scientisttraining/artifact/method/limitationstechnical remediation
Evaluation/QAprotocol/oracle/leakage/tests/evidenceevaluation verdict
Risk/Ethics/Privacy/Securityspecialized claims/authorizationdomain-specific acceptance
Release decision ownertradeoff/exception/fallbackdeploy/restrict/hold/retire
Independent reviewerchallenge evidence/conflict reductionreview opinion، نه automatic veto unless chartered

متریک‌های فرایند ارزیابی و Countermetric

MetricتعریفCountermetric
Claim evidence completenessrequired evidence present/currentquality/validity of evidence
Test access countselection exposure to locked testlegitimate confirmation need
Unknown/insufficient slicespredeclared slices without evidenceprivacy/minimum-size constraints
Leakage defectconfirmed lineage/split violationsaudit coverage
Counterexample resolutionfixed/restricted/accepted with expiryseverity/recurrence
Reproducibility variancesemantic result across declared runsexpected stochasticity
Offline-serving skewfeature/score/decision mismatchallowed numeric tolerance
Exception agedays past review/expiryrisk and containment

Accuracy، AUC، تعداد Experiment و سرعت Train را برای رتبه‌بندی فردی Data scientist/QA به کار نبرید. بهینه‌سازی پاداش روی یک Metric، leakage، test-set overfitting و پنهان‌کردن Slice/Unknown را تشویق می‌کند. ارزیابی باید دربارهٔ Claim و System learning باشد، نه مسابقهٔ Leaderboard داخلی.

برنامهٔ ۳۰روزهٔ Model Evaluation Pilot

بازهکارخروجی
روز ۱–۵یک use/action/error-cost و یک Candidate انتخاب کنیدUse + Claim Contract
روز ۶–۱۰Population/label/split/leakage mapDataset protocol
روز ۱۱–۱۵Baseline/metric/threshold/slice/gates پیش‌ثبت شوندlocked evaluation plan
روز ۱۶–۲۰aggregate/slice/calibration/uncertainty اجرا شودmeasurement report
روز ۲۱–۲۵metamorphic/boundary/robustness/reproducibilitycounterexamples + limits
روز ۲۶–۳۰offline-serving parity، Evidence Pack و reviewverdict + separate release decision

ضدالگوهای رایج تست مدل ML

  1. یکی‌گرفتن Model با AI system.
  2. Accuracy-only Gate.
  3. انتخاب Metric بدون Action/Error cost.
  4. Random split بدون Group/Time analysis.
  5. fit کردن preprocessing پیش از Split.
  6. استفاده از Feature بعد از prediction time.
  7. تبدیل unknown Label به negative.
  8. تکرار انتخاب Candidate روی Test نهایی.
  9. گزارش Percent بدون Support و interval.
  10. Macro/weighted/micro بدون اعلام.
  11. Threshold optimization روی Test.
  12. یکی‌گرفتن AUC با operating performance.
  13. یکی‌گرفتن score با probability calibrated.
  14. گزارش بهترین Seed.
  15. Slice mining پس از مشاهدهٔ Failure و ادعای confirmation.
  16. Parity metric به‌عنوان تضمین Fairness.
  17. Feature importance به‌عنوان علیت.
  18. نویز ساده به‌عنوان Adversarial assessment.
  19. Drift alert به‌عنوان دستور Retrain.
  20. A/B روی کاربر واقعی به‌عنوان راه پیش‌فرض.

چک‌لیست Release مدل

  • ☐ Intended Use، Action، Actor و Out-of-scope ثبت شده‌اند.
  • ☐ Consequence و fallback هر خطای مهم روشن است.
  • ☐ Population، Sampling frame، Unit و horizon نسخه دارند.
  • ☐ Construct/Label/Adjudication/Unknown policy مستند است.
  • ☐ Split متناسب با Time/Group/Site/Dependency است.
  • ☐ Leakage زمانی، گروهی، preprocessing و selection audit شده است.
  • ☐ Train/Validation/Locked test/Challenge set جدا هستند.
  • ☐ Baseline، Metric، averaging و Threshold پیش‌ثبت شده‌اند.
  • ☐ Confusion count، Support و undefined policy گزارش می‌شود.
  • ☐ Calibration و uncertainty متناسب با Claim بررسی شده‌اند.
  • ☐ Sliceهای پرریسک پیش از Test تعریف شده‌اند.
  • ☐ Metamorphic relation و precondition تأیید شده‌اند.
  • ☐ Robustness/Adversarial scope و authorization روشن است.
  • ☐ Artifact/Data/Code/Config/Seed/Environment هویت دارند.
  • ☐ Variation و known nondeterminism ثبت شده‌اند.
  • ☐ Offline/Serving feature-score-decision parity آزموده شده است.
  • ☐ Fairness/XAI/Privacy/Security/System evidence جداست.
  • ☐ PASS/FAIL/ERROR/INCONCLUSIVE تفکیک دارند.
  • ☐ Exception owner/monitor/expiry/retest دارد.
  • ☐ Evaluation verdict از Release decision جداست.

جمع‌بندی

تست مدل یادگیری ماشین یک مسابقهٔ Metric نیست؛ قرارداد شواهد برای Intended Use است. Model artifact، Dataset و Split قفل‌شده، Label معتبر، نبود Leakage شناخته‌شده، operating threshold، Support/uncertainty، Slice و رفتار تحت تحول، Reproducibility و Serving parity کنار هم Verdict می‌سازند. حتی آن Verdict نیز فقط شرایط آزموده‌شده را پشتیبانی می‌کند و جای قضاوت Domain، ارزیابی کل سیستم یا پاسخ‌گویی به افراد متأثر را نمی‌گیرد.

پرسش‌های متداول تست مدل یادگیری ماشین

۱. تفاوت Model Evaluation و تست مدل چیست؟

Evaluation معمولاً Measurement روی Dataset و Metric مشخص است. Testing علاوه بر آن Claim را با Leakage audit، Boundary، Slice، Metamorphic relation، Robustness، Reproducibility و Serving parity به چالش می‌کشد؛ Validation نیز تناسب با Intended Use و Context را می‌پرسد.

۲. آیا Accuracy بالا برای انتشار مدل کافی است؟

خیر. Accuracy هزینهٔ متفاوت FP/FN، Class imbalance، Threshold، Calibration، Support، uncertainty و Failure در Slice حیاتی را پنهان می‌کند. Metric/Gate باید از Action و Risk بیاید و با Confusion counts و Slice evidence همراه شود.

۳. بهترین روش تقسیم Train و Test چیست؟

یک روش جهانی وجود ندارد. Split باید سؤال تعمیم را بازتاب دهد: Temporal برای آینده، Group برای موجودیت‌های تکراری، Site/geography برای مکان جدید و روش‌های ترکیبی برای Dependencyهای چندگانه. Random stratified فقط نسبت Class را حفظ می‌کند و Leakage زمانی/گروهی را حل نمی‌کند.

۴. آیا Drift یعنی باید مدل را فوراً Retrain کنیم؟

نه. Drift یک Signal برای Investigation است و می‌تواند از upstream، فصل، محصول، policy، attack، Label یا Context بیاید. Retraining خودش تغییر جدیدی است که Dataset، Label، Split، Evaluation، comparison و Release Gate تازه می‌خواهد.

۵. تیم کوچک ارزیابی مدل را از کجا شروع کند؟

یک Intended Use باریک انتخاب کند؛ Use/Claim/Label/Split را بنویسد، یک Baseline و Metric/Threshold را پیش از Test قفل کند، overlap/leakage را بسنجد، Confusion/Support و یک Slice پرریسک را گزارش دهد و Artifact/Data/Code/Protocol را در Evidence Pack پیوند بزند.

دیدگاهتان را بنویسید