Classifier dapat sangat akurat pada test set tetapi tetap menghasilkan prediksi dengan confidence tinggi untuk input yang jauh berbeda dari data training. Classifier produk yang dilatih pada sepatu, tas, dan jam tangan dapat menerima foto sepeda tetapi tetap dipaksa memilih salah satu class yang dikenalnya.

Ini menimbulkan masalah deployment: classification biasa menjawab class dikenal mana yang paling mungkin, sementara banyak sistem juga perlu menentukan apakah input cukup menyerupai data tempat classifier divalidasi.

Out-of-distribution (OOD) detection menambahkan keputusan kedua tersebut. Salah satu pendekatan praktis adalah menghitung energy score dari logits, memilih threshold pada data terpisah, lalu menggunakan score itu sebagai sinyal untuk routing input yang tidak familiar. OOD score bukan jaminan correctness dan perlu dievaluasi terpisah dari hasil test classifier normal.

Mulai dari keputusan yang benar-benar diperlukan

Misalkan model mengklasifikasikan screenshot support menjadi tiga kategori:

billing
login
shipping

Untuk screenshot biasa, logits dapat berupa:

billing:   4.2
login:     1.0
shipping: -0.4

Logits adalah raw class score sebelum softmax mengubahnya menjadi probability. Logit terbesar memilih predicted class, sehingga contoh ini memprediksi billing.

Sekarang bayangkan input berupa foto pemandangan, bukan screenshot support. Closed-set classifier tetap harus membagi probability di antara tiga class yang dikenalnya. Softmax tidak otomatis menyediakan class unknown hanya karena input tidak familiar.

OOD detector menambahkan gate terpisah:

input -> classifier -> class prediction
                   \
                    -> OOD score -> accept or flag

Classification dan unfamiliarity adalah pertanyaan berbeda. Class prediction menunjukkan pilihan model di antara alternatif yang dikenal. OOD score memperkirakan apakah input layak dipercaya untuk mengikuti kompetisi tersebut.

Ubah logits menjadi energy score

Untuk classifier dengan logits z_1, ..., z_K, energy score yang umum digunakan adalah:

E(x) = -T * log(sum_i exp(z_i / T))

T adalah temperature positif. Dengan T = 1, bentuknya menjadi negative logsumexp dari logits.

Pertimbangkan dua output tiga class:

input A logits: [5.0, 1.0, 0.0]
input B logits: [0.4, 0.2, 0.1]

Pada T = 1:

E(A) = -log(exp(5.0) + exp(1.0) + exp(0.0)) ~= -5.025
E(B) = -log(exp(0.4) + exp(0.2) + exp(0.1)) ~= -1.339

Input A memiliki energy lebih rendah. Dalam konvensi score ini, energy lebih rendah diperlakukan sebagai evidence lebih kuat untuk input in-distribution, sedangkan energy lebih tinggi lebih OOD-like.

Nilai absolut tidak universal. Perubahan model, prosedur training, temperature, atau skala logits dapat mengubah distribusi score. Nilai seperti -3 tidak memiliki arti portable dengan sendirinya.

Dalam implementasi, hitung ekspresi menggunakan operasi logsumexp yang numerically stable daripada mengeksponensialkan logits besar secara langsung.

Energy berbeda dari maximum softmax probability

Baseline OOD sederhana adalah maximum softmax probability. Jika probability class terbesar rendah, input ditandai sebagai tidak familiar.

Softmax probability bergantung pada perbedaan relatif antar-logit. Menambahkan konstanta yang sama pada semua logit tidak mengubah softmax:

softmax([2, 1, 0]) = softmax([12, 11, 10])

Energy berubah pada shift tersebut karena menggunakan nilai logit absolut melalui logsumexp. Dengan demikian, energy mempertahankan informasi yang dibuang maximum softmax probability.

Perbedaan itu tidak berarti energy selalu mengungguli maximum softmax probability pada setiap model atau OOD dataset. Keduanya adalah scoring rule yang perlu divalidasi pada data representatif. Jika baseline sederhana memenuhi operating point yang diperlukan, kompleksitas tambahan mungkin tidak diperlukan.

Threshold mengubah score menjadi tindakan

Raw score belum merupakan keputusan produk. Diperlukan threshold yang memetakan score ke tindakan:

if energy <= threshold:
    accept the classifier prediction
else:
    flag the input as potentially OOD

Threshold sebaiknya dipilih menggunakan validation data, bukan ditebak dari beberapa contoh. Pisahkan data untuk threshold selection dari final evaluation set.

Validation collection yang berguna setidaknya memiliki dua kelompok:

  • In-distribution (ID) yang merepresentasikan input produksi valid.
  • OOD yang merepresentasikan input asing penting yang mungkin ditemui sistem.

Jika threshold mempertahankan 95% contoh ID validation, operating point itu secara sengaja memungkinkan sekitar 5% contoh ID ditandai. Kemudian ukur berapa banyak contoh OOD relevan yang tertangkap threshold sama.

Trade-off tidak dapat dihindari. Threshold yang menangkap lebih banyak OOD biasanya juga menandai lebih banyak input valid. Keseimbangan yang tepat bergantung pada tindakan setelah flag. Human review untuk keputusan berdampak tinggi dapat menerima lebih banyak false alarm dibanding fitur interaktif yang mahal jika menolak input valid.

Evaluasi detection terpisah dari classification

Classifier accuracy dan kualitas OOD detection mengukur perilaku berbeda dan harus dilaporkan terpisah.

Untuk classifier, ukur task metric pada ID test data yang bersih. Untuk OOD detector, bandingkan distribusi score ID dan OOD serta operating point yang relevan.

Measurement yang berguna meliputi:

  • proporsi contoh ID yang diterima pada threshold tertentu;
  • proporsi contoh OOD yang terdeteksi pada threshold sama;
  • false-positive dan false-negative rate untuk keputusan accept/flag;
  • ringkasan ranking yang tidak bergantung threshold seperti AUROC bila sesuai.

AUROC mengukur seberapa baik score memberi ranking positive example di atas negative example pada berbagai threshold. Metric ini tidak menunjukkan apakah threshold produksi tertentu memiliki false-alarm rate yang dapat diterima. Sistem dapat memiliki AUROC cukup baik tetapi tetap tidak layak pada operating point aplikasi.

Nyatakan secara eksplisit class mana yang dianggap positif saat melaporkan rate. Literatur OOD dan software package tidak selalu menggunakan arah score atau label convention yang sama. Kesalahan tanda dapat membuat metric tampak masuk akal tetapi menggambarkan keputusan sebaliknya.

Pilih data OOD yang merepresentasikan kegagalan nyata

OOD bukan satu kategori homogen. Detector yang dapat memisahkan handwritten digit dari foto belum tentu mampu mendeteksi kasus asing yang penting bagi aplikasi.

Untuk classifier screenshot support, validation set dapat mencakup:

ID:
- billing screenshots
- login screenshots
- shipping screenshots

near-OOD:
- support screenshots from an unsupported product area
- screenshots from a redesigned interface not represented in training

far-OOD:
- landscape photographs
- scanned documents
- unrelated illustrations

Near-OOD sangat penting karena dapat terlihat mirip dengan input valid tetapi berbeda pada aspek yang relevan bagi task. Far-OOD sering lebih mudah dipisahkan dan dapat membuat detector tampak lebih kuat daripada performanya pada shift produksi yang halus.

Jangan tune threshold menggunakan contoh OOD yang sama dengan final claim. Jika dilakukan, evaluasi ikut mengukur adaptasi terhadap contoh tersebut, bukan hanya kemampuan detection umum.

Energy adalah sinyal, bukan jaminan

Energy threshold dapat gagal ke dua arah. Input asing dapat memperoleh energy rendah dan lolos gate. Sebaliknya, contoh ID yang valid tetapi tidak biasa dapat memperoleh energy tinggi dan ditolak. Detector tidak memiliki definisi universal tentang unfamiliarity; perilakunya berasal dari classifier, training data, dan OOD-specific training objective jika ada.

Distribution shift dapat terjadi bertahap

Data produksi dapat drift perlahan, bukan berpindah tajam dari ID ke OOD. Perubahan kamera, perilaku pengguna, bahasa, atau interface dapat menggeser distribusi score secara perlahan sehingga threshold lama menjadi stale.

Pantau flag rate dan distribusi score dari waktu ke waktu. Shift adalah alasan untuk investigasi, bukan bukti otomatis bahwa semua contoh baru tidak valid.

Correctness dan familiarity bukan hal yang sama

Input ID dapat salah diklasifikasikan dengan energy rendah. Input OOD dapat secara kebetulan menerima label yang benar untuk tujuan aplikasi. Karena itu, OOD detection tidak menggantikan error analysis, calibration, atau task-specific evaluation.

Jika kebutuhan sebenarnya adalah mengirim kemungkinan kesalahan ke reviewer, validasi routing rule terhadap kesalahan nyata, bukan menganggap OOD score sebagai direct error probability.

Threshold bergantung pada konsekuensi

Tidak ada acceptance rate yang benar secara universal. Jika flag memicu fallback model yang mahal, threshold memengaruhi latency dan biaya. Jika flag memblokir aksi medis atau finansial otomatis, konsekuensi missed OOD dapat lebih dominan.

Ukur policy lengkap termasuk fallback behavior, bukan mengoptimalkan detector score secara terisolasi.

Tentukan apakah OOD detection memang diperlukan

OOD detection berguna ketika model beroperasi pada lingkungan terbuka tetapi dilatih dan dievaluasi pada set input terbatas, serta aplikasi memiliki fallback bermakna untuk kasus asing.

Fallback dapat berupa:

flag -> human review
flag -> request a clearer input
flag -> route to a broader model
flag -> decline automated action

Tanpa fallback yang berguna, detection dapat menambah kompleksitas tanpa mengubah outcome sistem.

Aturan deterministik juga dapat lebih baik jika domain validity dapat diperiksa secara langsung. Jika model hanya boleh memproses image dengan metadata, file type, atau schema tertentu, validasi kondisi itu sebelum memanggil model. Statistical OOD detection paling berguna untuk perbedaan yang tidak dapat ditangkap secara andal oleh input validation sederhana.

Pertahankan deployment loop yang terukur

Rollout praktis dapat tetap kecil:

1. Record classifier logits on held-out ID and relevant OOD validation data.
2. Compute one documented energy-score convention.
3. Plot or summarize the two score distributions.
4. Select a threshold from the application's acceptable trade-off.
5. Freeze the threshold before final evaluation.
6. Measure ID task quality and OOD routing quality separately.
7. In production, monitor score and flag-rate drift.

Jika classifier kemudian dilatih ulang atau diganti, validasi ulang OOD threshold. Karena score berasal dari model logits, threshold merupakan bagian dari deployment configuration yang spesifik terhadap model, bukan properti permanen domain input.

Penutup

Energy-based OOD detection menambahkan pertanyaan penting pada closed-set classification: bukan hanya class dikenal mana yang menang, tetapi apakah input cukup familiar sehingga kompetisi antar-class tersebut layak dipercaya.

Mekanismenya ringkas: hitung energy score dari logits, validasi arah dan distribusinya, pilih threshold pada data ID dan OOD terpisah yang relevan, lalu route input yang ditandai ke fallback yang bermakna. Bagian sulit bukan formulanya, melainkan mendefinisikan kasus OOD realistis dan memilih operating point dengan false alarm, missed detection, latency, serta downstream cost yang sesuai.

Gunakan energy sebagai evidence tentang unfamiliarity, bukan bukti correctness atau safety. Batas ini menjaga detector tetap berguna tanpa meminta jaminan yang tidak dirancang untuk diberikannya.