Veri Kümemin %99'u Nereye Gitti
Birkaç milyon eğitim örneğinden oluşan bir veri kümesi inşa etmeye koyuldum. İşlem hattı bittiğinde bana bunun yüzde birkaçını verdi — o kadar küçük bir kesir ki yazım hatası gibi görünüyordu. Hiçbir şey çökmemişti. Hiçbir hata tetiklenmemişti. Veri üretmekte başarısız olmamıştı; sessizce kendisinin neredeyse tamamını çöpe atmış ve ardından başarı rapor etmişti.
Doğru olamayacak kadar küçük olan sayı
Bu tür bir hatanın tuhaf yanı, kendisini ilan etmemesidir. Çöken bir işlem hattı gürültülüdür. Sessizce çok az şey üreten bir işlem hattı ise sadece tamamlanır, sana bir dosya verir ve senin fark etmeni bekler. Kabaca kaç örnek beklediğimi hatırlamış olmasaydım, hayatta kalanlar üzerinde eğitim yapabilir ve gerisinin kaybolduğunu asla bilemeyebilirdim.
Tek belirti, neredeyse iki büyüklük mertebesi kadar sapmış bir sayımdı. Ve bir sayının yanlış olması, dünyadaki es geçilmesi en kolay belirtilerden biridir, çünkü beklenenden küçük bir sayı bile hâlâ gerçek bir sayı gibi görünür. Bir hata gibi hissettirmez. Bir sonuç gibi hissettirir.
”Neden bu kadar az var?” gerçek bir hata sınıfıdır
Bizler bozulan şeyleri ayıklamak üzere eğitildik. Sadece yok olan şeyleri ayıklamakta çok daha kötüyüz — var olması gereken ama olmayan veri, oluşturulmuş olması gereken ama hiç oluşturulmamış örnekler. Gidilmemiş bir yolun yığın izi (stack trace) yoktur. İşlem hattı ona söylediğim şeyi tam olarak yaptı; sadece ona söylediğim şeyin, girdinin çoğunu geçerken çöpe attığı ortaya çıktı.
Verinin gittiği yer
Sebep neredeyse utanç verici derecede sıradandı. Sürecin bir yerinde, zaman çizelgesinde büyük adımlarla ilerliyordum — bir ana bakıp, sonra uzun bir boşluğu atlayarak bir sonrakine geçip, sonra yine atlıyordum. Üzerinden atladığım her konum, hiç incelenmemiş ve hiç oluşturulmamış potansiyel bir örnekti. O adım aralığını çoktan, artık hatırlamadığım bir sebeple ayarlamış ve sonra orada olduğunu unutmuştum.
Yani veri kümesi bozulmamış, filtrelenmemiş ya da temizlenip küçültülmemişti. Sadece hiçbir zaman tam olarak bakılmamıştı. Mevcut verinin ezici çoğunluğu, döngünün adım aralığının bir adım dışında, dokunulmadan otururken, işlem hattı onun yanından geçip yürüdü ve işinin bittiğini rapor etti.
Sessiz kayıp tehlikeli olan türdür
İşte sürekli geri döndüğüm kısım bu. Gürültülü bir başarısızlık bir armağandır: seni durdurur, kendini işaret eder ve dikkat talep eder. Sessiz bir kayıp sana bunların hiçbirini vermez. Makul görünen bir çıktı üretir, şikâyet etmeden çalışır ve aşağı akıştaki her şeyin üzerine inşa edildiği temeli sessizce değiştirir. Bir modeli eğitebilir, değerlendirebilir ve ondan sonuçlar çıkarabilirsin — hepsini, gizlice sahip olduğunu sandığın şeyin küçük, temsil gücü olmayan bir kıymığı olan bir veri kümesinin üzerinde.
Tehlike sadece sayının yanlış olması değildir. Sayının yanlış olması ve sistemin bundan memnun olmasıdır — her şey yeşil, her şey çalışıyor, her şey daha en ilk adımda sana ihanet eden bir temelin üzerine inşa edilmiş.
Çözüm: her şeyi incele, sonra neyi tutacağını seç
Onarım, atlamayı bırakmaktı. Zaman çizelgesinde adımlarla ilerleyip yalnızca denk geldiğim noktaları incelemek yerine, sürecin her konumu sırayla ele almasını sağladım — ve neyi tutacağım kararını, bir örnekleme adımının kazara yan ürünü olmaktan çıkarıp açık, kasıtlı bir filtre hâline getirdim. Düşürdüğüm veriyi artık bilerek, yüksek sesle söyleyebileceğim bir sebeple düşürüyordum. Tuttuğum veriyi ise gerçekten ona baktığım için tutuyordum.
Veri kümesi olması gereken boyuta yakın bir hâle geri döndü. Bunu sağlayan akıllıca hiçbir şey olmadı. Sadece veriyi istemeden çöpe atmayı bırakmıştım.
Veri işinde en ucuz kontrol
Ders, bir ders gibi hissettiremeyecek kadar basit: beklediğin boyutu aldığın boyutla karşılaştır. Bu, fena hâlde az kullandığım ucuz bir mantık kontrolüdür ve bunu saniyeler içinde yakalardı. Sahip olduğumu sandığım veri miktarı ile gerçekte var olan veri miktarı arasındaki büyük bir uçurum, bir hata olarak ele alınmayı hak eder — hatta, özellikle, sana bunu söyleyecek hiçbir şey çökmediğinde.
Şimdi herhangi bir veri kümesiyle yaptığım ilk şey içeriğine bakmak değildir. Sayımına bakmak ve o sayının makul olup olmadığını sormaktır. Yaşadığım en kötü veri sorunlarının çoğu veriyi bozmadı. Sadece sessizce inandığımdan daha azını ürettiler ve aradaki farkın üzerine inşa etmeme izin verdiler.
Verinin çoğunu sesini yükseltmeden kaybeden bir işlem hattı çökmüyordur — tam olarak yazıldığı gibi çalışıyor ve yine de yanlış olanı yapıyordur. Hata hiçbir zaman makinedeki bir kusur değildi. Varsaydığım şey ile kontrol etme zahmetine girdiğim şey arasındaki boşluktaydı.
— Sinyal yok, getiri yok, yatırım tavsiyesi değildir.