18-bo‘lim

Qidiruv sifatini baholash

Baholash to'plami tuzish, Recall@k va MRR, xatolarni ko'rib chiqish va chegarani raqam bilan tanlash.

🕑 8 daqiqa o‘qish 📄 750 so‘z 👁 2 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Baholash to'plami
  2. Ikki o'lchov
  3. Bu raqamlar nimani anglatadi
  4. Xatolarni ko'rib chiqish
  5. Chegarani raqam bilan tanlash
  6. Nimani o'lchash kerak
  7. Xulosa

17-bo'limda qidiruv bitta savolda xato qildi. Lekin «bitta savolda» - bu o'lchov emas, kuzatuv. Bu bo'limda uni raqamga aylantiramiz.

Baholash to'plami #

Har savol uchun to'g'ri javob qaysi hujjatda ekanini qo'lda belgilaymiz:

Python
sinov = [
 ("Ofis soat nechada ochiladi?", 0),
 ("Ish kuni qachon tugaydi?", 0),
 ("Tushlik qachon?", 0),
 ("Ta'til necha kun?", 1),
 ("Ta'tilga qancha oldin ariza beraman?", 1),
 ("Kasal bo'lsam nima qilaman?", 2),
 # ... jami 13 ta
]
Natija
baholash to'plami: 13 ta savol
Bu ishni birinchi kuni qiling

13 ta savol yozish yarim soat oladi. Lekin usiz siz tizimingiz yaxshilanayotganini bila olmaysiz.

Har o'zgarishdan keyin (boshqa model, boshqa bo'laklash, boshqa k) shu 13 ta savolni qayta o'tkazasiz va raqamni solishtirasiz.

Savollarni haqiqiy foydalanuvchilar tilida yozing - texnik atamalar bilan emas. «Yo'l puli qoplanadimi?» deb yozing, «Transport kompensatsiyasi siyosati» deb emas.

Ikki o'lchov #

O'lchovNima aytadi
Recall@kTo'g'ri hujjat birinchi k ta ichida bormi
MRRTo'g'ri hujjat o'rtacha nechanchi o'rinda

MRR (Mean Reciprocal Rank) - 1/o'rin qiymatlarining o'rtachasi. Birinchi o'rin 1.0, ikkinchi 0.5, uchinchi 0.33 beradi.

Natija
    k   Recall@k      MRR
    1     38.5%    0.605
    2     61.5%    0.605
    3     84.6%    0.605
    5     92.3%    0.605

MRR k ga bog'liq emas - u butun tartibni baholaydi, shuning uchun ustun bo'ylab o'zgarmaydi.

Recall esa keskin o'sadi: 38.5% dan 92.3% gacha.

Bu raqamlar nimani anglatadi #

Recall@1 = 38.5% degani: savollarning uchdan bir qismidagina kerakli hujjat birinchi o'rinda.

Agar 17-bo'limdagi kabi k=2 olsak, 61.5%. Ya'ni har uchta savoldan bittasida javob promptga umuman tushmaydi.

Recall@5 = 92.3% - deyarli hammasi topiladi.

Nechta hujjat olsak, javob qanchalik ko'p topiladi 100% 50% 0 38.5% k = 1 61.5% k = 2 84.6% k = 3 92.3% k = 5 17-bo'limdagi «k ni oshiring» maslahati - mana uning raqami lekin har qo'shimcha hujjat promptni uzaytiradi va qimmatlashtiradi
k ni 1 dan 5 ga oshirish topilish darajasini ikki barobardan ko'proq oshirdi

Xatolarni ko'rib chiqish #

Raqam muammo borligini aytadi, sababini esa xatolarning o'zi:

Natija
  5-o'rin | 'Ofis soat nechada ochiladi?'
            kutilgan: Ish vaqti            topilgan: Kasallik varaqasi
  3-o'rin | 'Tushlik qachon?'
            kutilgan: Ish vaqti            topilgan: Ta'til
  6-o'rin | 'Yo'l puli qoplanadimi?'
            kutilgan: Kompensatsiya        topilgan: Masofaviy ish
  2-o'rin | 'Kurs to'lovi qoplanadimi?'
            kutilgan: O'quv kurslari       topilgan: Masofaviy ish

Naqsh ko'rinib turibdi: «Masofaviy ish» hujjati juda ko'p marta noto'g'ri topilyapti.

Sabab - u eng qisqa va eng umumiy hujjat: «Rahbar bilan kelishiladi» kabi ko'p savolga mavzuan yaqin ko'rinadigan jumlalardan iborat.

Ikkinchi naqsh: savol va hujjat boshqa so'zlar ishlatadi. «Yo'l puli» va «Transport xarajati» - bir xil narsa, lekin umumiy so'z yo'q. 15-bo'limda ko'rganimizdek, o'zbekcha uchun model bu bog'lanishni ishonchli qila olmaydi.

Xatolarni ro'yxatga oling

PyTorch darsligining 18-bo'limidagi xato tahlili tartibi bu yerda ham ishlaydi:

  1. Qaysi savollar xato bo'lgan.
  2. Ular orasida naqsh bormi (bizda: bitta hujjat hammasini tortib oladi).
  3. Sabab nima - hujjat matnimi, savol tilimi, modelmi.
  4. Bitta o'zgarish kiriting va o'sha 13 ta savolni qayta o'tkazing.

Bizning holatda birinchi urinish: «Ish vaqti» hujjatiga savollar tilidagi so'zlarni qo'shish - «soat nechada ochiladi», «tushlik».

Chegarani raqam bilan tanlash #

17-bo'limda «chegara qo'ying» deb aytdik. Endi uni o'lchaymiz:

Natija
  to'g'ri javoblarda o'rtacha ball: 0.605
  xato javoblarda o'rtacha ball:   0.487

To'g'ri va xato holatlar ajraladi, lekin ustma-ust tushadi. Demak mukammal chegara yo'q - faqat murosa bor:

Natija
  chegara 0.35: javob berdi 13/13 | to'g'ri 5 | xato 8 | o'tkazib yuborilgan 0
  chegara 0.40: javob berdi 12/13 | to'g'ri 5 | xato 7 | o'tkazib yuborilgan 0
  chegara 0.45: javob berdi 11/13 | to'g'ri 5 | xato 6 | o'tkazib yuborilgan 0
  chegara 0.50: javob berdi  7/13 | to'g'ri 4 | xato 3 | o'tkazib yuborilgan 1

Bu PyTorch darsligining 18-bo'limidagi precision-recall murosasining o'zi.

0.50 da tizim faqat 7 ta savolga javob beradi, lekin xatolar 8 dan 3 ga tushadi. Buning evaziga bitta to'g'ri javob o'tkazib yuboriladi.

Bu raqamlar yomon - va shuni tan olish kerak

Recall@1 = 38.5% degani tizim hali ishlab chiqarishga yaroqsiz.

Buni yashirmaslik kerak. Bizning bazamiz atigi 6 ta hujjatdan iborat va model o'zbek tilida kuchsiz (10 va 15-bo'limlar).

To'g'ri yo'l - raqamni e'lon qilish, sababini aytish va yaxshilash rejasini tuzish. «Ishlayapti» deb aytish esa - eng yomon variant.

Tizimni raqamsiz chiqarish, undan ham yomoni, uni noto'g'ri raqam bilan chiqarish (13-bo'limdagi 100% kabi).

Nimani o'lchash kerak #

QismO'lchov
QidiruvRecall@k, MRR
Javob to'g'riligiQo'lda baholash yoki boshqa model bilan
«Ma'lumot yo'q» holatiBazada javobi yo'q savollarda to'g'ri rad etadimi
TezlikSo'rovga ketgan vaqt
NarxHar so'rovdagi tokenlar soni

Birinchi qatordan boshlang: qidiruvni tuzatmasdan qolganini o'lchashning ma'nosi yo'q (17-bo'lim).

Amaliy topshiriq
  1. O'z bazangiz uchun 12-15 ta savol yozib, to'g'ri hujjatni belgilang.
  2. Savollarni foydalanuvchi tilida yozing, hujjat tilida emas.
  3. Recall@1, @3 va @5 ni hisoblang.
  4. MRR ni hisoblab, nega k ga bog'liq emasligini tushuntiring.
  5. Xato qilingan savollarni ro'yxatga oling.
  6. Ular orasida naqsh bor-yo'qligini tekshiring.
  7. To'g'ri va xato holatlardagi o'rtacha ballni solishtiring.
  8. To'rt xil chegarada javob berilgan va xato sonini hisoblang.
  9. O'z masalangiz uchun chegarani tanlab, asoslang.
  10. Bitta yaxshilash kiritib, o'sha savollarni qayta o'tkazing va farqni yozing.

Xulosa #

  • «Bitta savolda xato qildi» - bu kuzatuv, o'lchov emas.
  • Baholash to'plami: savol va uning to'g'ri javobi qaysi hujjatda ekani.
  • Savollarni foydalanuvchi tilida yozing.
  • Recall@k - to'g'ri hujjat birinchi k ta ichidami.
  • MRR - o'rtacha o'rin; u k ga bog'liq emas.
  • Bizda Recall@1 atigi 38.5%, Recall@5 esa 92.3%.
  • Bu 17-bo'limdagi «k ni oshiring» maslahatining raqamli isboti.
  • Xatolarda naqsh bor edi: bitta umumiy hujjat ko'p savolni tortib olardi.
  • To'g'ri javoblarda o'rtacha ball 0.605, xatolarda 0.487 - ajraladi, lekin ustma-ust tushadi.
  • Chegarani ko'tarish xatolarni kamaytiradi, lekin javob berilmaydigan savollar ko'payadi.

Keyingi bo'limda bunday tizimni ishlab chiqarishga chiqarish - narx, tezlik va cheklovlar haqida gaplashamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.