Üretim makine öğrenimi sistemleri: Ardışık düzenleri izleme

Tebrikler! Tek boynuzlu at modelini dağıttınız. Modeliniz 7/24 sorunsuz çalışmalıdır. Bunun gerçekleştiğinden emin olmak için makine öğrenimi (ML) ardışık düzeninizi izlemeniz gerekir.

Ham verileri doğrulamak için veri şeması yazma

Verilerinizi izlemek için, verilerin karşılaması gereken kurallar yazarak verilerinizi sürekli olarak beklenen istatistiksel değerlere göre kontrol etmeniz gerekir. Bu kural koleksiyonuna veri şeması denir. Aşağıdaki adımları uygulayarak bir veri şeması tanımlayın:

  1. Özelliklerinizin kapsamını ve dağıtımını anlayın. Kategorik özellikler için olası değerler kümesini anlayın.

  2. Anlayışınızı veri şemasına kodlayın. Aşağıda kural örnekleri verilmiştir:

    • Kullanıcı tarafından gönderilen puanların her zaman 1 ile 5 arasında olduğundan emin olun.
    • the kelimesinin en sık kullanıldığını kontrol edin (İngilizce metin özelliği için).
    • Her kategorik özelliğin, olası değerlerden oluşan sabit bir gruptaki değerlerden birine ayarlandığını kontrol edin.
  3. Verilerinizi veri şemasına göre test edin. Şemanız aşağıdaki gibi veri hatalarını yakalamalıdır:

    • Anormallikler
    • Kategorik değişkenlerin beklenmeyen değerleri
    • Beklenmeyen veri dağılımları

Özellik mühendisliğini doğrulamak için birim testleri yazma

Ham verileriniz veri şemasını geçse de modeliniz ham veriler üzerinde eğitilmez. Bunun yerine modeliniz, özellik mühendisliği uygulanmış verilerle eğitilir. Örneğin, modeliniz ham sayısal veriler yerine normalleştirilmiş sayısal özellikler üzerinde eğitilir. Özellik mühendisliği uygulanmış veriler, ham giriş verilerinden çok farklı olabileceğinden, özellik mühendisliği uygulanmış verileri ham giriş verileriyle ilgili kontrollerinizden ayrı olarak kontrol etmeniz gerekir.

Özellik mühendisliği uygulanmış verilerle ilgili anlayışınıza dayalı olarak birim testleri yazın. Örneğin, aşağıdaki gibi koşulları kontrol etmek için birim testleri yazabilirsiniz:

  • Tüm sayısal özellikler, örneğin 0 ile 1 arasında ölçeklendirilir.
  • One-hot kodlanmış vektörler yalnızca tek bir 1 ve N-1 sıfır içerir.
  • Dönüşümden sonraki veri dağıtımları beklentilere uygundur. Örneğin, Z puanlarını kullanarak normalleştirme yaptıysanız Z puanlarının ortalaması 0 olmalıdır.
  • Aykırı değerler ölçeklendirme veya kırpma gibi yöntemlerle işlenir.

Önemli veri dilimlerinin metriklerini kontrol etme

Başarılı bir bütün bazen başarısız bir alt kümenin üzerini örter. Başka bir deyişle, genel metrikleri mükemmel olan bir model, belirli durumlarda hâlâ kötü tahminler yapabilir. Örneğin:

Tek boynuzlu at modeliniz genel olarak iyi performans gösteriyor ancak Sahra Çölü ile ilgili tahminlerde bulunurken kötü performans gösteriyor.

Genel olarak mükemmel bir AUC ile yetinen bir mühendisseniz modelin Sahra Çölü'ndeki sorunlarını fark etmeyebilirsiniz. Her bölge için iyi tahminler yapmak önemliyse her bölgenin performansını izlemeniz gerekir. Sahra Çölü'ne karşılık gelen gibi veri alt kümelerine veri dilimleri adı verilir.

İlgilendiğiniz veri dilimlerini belirleyin. Ardından, bu veri dilimlerinin model metriklerini tüm veri kümenizin metrikleriyle karşılaştırın. Modelinizin tüm veri dilimlerinde iyi performans gösterdiğini kontrol etmek, önyargıyı ortadan kaldırmaya yardımcı olur. Daha fazla bilgi için Adalet: Önyargı Açısından Değerlendirme başlıklı makaleyi inceleyin.

Gerçek dünya metriklerini kullanma

Model metrikleri, modelinizin gerçek dünyadaki etkisini ölçmeyebilir. Örneğin, bir hiperparametrenin değiştirilmesi modelin AUC'sini artırabilir ancak bu değişiklik kullanıcı deneyimini nasıl etkiledi? Gerçek dünyadaki etkiyi ölçmek için ayrı metrikler tanımlamanız gerekir. Örneğin, modelinizin kullanıcılarına modelin tek boynuzlu at göreceklerini tahmin ettiği sırada gerçekten tek boynuzlu at görüp görmediklerini sorabilirsiniz.

Eğitim ve sunma arası sapmayı kontrol etme

Eğitim-sunum eğriliği, eğitim sırasında kullanılan giriş verilerinizin sunumdaki giriş verilerinizden farklı olmasıdır. Aşağıdaki tabloda, iki önemli çarpıklık türü açıklanmaktadır:

Tür Tanım Örnek Çözüm
Şema çarpıklığı Eğitim ve yayın giriş verileri aynı şemaya uygun değil. Modeliniz eski verilerle eğitilmeye devam ederken yayın verilerinin biçimi veya dağıtımı değişir. Eğitim ve yayın verilerini doğrulamak için aynı şemayı kullanın. Şemanız tarafından kontrol edilmeyen istatistikleri (ör. eksik değerlerin oranı) ayrı olarak kontrol ettiğinizden emin olun.
Özellik çarpıklığı Mühendislik ürünü veriler, eğitim ve sunma arasında farklılık gösterir. Özellik mühendisliği kodu, eğitim ve sunma arasında farklılık göstererek farklı mühendislik verileri üretir. Şema çarpıklığına benzer şekilde, eğitim ve sunum için tasarlanmış verilerde aynı istatistiksel kuralları uygulayın. Algılanan çarpık özelliklerin sayısını ve özellik başına çarpık örneklerin oranını izleyin.

Eğitim ve sunma arası sapmanın nedenleri fark edilmesi zor olabilir. Tahmin sırasında modelinizin hangi verilere erişebileceğini her zaman göz önünde bulundurun. Eğitim sırasında yalnızca hizmet sunarken kullanabileceğiniz özellikleri kullanın.

Alıştırma: Anlayıp anlamadığınızı kontrol edin

Online mağazanız olduğunu ve belirli bir günde ne kadar para kazanacağınızı tahmin etmek istediğinizi varsayalım. Makine öğrenimi hedefiniz, müşteri sayısını bir özellik olarak kullanarak günlük geliri tahmin etmektir.

Ne tür bir sorunla karşılaşabilirsiniz?
Yanıtı görmek için burayı tıklayın.

Etiket sızıntısı olup olmadığını kontrol etme

Etiket sızıntısı, tahmin etmeye çalıştığınız kesin referans etiketlerinizin eğitim özelliklerinize yanlışlıkla girdiği anlamına gelir. Etiket sızıntısını tespit etmek bazen çok zordur.

Alıştırma: Anlayıp anlamadığınızı kontrol edin

Yeni bir hastane hastasının kanser olup olmadığını tahmin etmek için ikili sınıflandırma modeli oluşturduğunuzu varsayalım. Modelinizde aşağıdaki gibi özellikler kullanılıyor:

  • Hasta yaşı
  • Hasta cinsiyeti
  • Önceki tıbbi durumlar
  • Hastane adı
  • Hayati bulgular
  • Test sonuçları
  • Kalıtım

Etiket aşağıdaki gibidir:

  • Boole: Hastanın kanseri var mı?

Verileri dikkatli bir şekilde bölümlere ayırarak eğitim kümenizin doğrulama kümenizden ve test kümenizden iyi bir şekilde ayrılmasını sağlarsınız. Model, doğrulama kümesi ve test kümesinde son derece iyi performans gösteriyor. Metrikler harika. Maalesef model, gerçek dünyadaki yeni hastalarda çok kötü performans gösteriyor.

Test kümesinde başarılı olan bu model neden gerçek dünyada başarısız oldu?
Yanıtı görmek için burayı tıklayın.

Ardışık düzen boyunca model yaşını izleme

Yayın verileri zaman içinde değişir ancak modeliniz düzenli olarak yeniden eğitilmezse model kalitesinde düşüş görürsünüz. Modelin yeni verilerle yeniden eğitilmesinden bu yana geçen süreyi izleyin ve uyarılar için bir eşik yaş belirleyin. Modelin yayın sırasındaki yaşını izlemenin yanı sıra, işlem hattındaki duraklamaları yakalamak için işlem hattı boyunca modelin yaşını da izlemeniz gerekir.

Model ağırlıklarının ve çıkışlarının sayısal olarak kararlı olduğunu test etme

Model eğitimi sırasında ağırlıklarınız ve katman çıkışlarınız NaN (sayı değil) veya Inf (sonsuz) olmamalıdır. Ağırlıklarınızın ve katman çıkışlarınızın NaN ve Inf değerlerini kontrol etmek için testler yazın. Ayrıca, bir katmanın çıkışlarının yarısından fazlasının sıfır olmadığını test edin.

Model performansını izleme

Tek boynuzlu at görünümü tahmin aracınız beklenenden daha popüler oldu. Çok sayıda tahmin isteği ve daha da fazla eğitim verisi alıyorsunuz. Modelinizin eğitilmesi için daha fazla bellek ve zaman gerektiğini fark edene kadar bu durumun harika olduğunu düşünürsünüz. Aşağıdaki adımları uygulayarak modelinizin performansını izlemeye karar verirsiniz:

  • Kod, model ve veri sürümlerine göre model performansını izleyin. Bu tür izleme, performanstaki düşüşlerin tam nedenini belirlemenize olanak tanır.
  • Yeni bir model sürümünün saniyede eğitim adımlarını önceki sürüme ve sabit bir eşiğe göre test edin.
  • Bellek kullanımına eşik belirleyerek bellek sızıntılarını yakalayın.
  • API yanıt sürelerini izleyin ve yüzdelik dilimlerini takip edin. API yanıt süreleri kontrolünüz dışında olsa da yavaş yanıtlar, gerçek dünyadaki metriklerin kötü olmasına neden olabilir.
  • Saniyede yanıtlanan sorgu sayısını izleyin.

Sunulan verilerde canlı modelin kalitesini test etme

Modelinizi doğruladınız. Ancak doğrulama verilerinizi kaydettikten sonra tek boynuzlu at davranışı gibi gerçek dünya senaryoları değişirse ne olur? Bu durumda, sunulan modelinizin kalitesi düşer. Ancak gerçek dünya verileri her zaman etiketlenmediğinden yayınlamada kaliteyi test etmek zordur. Yayın verileriniz etiketlenmemişse aşağıdaki testleri yapın:

  • İnsan değerlendiricileri kullanarak etiket oluşturma

  • Tahminlerde önemli istatistiksel önyargı gösteren modelleri inceleyin. Bkz. Sınıflandırma: Tahmin Yanlılığı.

  • Modeliniz için gerçek dünya metriklerini izleyin. Örneğin, spam'i sınıflandırıyorsanız tahminlerinizi kullanıcılar tarafından bildirilen spam ile karşılaştırın.

  • Sorgularınızın bir kısmında yeni bir model sürümü yayınlayarak eğitim ve yayın verileri arasındaki olası farklılıkları azaltın. Yeni yayın modelinizi doğrularken tüm sorguları kademeli olarak yeni sürüme geçirin.

Bu testleri kullanırken tahmin kalitesindeki hem ani hem de yavaş bozulmaları izlemeyi unutmayın.

Rastgele hale getirme

Veri oluşturma ardışık düzeninizi tekrarlanabilir hale getirin. Model kalitesini nasıl etkilediğini görmek için bir özellik eklemek istediğinizi varsayalım. Adil bir deneme için veri kümeleriniz bu yeni özellik dışında aynı olmalıdır. Bu doğrultuda, veri oluşturma sürecindeki tüm rastgeleleştirme işlemlerinin deterministik olarak yapılabildiğinden emin olun:

  • Rastgele sayı oluşturucularınızı (RNG) başlatın. Başlatma, rastgele sayı üretecini her çalıştırdığınızda aynı değerleri aynı sırada vermesini sağlayarak veri kümenizi yeniden oluşturur.
  • Değişmez karma anahtarlar kullanın. Karma oluşturma, verileri bölmek veya örneklemek için yaygın olarak kullanılan bir yöntemdir. Her örneği karma oluşturma işlemine tabi tutabilir ve ortaya çıkan tam sayıyı kullanarak örneğin hangi bölüme yerleştirileceğine karar verebilirsiniz. Karma işlevinizin girişleri, veri oluşturma programını her çalıştırdığınızda değişmemelidir. Karma oluşturma işleminde geçerli saati veya rastgele bir sayı kullanmayın. Örneğin, karmalarınızı isteğe bağlı olarak yeniden oluşturmak istiyorsanız bu kurala uymanız gerekir.

Yukarıdaki yaklaşımlar hem verilerinizi örnekleme hem de bölme için geçerlidir.

Karma oluşturma ile ilgili dikkat edilmesi gereken noktalar

Yine, arama sorgularını topladığınızı ve sorguları dahil etmek veya hariç tutmak için karma oluşturma kullandığınızı düşünelim. Karma anahtar yalnızca sorguyu kullanıyorsa verilerin birden fazla gününde bu sorguyu her zaman dahil eder veya her zaman hariç tutarsınız. Bir sorguyu her zaman dahil etmek veya her zaman hariç tutmak şu nedenlerle kötüdür:

  • Eğitim setinizde daha az çeşitli sorgular gösterilir.
  • Değerlendirme kümeleriniz, eğitim verilerinizle çakışmadığı için yapay olarak zor olacaktır. Gerçekte, yayın sırasında eğitim verilerinizdeki canlı trafiğin bir kısmını görmüş olursunuz. Bu nedenle, değerlendirmeniz bunu yansıtmalıdır.

Bunun yerine, sorgu + sorgu tarihi üzerinde karma oluşturabilirsiniz. Bu, her gün için farklı bir karma oluşturulmasına neden olur.

Şekil 7. Yalnızca sorguya göre karma oluşturmanın verilerin her gün aynı pakete gitmesine neden olduğunu, ancak sorguya ve sorgu zamanına göre karma oluşturmanın verilerin her gün farklı paketlere gitmesine neden olduğunu gösteren animasyonlu görselleştirme. Üç grup vardır: Eğitim, Değerlendirme ve Yoksayılır.
7.şekil Sorguda karma oluşturma ile sorgu + sorgu tarihinde karma oluşturma arasındaki fark.