İçeriğe geç
Modelimiz Öğretmenlerinin Hatasını Öğrendi, Cetvelimiz de Bunu Göremedi
  1. Belirti: Çizimin üstüne basılan çeviriler
  2. Keşif: Aynı piksele iki kutu, iki farklı etiket
  3. Neden görünmedi: Cetvel sınıfa bakmıyordu
  4. Kök neden: Öğretmenin hatası kalıtsaldır
  5. Çözüm: Önce cetvel, sonra veri, en son model
  6. İkinci sürpriz: İlaç, hastalık gidince zehir oldu
  7. Dersler
Model5 dk okuma

Modelimiz Öğretmenlerinin Hatasını Öğrendi, Cetvelimiz de Bunu Göremedi

Manga ve webtoon sayfalarını otomatik çeviren bir sistem geliştiriyoruz. Zincirin ilk halkası basit görünür: sayfadaki yazıları bulmak. Ama “yazı” tek bir şey değil. Konuşma balonunun içindeki replik var. Anlatı kutusu ya da karakterin iç sesi gibi balon dışı metin var. Bir de çizimin parçası olan ses efektleri var: “BOOM”, “KRAAK”, kılıç savrulurken yazılan o dev harfler.

Bu ayrım kozmetik değil. Balon içi metin silinip yerine çeviri yazılır. Ses efekti ise çizimin kendisidir; ona dokunmak sanatı bozmak demektir. Yani modelin yalnızca “burada yazı var” demesi yetmez. Ne tür bir yazı olduğunu da doğru söylemesi gerekir.

Bu yazı, bunu doğru yapmaya çalışırken aylarca göremediğimiz bir hatayı anlatıyor.

Belirti: Çizimin üstüne basılan çeviriler

Kendi tespit modelimizi eğittik. Sınav setinde notları iyiydi. Canlıya aldık. Sonra çevrilmiş sayfalarda tuhaf şeyler görmeye başladık:

  • Bazı ses efektlerinin üstüne çeviri basılmıştı; hem de efektin kendisi yerinde dururken.
  • Bazı yerlerde aynı metin iki kez dizilmişti, üst üste.

İlk refleksimiz “model zayıf, daha çok veri ve daha uzun eğitim lazım” oldu. Ama sınav notları bunu söylemiyordu. Model sınavda iyiydi. Sorun başka yerdeydi.

Keşif: Aynı piksele iki kutu, iki farklı etiket

Canlıdaki çıktıları tek tek açıp baktığımızda deseni gördük. Model aynı yazının etrafına iki kutu çiziyordu. Kutular neredeyse birebir örtüşüyordu, ama birinde “ses efekti”, diğerinde “balon dışı metin” etiketi vardı.

Sonrası zincirleme bir kaza:

  • “Ses efekti” kopyası kuralına uyup sanatı olduğu gibi bırakıyordu.
  • “Metin” kopyası ise çevrilip aynı yerin üstüne basılıyordu.

“Ses efektine dokunma” kuralımız delinmişti. Tek bir nesne iki kez işleniyordu.

Ne kadar yaygın olduğunu saydık: canlıda incelediğimiz 379 sayfada 1.064 ikiz kutu vardı. Sayfaların %73’ünde en az bir tane. Bu bir istisna değil, bir karakter özelliğiydi.

Neden görünmedi: Cetvel sınıfa bakmıyordu

Asıl can sıkıcı soru şuydu: bu kadar yaygın bir hata sınavda neden hiç görünmedi?

Cevap ölçüm betiğimizdeydi. Sınav, tahmin edilen kutuyu doğru kutuyla konumuna göre eşleştiriyordu. Kutu doğru yerdeyse “doğru” sayılıyordu; etiketine bakılmıyordu. Aynı yere iki kutu çizen model bu cetvelle hiç ceza almıyordu. Hatta fazladan kutu bazen işine bile yarıyordu.

Daha kötüsü, sınav setinin kendisi de kirliydi. Birkaç düzine “doğru cevap” içinde bile aynı ikiz kutular vardı. Yani hem cetvel eğriydi, hem de cetvelle ölçtüğümüz örnek.

Kök neden: Öğretmenin hatası kalıtsaldır

Peki model bu davranışı nereden öğrenmişti?

Modeli nesil nesil eğitiyorduk:

  1. İlk nesli yalnızca insanların elle onayladığı küçük bir “altın” set üzerinde eğittik.
  2. Onun ürettiği etiketlerle veri setini büyüttük.
  3. Bir sonraki nesli bu büyük set üzerinde eğittik.

Bu yaklaşım, yani sözde etiketleme ya da öğretmen-öğrenci düzeni, az insan emeğiyle çok veri üretmenin bilinen bir yolu.

Etiketleri kaynağına göre ayırıp saydığımızda tablo netleşti:

Etiket kaynağıBin kutuda ikiz
İnsan onaylı altın set0,1
Önceki neslin makine etiketleri14,2

İkinci neslin eğitim verisinin yaklaşık %90’ı makine etiketiydi. Öğretmen modelin küçük, sistematik bir alışkanlığı vardı: emin olamadığında aynı yazıya iki etiket birden vermek. Öğrenci bunu bir hata olarak değil, doğru cevap olarak öğrendi. Üstelik daha da güçlendirdi.

Çözüm: Önce cetvel, sonra veri, en son model

Refleksimiz yine “yeniden eğit” olabilirdi. Ama eğri cetvelle ölçülen her yeni model aynı körlükle değerlendirilecekti. Sırayı tersine çevirdik:

  1. Cetveli düzelttik. Ölçüm artık sınıfa bakıyor. Doğru yerde ama yanlış etiketle çizilen kutu hata sayılıyor. Aynı nesneye düşen fazladan kutu ayrıca raporlanıyor.
  2. Sınav setini temizledik. Önce “doğru cevapların” kendisini düzelttik.
  3. Her etikete kökenini damgaladık. Artık her kutu hangi nesilden ya da hangi insan onayından geldiğini taşıyor. Bir neslin hatası ortaya çıkınca onun etiketleri, veri setinin geri kalanına dokunmadan cerrahi olarak sökülebiliyor.
  4. Çelişkili çiftleri yargıca gösterdik. Aynı yere düşen iki kutu, görüntüyü okuyabilen yapay zekâ yargıçlarına gösterildi. Kaybeden reddedildi. Emin olunamayan bölgeler eğitimde “yok sayılan alan” olarak maskelendi.
  5. Temiz bir başlangıçtan yeniden eğittik. Veri setinin temizliği sayılarla kanıtlanmadan ücretli GPU kiralamadık. Rastgele örneklere tek tek baktığımız son kontrol turunda 40 örneğin 40’ı temizdi.

İkinci sürpriz: İlaç, hastalık gidince zehir oldu

Yeni model geldi. Ham çıktısını düzeltilmiş cetvelle ölçtük: sınıf-doğru skor %79,3. Güzel.

Sonra canlıdaki haliyle, yani çıktısını işleyen son adımlardan geçirdikten sonra ölçtük: %65,7. Balon dışı metin yakalama oranı ise %38’den %11’e düşmüştü.

Neden? Aylar önce, eski modelin ikiz kutularını temizlemek için bir son-işlem kuralı yazmıştık. Çakışan kutulardan birini belli bir öncelik sırasına göre atıyordu. Eski model için bu bir ilaçtı. Yeni model artık ikiz üretmiyordu. Ama kural hâlâ oradaydı ve bu kez doğru tespitleri de atıyordu.

Kuralı “önceden belirlenmiş öncelik” yerine “modelin güveni yüksek olan kazanır” ilkesiyle yeniden yazdık. Zincir sonrası skor %78,3’e çıktı, yani ham modelin performansı neredeyse hiç kayıpsız korundu. Ondan sonra canlıya aldık.

Dersler

  1. Önce cetvel. Bir modeli iyileştirmeden önce, onu ölçen aletin tam olarak neyi gördüğünü ve neyi görmediğini bilin. Bizim cetvelimiz en yaygın hatamızı tasarımı gereği göremiyordu.
  2. Öğretmenin hatası kalıtsaldır. Sözde etiketleme güçlü bir araç. Ama öğretmen modelin sistematik hataları öğrenciye “doğru cevap” olarak geçer ve orada büyür. Makine etiketlerini insan etiketlerinden ayrı tutun ve kökenlerini kaydedin. Bir gün sökmeniz gerekecek.
  3. Uçtan uca ölçün. Model tek başına iyi olabilir. Kullanıcının gördüğü ise model artı onun etrafındaki her kural. İkisini ayrı ayrı değil, birlikte ölçün.
  4. Eski yamalar borçtur. Bir sorunu kapatmak için yazılan kural, sorun ortadan kalkınca kendisi sorun olur. Model değiştiğinde yalnızca modeli değil, etrafındaki her yamayı da yeniden sınayın.
  5. Veri kanıtlanmadan para yakmayın. Eğitim saatlerce sürüyor ve para ediyor. Kirli veriyle yapılan her eğitim turu, yanlış şeyi daha iyi öğrenmiş bir modelle sonuçlanıyor.

Bu hatayı bulmak bir eğitim turundan çok daha uzun sürdü. Ama bulduğumuzda elimizde daha iyi bir modelden fazlası vardı: artık ne zaman iyileştiğimizi gerçekten görebildiğimiz bir ölçüm düzeni.