MLOps Serisi II - Burada çözmeye çalıştığımız iş sorunu nedir?

MLOps (Makine Öğrenmesi operasyonları) isimli serinin ikinci kısımı, ilk yazıda olduğu gibi, Dr. Larysa Visengeriyeva, Anja Kammer, Isabel Bär, Alexander Kniesz, ve Michael Plöd tarafından INNOQ için yazılmış “What is the business problem that we are trying to solve here?” isimli yazı. İyi Okumalar!

“Burada çözmeye çalıştığımız iş sorunu nedir?”

Herhangi bir yazılım projesinde en önemli aşama, iş problemini (business Problem) anlamak ve gereksinimleri oluşturmaktır. Makine Öğrenmesi tabanlı bir yazılım geliştirirken de bu durum çok da farklı değildir. İlk adım iş sorunlarının ve gereksinimlerinin kapsamlı bir incelemesini içerir. Bu gereksinimler, model hedeflerine ve model çıktılarına dönüştürülür. Modelin yayınlanması ve piyasaya sürülmesi için olası hatalar ve minimum başarı belirlenmelidir. Yapay Zeka / Makine Öğrenmesi çözümü üzerinde çalışmaya devam etmek için sorulması gereken en yararlı soru “Yanlış tahminler ne kadar maliyetlidir?” Bu soruyu yanıtlamak, bir Makine Öğrenmesi projesinin fizibilitesini tanımlayacaktır.

İş Akışı’nın Parçalanması

Yapılacak tahminin (Makine Öğrenmesi modelinin) nerede uygulanabileceğini görmek için tüm iş sürecinin her bir görevinin kurucu unsurlarına parçalanması gerekir

my alt text
Bu diagram Dr. Larysa Visengeriyeva tarafından yaratılmış olup, kendisinin izniyle tarafımdan Türkçe'ye çevrilmiştir. İzinsiz kullanılması yasaktır.


“Yapay Zeka / Makine Öğrenmesi nasıl uygulanır” sorusunu yanıtlamak için aşağıdaki adımları izleriz:

  1. Yapay Zeka / Makine Öğrenmesi tarafından güçlendirilebilecek somut süreci tanımlayın (yukarıdaki Şekil’e bakınız).
  2. Bu süreci yönlendirilmiş bir görevler grafiğine parçalayın.
  3. İnsan etkisinin görevin neresinden çıkarılabileceğini belirleyin, yani, Makine Öğrenmesi modeli gibi bir tahmin öğesi hangi görevin yerini alabilir?
  4. Her bir görevi gerçekleştirmek üzere bir Yapay Zeka / Makine Öğrenmesi aracı uygulamak için Yatırım Karını (ROI - Return On Investment) hesaplayın
  5. Her görev için ayrı ayrı hesaplanan yatırım karlarına göre Yapay Zeka / Makine Öğrenmesi uygulamalarını sıralayın.
  6. Listenin en başından başlayın ve her bir görev için Yapay Zeka Şablonunu veya Makine Öğrenmesi Şablonunu tamamlayarak Yapay Zeka / Makine Öğrenmesi uygulamasını yapılandırın.

Yapay Zeka Şablonu veya alternatifi Makine Öğrenmesi Şablonu, parçalanma sürecini yapılandırmaya destek ve yardımcı olur. Ayrıca, tahmin yapmak için tam olarak neyin gerekli olduğunu ve tahmin algoritması tarafından yapılan hatalara nasıl tepki vereceğimizi ifade etmeye yardımcı olurlar.

Yapay Zeka Şablonu

Yapay Zeka Şablonu, A. Agrawal ve arkadaşları tarafından 2018 yılında yayınlanan “Prediction Machines. The Simple Economics of Artificial Intelligence.” isimli kitapta önerilmiştir ve “Yapay Zeka araçlarını düşünmek, oluşturmak ve değerlendirmek için bir destek görevi görür.” Bu tür bir şablon örneği ve her bileşeninin açıklaması aşağıdaki Şekilde verilmiştir:

Şekil Kaynağı

Makine Öğrenmesi Şablonu

Yukarıdaki Yapay Zeka Şablonu, bir Yapay Zeka / Makine Öğrenmesi uygulamasının üst düzey bir yapısını temsil etse de, bir noktada hem makine öğrenmesi sistemi vizyonunu hem de sistemin özelliklerini belirlemek isteriz. Bu hedeflere ulaşmak için kullanılabilecek, Louis Dorard tarafından önerilen Makine Öğrenmesi Şablonu adlı başka bir araç daha var. Bu şablon, bir makine öğrenmesi projesini yapılandırır ve projenin gerçekleştirilmesi için gerekli temel gereksinimleri belirlemeye yardımcı olur. Başlangıçta, “tahmini sistemin son kullanıcıları için neyi başarmak istiyoruz?” Sorusunu yanıtlayarak amacımızı belirleriz. Ardından, iş hedefini makine öğrenmesi görevine ilişkilendiririz.

Şablonun merkezi kısmı, müşteriler için bir miktar değer yaratan ürün veya hizmetleri tanımlayan Değer Önerisi yapı taşıdır. Tipik olarak şu soruları yanıtlarız: Hangi sorunları çözmeye çalışıyoruz? Gerçekleştireceğimiz görev neden önemlidir? Sistemimizin son kullanıcısı kimdir? Bu Makine Öğrenmesi projesi son kullanıcıya hangi değeri sağlar? Çıktılarınızı / tahminlerinizi bu kullanıcılar nasıl kullanacaklar?

Şablonun gerı kalanı üç geniş kategoriye ayrılmıştır: Öğrenme, Tahmin ve Değerlendirme. Öğrenme kategorisi, Makine Öğrenmesi modelinin nasıl öğrenileceğini belirlemekten sorumludur. Tahmin bölümü tahminin nasıl yapıldığını açıklar. Son olarak, Değerlendirme kategorisi, makine öğrenmesi modelinde ve sistem değerlendirmesinde kullanılacak yöntemleri ve metrikleri içerir. Aşağıdaki Makine Öğrenmesi Şablonu, Louis Dorard tarafından sağlanan bir örnektir:

Yukarıda bahsedilen Makine Öğrenmesi Şablonu toplamda, Değer Önerisi, Veri Kaynakları, Tahmin Görevi, Öznitelikler (Mühendisliği), Çevrimdışı Değerlendirme, Kararlar, Tahminlerde Bulunma, Veri Toplama, Model Oluşturma ve Anlık Değerlendirme ve İzleme gibi on bileşik blok olarak yapılandırılmıştır. Bu blokların her biri, ileride gerçekleştirilecek olan bir makine öğrenmesi uygulamasının bir yönüne odaklanmıştır:

Değer Önerisi

Bu, şablonun tamamındaki en önemli blokdur. Burada üç önemli soruyu cevaplamalıyız:

  1. Sorun nedir? Hangi amaca hizmet ediyoruz? Son kullanıcı için ne yapmaya çalışıyoruz?
  2. Bu problem neden önemlidir?
  3. Son kullanıcı kimdir? Bu kullanıcıyı tanımlayabilir miyiz?

Etkili bir Değer Önerisi ifadesi oluşturmak için Geoffrey Moore’un değer konumlandırma ifadesi şablonunu kullanabiliriz:

** (İhtiyaç veya fırsat) sahibi olan (hedef müşteri) için bizim (ürün / hizmet adı), (fayda) sağlayan (ürün kategorisi)’dir. **

Çözüm bulmaya çalıştığımız problemin etki alanını daraltmak, ihtiyacımız olan verilerle ilgili bir sonraki soru için faydalı olabilir. Örneğin, genel bir sohbet botu (robotu) oluşturmak yerine, konferans görüşmeleri planlamaya yardımcı olan bir bot oluşturun.

Veri Kaynakları

Veri, Makine Öğrenmesi modellerini eğitmek için gereklidir. Bu blokta, bir makine öğrenmesi görevi için kullanılabilecek tüm mevcut ve olası veri kaynaklarına açıklık getiriz. Örnek olarak aşağıdaki kaynakları kullanmayı düşünebiliriz:

Dahili/Harici veritabanları.,
Veri reyonları (data marts), OLAP küpleri, veri ambarları (data warehouses), OLTP sistemleri.
Hadoop kümeleri,
Veri toplamak için kullanılabilecek REST API’leri.
Statik dosyalar, elektronik tablolar.
Web kazıma.
Diğer (Makine Öğrenmesi) sistemlerin çıktısı.
Açık kaynak veri kümeleri.

Herkese açık faydalı veri kümeleri: Kaggle Veri Kümeleri, Google’ın Veri Kümesi Arama Motoru, UCI Veri Havuzu veya makine öğrenmesi araştırması için Wikipedia’nın veri kümeleri listesi.

Bunlara ek olarak, bir makine öğrenmesi uygulamasının gizli maliyetlerine de bakmamız gerekir.

Bu verileri depolamak ne kadar masraflı olacaktır?
Dışarıdan (harici) veri satın almalı mıyız?
Veriyi diğer sistemlerden erişilebilir kılmak için hangi veri değerlendirme araçları ve süreçleri mevcuttur?

Tahmin Görevi

Elimizde hangi verilerin mevcut olduğunu netleştirdikten sonra, ne tür makine öğrenmesi kullanılması gerektiği üzerine beyin fırtınası yapıyoruz. Yapılacak makine öğrenmesi görevini açıklığa kavuşturabilecek soruların bazı örnekleri aşağıda verilmiştir:

Denetimli (eğitimli) veya Denetimsiz (eğitimsiz) öğrenme?
Bu bir anomali tespiti mi?
Sorun hangi seçeneğin seçilmesi gerektiği ile mi ilgili? (öneri)
Sürekli bir değer tahmin etmemiz gerekiyor mu? (regresyon)
Hangi kategorinin tahmin edilmesi gerekiyor? (sınıflandırma)
Verilerimizi gruplamamız gerekiyor mu? (kümeleme)
Denetimli öğrenme kullanılacaksa, ne tür bir makine öğrenmesi görevi seçilmelidir: sınıflandırma, regresyon veya sıralama (ranking)?
Sınıflandırma yapılacak ise, ikili veya çok sınıflı sınıflandırma görevi mi olacak?
Bir tahmin görevinin girdisi nedir?

örneğin, E-posta metini.

Tahmin görevinin çıktısı nedir?

örneğin, “İstenmeyen e-posta” ve “normal”

Makine Öğrenmesi modelimizin alabileceği karmaşıklık derecesi (degree of complexity) nedir?

örneğin. modelimiz diğer makine öğrenmesi modellerinin bir kombinasyonu mu? Topluluk öğrenmesi (ensemble Learning) kullanıyor muyuz? Derin öğrenme modelinde kaç tane gizli katman var?

Yukarıdaki modeller için eğitim ve çıkarım süresi gibi karmaşıklık maliyetleri nelerdir?

Öznitelikler (Mühendisliği)

Her Makine Öğrenmesi algoritmasına verilen verinin satırlarda gözlemler sütunlarda değişkenler olacak şekilde bir formda olması gerektiğinden, girdi verilerinin nasıl temsil edilmesi gerektiğini netleştirmeliyiz.

Ham (işlenmemiş) kaynaklardan öznitelikleri (değişkenleri) nasıl çıkarırız?
Belirli bir Makine Öğrenmesi görevinde, verinin hangi yönlerinin önemli olduğunu belirlemek için alan uzmanlarını dahil etmeyi düşünün.

Çevrimdışı Değerlendirme

Bir Makine Öğrenmesi modelinin eğitiminin herhangi bir uygulamasından önce, modelin dağıtımı (deployment) önce sistemi değerlendirmek için eldeki metodları ve metrikleri belirlememiz ve ayarlamamız gerekir. Burada şunları belirlememiz gerekir:

Makine öğrenmesi modelinin dağıtımını doğrulayan alana özgü metrikler. Örneğin, eğitim ve test verileriyle simüle edildiğinde, modelin tahmini, “geleneksel” yolla elde edilen hasılattan daha fazla hasılat sağlar.
Hangi teknik değerlendirme ölçütleri kullanılmalıdır?

Kesinlik (Precision), Duyarlılık (Recall/Sensitivity), F-1 ölçütü.
Doğruluk oranı.

Yanlış pozitifler (false positives) ve yanlış negatifler (false negatives) gibi model tahmin hatalarının anlamı nedir?
Test verimiz nedir?
Makine öğrenmesi modelinin iyi performans gösterdiğinden emin olmak için ne kadar büyüklükte test verisine ihtiyacımız var?

Kararlar

Makine Öğrenmesi görevini, Öznitelik mühendisliğini ve değerlendirme detaylarını tamamladıktan sonra, bir sonraki adım şunları belirlemektir:

Karar vermek için tahminler nasıl kullanılır?
Son kullanıcı veya sistem, model tahminleriyle nasıl etkileşim kurar?

Örneğin. Kullanıcı bir ürün önerileri listesi alırsa ne olur? Gelen e-posta “istenmeyen posta” olarak sınıflandırılırsa ne olur?

Karar vermede işleminde herhangi bir gizli maliyet var mıdır? örneğin işin içinde olan bir insan faktörü.

Bu tür bilgiler daha sonra bu Makine Öğrenmesi modelinin nasıl dağıtılacağına karar vermek için gereklidir

Tahminlerde Bulunma

Bu blok, yeni girdiler üzerinde ne zaman bir tahmin yapmamız gerektiğine ilişkin bilgileri içerir.

Tahminler ne zaman elde edilmelidir?

Kullanıcı uygulamayı her açtığı zaman yeni tahminler yapılır, örneğin bir ürün önerileri listesi.
Talep üzerine yeni tahminler yapılır.
Bir zamanlama çizelgesine göre yeni tahminler yapılır.

Tahminler her veri noktası için mi yoksa girdi verilerinin bir yığını için mi anında yapılıyor mu?
Uygulamada, model çıkarsaması hesaplama açısından ne kadar karmaşıklaşır?
İşin içinde tahminlerde bulunmayı destekleyen bir insan var mı?

Veri Toplama

Tahmin Yapma ile ilişkili olarak Veri Toplama bloğu, Makine Öğrenmesi modelini yeniden eğitmek için toplanması gereken yeni veriler hakkında bilgi toplar. Böylelikle, bu makine öğrenmesi modelinin bozulmasını nasıl önlediğimizi belirliyoruz. Bu blokta cevaplanacak diğer sorular şunlardır:

Yeni veriyi nasıl etiketleriz?
Yeni veri toplamak ne kadar masraflıdır?
Görüntü, ses veya video gibi zengin medya formatlarını işlemek ne kadar masraflıdır?
Gelen verilerin manuel olarak temizlenmesi ve etiketlenmesi için kullanılan bir insan faktörü var mı?

Model Oluşturma

Bir önceki blokla sıkı bir şekilde ilişkili olan Model Oluşturmak bloğu, Makine Öğrenmesi modellerini güncellemeyle ilgili soruları yanıtlar çünkü farklı Makine Öğrenmesi görevleri için bir modelin yeniden eğitilmesi farklı sıklıklarla gerçekleşebilir:

Model ne sıklıkla yeniden eğitilmelidir?

Örneğin, saatlik, haftalık veya yeni bir veri noktası geldiği her an.

Modelin yeniden eğitiminin gizli maliyetleri nelerdir?

örneğin, buu tür görevleri gerçekleştirmek için bulut kaynaklarını kullanıyor muyuz?
bulut hizmetini sağlayanın şirketin fiyat politikası nedir?
donanımsal maliyetlerin tahminini nasıl yapmalıyız?
yaygın Bulut Fiyatlandırma Hesaplayıcıları; Google Cloud Calculator, Amazon ML Pricing, Microsoft Azure Calculator‘dir

Modeli yeniden eğitmek ne kadar sürer?
Daha karmaşık ve maliyetli olabileceğinden, bulut operasyonlarının ölçeklendirme sorunlarıyla nasıl başa çıkacağız?
Teknoloji yığınında değişiklik yapmayı planlıyor muyuz?

örneğin, Modern Yapay Zekada yeni araçlar ve geliştirme iş akışları ortaya çıktıkça teknoloji yığını evrimiyle nasıl başa çıkabiliriz?

Anlık Değerlendirme ve İzleme

Dağıtımdan sonra, bir makine öğrenmesi modeli değerlendirilmeli ve burada birbiriyle ilişkili olması gereken hem model hem de iş ölçütlerini (metrikler) belirlememiz gerekir. Genel olarak, bu ölçütler S.M.A.R.T metodolojisini takip etmeli ve: Spesifik (Specific), Ölçülebilir (Measurable), Ulaşılabilir (Achievable), İlgili (Relevant) ve Zamana bağlı (Time-bound) olmalıdır.

Sistemin performansını nasıl takip ederiz?

örneğin, A/B testi
Değer yaratmayı (value creation) nasıl değerlendiririz?
örneğin, kullanıcılar gelen kutusunda daha az zaman harcadı.

Bu aşamadaki çıktı, tamamlanmış Makine Öğrenmesi Şablonu’dur. Bu şablonu doldurma çabası, makine öğrenmesi tabanlı yazılımının gerçek amacına ve gizli maliyetlerine ilişkin varoluşsal bir tartışma başlatabilir. Böyle bir tartışma, Yapay Zeka’yı / Makine Öğrenmesi’ni hiç uygulamama kararıyla sonuçlanabilir. Olası nedenler aşağıdakiler gibi olabilir:

Sorunumuzun çözümü yanlış tahminlere müsamaha göstermez.
Yapay Zeka’yı / Makine Öğrenmesi’ni uygulamak düşük yatırım karı (ROI - Return On Investment) yaratacaktır.
Yapay Zeka / Makine Öğrenmesi projesinin bakımı garanti edilmez

Sorulması gereken başka bir soru da gerçekleştirilen Yapay Zeka / Makine Öğrenmesi uygulamasının ne zaman dağıtılması gerektiğidir. Aşağıdaki Şekil, bir Makine Öğrenmesi modelinin erken ve geç dağıtımının dengesini göstermektedir.

my alt text
Bu diagram Dr. Larysa Visengeriyeva tarafından yaratılmış olup, kendisinin izniyle tarafımdan Türkçe'ye çevrilmiştir. İzinsiz kullanılması yasaktır.



Daha fazla okuma

“What is THE main reason most ML projects fail?”
The New Business of AI (and How It’s Different From Traditional Software)

Bu çevirinin ve çevirideki grafiklerin izinsiz ve kaynak gösterilmeden kullanılması yasaktır.

Serinin diğer yazıları