Zero-Shot, One-Shot, dan Few-Shot
Memilih jumlah contoh.
Zero-Shot, One-Shot, dan Few-Shot adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Prompt Engineering, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Prompt Engineering mencakup 4 pelajaran total.
Spektrum Contoh
Contoh menunjukkan jumlah demonstrasi berlabel yang ditempatkan dalam prompt sebelum kueri langsung. Zero-shot sepenuhnya mengandalkan pengetahuan awal model dari prapelatihan; few-shot mengondisikan model pada distribusi kecil yang spesifik untuk tugas saat inferensi, tanpa memperbarui bobot apa pun.
Ini adalah pembelajaran dalam konteks (ICL): transformer memperlakukan contoh-contoh tersebut sebagai bagian dari rangkaian dan secara implisit melakukan semacam regresi meta-terpelajar terhadap contoh-contoh itu. Pilihan k (jumlah contoh) adalah hiperparameter yang Anda sesuaikan secara empiris, bukan praktik terbaik yang sudah ditetapkan.
from dataclasses import dataclass
@dataclass
class ICLConfig:
k: int # number of demonstrations
selection: str # 'static' | 'dynamic'
order: str # 'random' | 'similarity' | 'curriculum'
# Zero-shot is simply k=0
cfg = ICLConfig(k=0, selection='static', order='random')Saat Zero-Shot Unggul
Utamakan zero-shot ketika tugas tersebut terwakili dengan baik dalam prapelatihan (peringkasan, penerjemahan, klasifikasi umum) dan ketika contoh dapat membiaskan format keluaran. Untuk model yang disetel dengan instruksi, arahan yang ringkas ditambah skema keluaran sering kali lebih unggul daripada contoh yang secara halus mengarahkan gaya.
Zero-shot juga meminimalkan biaya token dan latensi, serta menghindari bias label mayoritas, yaitu ketika model terlalu sering memprediksi kelas yang paling dominan dalam demonstrasi Anda.
# Zero-shot with explicit schema beats vague few-shot
PROMPT = (
'Classify sentiment as POSITIVE, NEGATIVE, or NEUTRAL.\n'
'Respond with only the label.\n\n'
'Text: ' + user_text + '\nLabel:'
)One-Shot sebagai Penanda Format
One-shot sangat efektif ketika tugasnya jelas secara konsep, tetapi format keluaran tidak biasa atau ketat. Satu demonstrasi mengajarkan bentuk yang tepat (kunci JSON, pemisah, penggunaan huruf besar-kecil) dengan jauh lebih andal daripada deskripsi dalam bentuk prosa.
Gunakan one-shot ketika Anda ingin membatasi struktur tanpa menghabiskan token atau mengambil risiko kemencengan distribusi label yang ditimbulkan oleh banyak contoh.
ONE_SHOT = (
'Extract entities as JSON.\n\n'
'Input: Apple released the iPhone in Cupertino.\n'
'Output: {"org": ["Apple"], "product": ["iPhone"], "loc": ["Cupertino"]}\n\n'
'Input: ' + query + '\nOutput:'
)Few-Shot dan Kurva k
Performa terhadap k jarang bersifat monoton. Biasanya performa meningkat, mencapai titik datar, lalu menurun ketika contoh memenuhi konteks, mengurangi fokus perhatian, dan menjauhkan pertanyaan aktif dari fokus kemutakhiran model.
Ujilah k secara empiris pada {1, 2, 4, 8, 16} menggunakan set yang disisihkan. Nilai k yang optimal bergantung pada kompleksitas tugas, panjang contoh, dan pemanfaatan konteks efektif model, yang biasanya jauh di bawah jendela konteks yang diiklankan.
def sweep_k(eval_set, candidates, ks=(1,2,4,8,16)):
results = {}
for k in ks:
acc = evaluate(build_prompt(candidates[:k]), eval_set)
results[k] = acc
return max(results, key=results.get)Mengapa ICL Berfungsi: Inferensi Implisit
Penelitian memandang ICL sebagai model yang melakukan inferensi Bayesian implisit: demonstrasi membantu menemukan konsep tugas laten yang telah dipelajari model selama prapelatihan. Contoh berperan sebagai bukti yang mempersempit posterior atas tugas, bukan sebagai pengetahuan baru.
Hal ini menjelaskan temuan yang berlawanan dengan intuisi: bahkan label yang salah dalam demonstrasi dapat mempertahankan sebagian besar akurasi, karena sinyal utamanya adalah format dan ruang label, bukan pemetaan input-label itu sendiri.
# Min, Lyu et al. (2022): label correctness matters less than
# - the input distribution
# - the label space (which classes exist)
# - the format / structure
# Implication: invest in representative inputs + valid label setAnggaran Token dan Pertukaran Biaya
Setiap contoh mengonsumsi konteks dan biaya. Jika demonstrasinya panjang, empat contoh dapat jauh lebih besar daripada pertanyaannya. Hitung metrik biaya per poin akurasi: jika k=8 hanya memberikan peningkatan 0,5% dibandingkan k=4 dengan jumlah token dua kali lipat, k=4 lebih unggul dalam produksi.
Untuk pipeline dengan throughput tinggi, utamakan penyimpanan singgahan prompt untuk blok contoh statis agar demonstrasi yang berulang ditagihkan dan diproses satu kali.
def cost_efficiency(acc_by_k, tokens_by_k, price_per_1k):
return {
k: acc_by_k[k] / (tokens_by_k[k] / 1000 * price_per_1k)
for k in acc_by_k
}
# Pick the k maximizing accuracy per dollar, not raw accuracyBias Label Mayoritas dan Posisi
Prompt few-shot membawa bias tersembunyi. Bias label mayoritas membuat model cenderung memilih kelas yang paling sering muncul dalam demonstrasi. Bias kemutakhiran memberi bobot berlebih pada contoh terakhir. Bias token umum mengutamakan token yang sering muncul.
Teknik kalibrasi seperti kalibrasi kontekstual memperkirakan prior model pada input tanpa isi (misalnya token N/A), lalu membaginya dari hasil tersebut sehingga pengklasifikasi few-shot menjadi jauh lebih stabil.
# Contextual calibration (Zhao et al. 2021)
p_cf = model_probs(prompt_with_input('N/A')) # content-free prior
W = 1.0 / p_cf # diagonal correction
def calibrated(probs):
return normalize(W * probs)Menyeimbangkan Set Demonstrasi
Untuk mengatasi bias label mayoritas, seimbangkan kelas-kelas dalam demonstrasi dan variasikan urutannya. Untuk klasifikasi biner dengan k=4, gunakan 2 contoh positif dan 2 negatif yang diacak, bukan perbandingan 3:1.
Untuk tugas generasi, seimbangkan dimensi yang penting (length, nada, tingkat kesulitan) agar model tidak runtuh ke satu mode yang paling sering dilihatnya.
import random
def balanced_demos(pool, k, label_fn):
by_label = {}
for ex in pool:
by_label.setdefault(label_fn(ex), []).append(ex)
per = k // len(by_label)
picks = [e for lst in by_label.values() for e in random.sample(lst, per)]
random.shuffle(picks)
return picksFew-Shot vs Penyetelan Halus
Few-shot adalah alat yang tepat ketika tugas sering berubah, data terbatas, atau Anda tidak dapat menjalankan model yang telah disetel. Penyetelan halus lebih unggul ketika Anda memiliki ribuan contoh, memerlukan latensi per panggilan serendah mungkin, atau ingin menanamkan format agar prompt tetap singkat.
Jalur produksi yang umum: buat prototipe dengan few-shot, kumpulkan jejak yang berhasil, lalu suling jejak tersebut menjadi penyetelan halus agar token contoh dapat dihilangkan sepenuhnya.
# Decision heuristic
if num_labeled < 500 or task_volatility == 'high':
strategy = 'few-shot ICL'
elif latency_budget_ms < 200 or prompt_token_cost_dominant:
strategy = 'fine-tune + zero-shot'
else:
strategy = 'few-shot now, distill later'Tugas Penalaran Memerlukan Lebih dari Sekadar Contoh
Untuk penalaran multilangkah, pasangan jawaban few-shot mentah dapat merugikan: model belajar langsung melompat ke jawaban yang tidak dapat dijelaskannya. Padukan few-shot dengan demonstrasi penalaran berantai yang memperlihatkan jejak penalaran, bukan hanya label akhir.
Jumlah contoh berinteraksi dengan kedalaman penalaran; sering kali k=2 contoh CoT berkualitas tinggi mengungguli k=8 contoh yang hanya berisi jawaban pada tolok ukur aritmetika dan logika.
COT_SHOT = (
'Q: A shop had 23 apples, used 20, bought 6 more. How many now?\n'
'A: Start 23, minus 20 leaves 3, plus 6 is 9. Answer: 9\n\n'
'Q: ' + question + '\nA:'
)Harness Evaluasi untuk k
Perlakukan pemilihan jumlah contoh sebagai pencarian empiris yang didukung harness. Sisihkan set validasi, kendalikan urutan contoh dengan beberapa seed, dan laporkan rata-rata serta varians, karena akurasi few-shot dapat berubah beberapa poin hanya akibat pengurutan.
Catat jumlah token dan latensi untuk setiap k agar pilihan akhir mengoptimalkan tujuan secara menyeluruh, bukan hanya akurasi.
def harness(pool, val, ks, seeds=5):
report = {}
for k in ks:
accs = []
for s in range(seeds):
demos = balanced_demos(pool, k, label_fn)
accs.append(evaluate(build_prompt(demos), val))
report[k] = (mean(accs), stdev(accs))
return reportPemeriksaan Singkat
Uji pemahaman Anda tentang pemilihan jumlah contoh dan bias ICL.
Rangkuman
Inti pembelajaran:
kadalah hiperparameter yang dapat disetel; lakukan penyapuan dan amati kurva naik-datar-turun.- Zero-shot cocok untuk tugas yang sudah dikenal luas; one-shot menjadi penanda format ketat; few-shot mengondisikan model pada distribusi tugas.
- ICL bekerja dengan menemukan tugas yang telah dipelajari sebelumnya, sehingga format dan ruang label lebih dominan daripada kebenaran label.
- Atasi bias label mayoritas, kemutakhiran, dan token umum dengan penyeimbangan, pengacakan, dan kalibrasi kontekstual.
- Optimalkan akurasi per rupiah, padukan tugas penalaran dengan contoh CoT, dan suling prompt few-shot yang stabil menjadi penyetelan halus.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Zero-Shot, One-Shot, dan Few-Shot” gratis?
Ya — teks lengkap “Zero-Shot, One-Shot, dan Few-Shot” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Prompt Engineering, upgrade ke CoddyKit PRO. Kursus AI Prompt Engineering mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Zero-Shot, One-Shot, dan Few-Shot”?
Memilih jumlah contoh. Kamu berlatih AI Prompt Engineering dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Prompt Engineering?
Tidak diperlukan pengalaman sebelumnya. AI Prompt Engineering di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Zero-Shot, One-Shot, dan Few-Shot” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Prompt Engineering ini?
Ya. Setiap pelajaran AI Prompt Engineering menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Zero-Shot, One-Shot, dan Few-Shot
- Merancang Contoh yang Efektif
- Urutan Contoh dan Kebaruan
- Pemilihan Few-Shot Dinamis