Langsung ke konten

Panduan

Memvalidasi model terlatih

Model terlatih bisa mendapat skor bagus pada suite yang sudah pernah dilihatnya, membalik jawabannya ketika input bergeser sedikit, dan kebetulan mendapat seed yang beruntung. Oloproof memeriksa masing-masing hal ini sebelum model dirilis: suite terhadap data pelatihan, setiap prediksi di bawah derau yang dideklarasikan, dan resep pelatihan di beberapa seed. Salin contohnya dengan oloproof init --example model-validation: model pinjaman yang dilatih dengan NumPy, secara luring, pada data sintetis.

Suite terhadap data pelatihan

oloproof leakage check --training data/training.jsonl --record

Setiap kasus dibandingkan dengan setiap baris pelatihan secara persis, setelah string diubah ke huruf kecil dan spasi dirapatkan (--round membulatkan angka, --field menyebut kunci yang dibandingkan). File pelatihan dibaca di mesin Anda dan tidak pernah disimpan atau dikirim; catatannya menyimpan id kasus dan hitungan. Deklarasikan leakage: required di release.yaml dan gate diblokir (kode keluar 3) sampai pemeriksaan bersih atas suite ini dicatat. Kasus yang ditemukan di data pelatihan membuat bukti tidak sah; itu bukan FAIL dari model. Hampir-duplikat tidak diperiksa.

Prediksi di bawah derau

metamorphic:
  transforms:
    - name: noise
      field: features
      perturb: {kind: numeric_noise, scale: {income: 1.0, debt_ratio: 0.02}, seed: 7}
evaluators:
  - {type: metamorphic_relation, relation: same_label, transform: noise, field: label, passes_when: flipped}

Setiap kasus mendapat salinan dengan derau ber-seed pada angka yang disebut, dan flips_under_noise adalah bagian kasus yang labelnya berubah. categorical_swap mengganti nilai menurut peta yang dideklarasikan, dan blur, brightness, occlusion serta jpeg mengubah gambar. Regressor memakai same_score_within dengan toleransi. Orang tidak dapat menilai apakah derau pada sebuah baris mempertahankan maknanya, jadi perturbasi numerik bersifat dideklarasikan: lajunya dilaporkan, dan aturan atasnya menghasilkan INSUFFICIENT_EVIDENCE dengan transform_declared. Transformasi gambar dapat memutus gate setelah label dari orang menunjukkan bahwa transformasi itu mempertahankan makna setiap gambar, seperti transformasi teks. Proyek image/ pada contoh menunjukkan keduanya: blur yang diperiksa labelnya, dengan tingkat perubahan yang gagal terhadap batas atas, dan tambalan abu-abu yang menurut labelnya kadang menutupi goresan, sehingga aturannya menahan keputusan.

Resep di beberapa seed

Checkpoint yang Anda rilis diputuskan pada run-nya sendiri, seperti sistem mana pun. Pertanyaan kedua adalah apakah cara Anda melatih cukup baik: latih ulang bulan depan dan Anda mendapat undian lain. Latih k checkpoint dengan k seed, jalankan masing-masing pada suite yang sama, dan beri nama run-nya:

seeds:
  recipe: loan-model
  checkpoints: {seed_1: latest~4, seed_2: latest~3, seed_3: latest~2, seed_4: latest~1, seed_5: latest}
  rule: {id: recipe_accurate, criterion: correct, min: 0.8}

oloproof seeds seeds.yaml --policy recipe.yaml membaca tingkat lulus yang diharapkan di seluruh seed, dengan interval yang menghitung baik kasus dalam suite maupun seed yang dicoba. Dalam contoh, lima seed mendapat 85,7% hingga 90,3%, dan resepnya terbaca 88,2%, 83,2% hingga 91,9%: PASS terhadap 80%. Intervalnya aproksimasi, jadi kebijakan memerlukan allow_approximate_methods: true, dan jika tidak jawabannya MANUAL_REVIEW. Kebijakan harus memuat setidaknya satu aturan; perintah ini membaca tingkat kepercayaannya, persetujuan eksplisit itu, dan ambang judge-nya, dan tidak ada yang lain. Perintah ini juga mendaftar kasus yang putusannya berubah dari satu seed ke seed lain, dan --html FILE menulis satu halaman offline berisi setiap kasus di bawah setiap checkpoint.

Setiap checkpoint dihitung. Seed yang pelatihannya gagal tetap disimpan, dan setiap kasus yang tidak dijawabnya dihitung sebagai gagal untuk batas bawah dan lulus untuk batas atas, sehingga melebarkan interval. Kurang dari tiga seed menghasilkan INSUFFICIENT_EVIDENCE; sekitar lima diperlukan untuk memutuskan apa pun. Judge yang tidak akan dipercaya gate juga tidak memutuskan resep. Setiap checkpoint harus menjalankan suite yang sama, dengan satu versi sistem masing-masing, dan suite yang mendeklarasikan grup ditolak.

Yang tidak dapat diberitahukan oleh ini

  • Perturbasi yang tidak dideklarasikan siapa pun. Hanya transformasi yang dideklarasikan yang dicoba, pada ukuran yang dideklarasikan, dan laju pembalikan yang rendah tidak mengatakan apa pun tentang perubahan yang lebih besar atau pencarian oleh penyerang.
  • Ketahanan tersertifikasi. Tidak ada batas yang dibuktikan untuk input apa pun; laju pembalikan adalah laju atas kasus-kasus suite.
  • Bagaimana model dilatih. Oloproof tidak dapat melihat apakah seed dipilih sebelum checkpoint mana pun dievaluasi, apakah run yang gagal dibuang, atau apakah checkpoint hanya berbeda pada seed-nya.
  • Kegagalan yang lebih jarang dari kira-kira satu seed dari k. Jika resep gagal dilatih satu kali dari sepuluh dan tidak satu pun dari lima seed gagal, interval tidak dapat mengetahuinya.
  • Kebocoran yang tidak terlihat di file pelatihan: hampir-duplikat, gambar yang diubah ukurannya, atau baris yang dipakai untuk penyetelan tetapi tidak dimasukkan ke file.
  • Kebocoran dalam run seed. oloproof seeds tidak membaca leakage: required; checkpoint yang Anda rilis di-gate pada run-nya sendiri, yang membacanya.

Apa yang tidak dapat diberitahukan oleh setiap evaluasi ada di halamannya sendiri.