4 puan yazan GN⁺ 20 일 전 | 1 yorum | WhatsApp'ta paylaş
  • Kalman filtresi, gürültünün yüksek olduğu ortamlarda sistemin durumunu tahmin eden ve geleceği öngören optimal durum kestirim algoritmasıdır
  • Uçak takip radarı örneği üzerinden, mesafe ve hız ölçümlerini kullanarak tahmin ve güncelleme adımlarını yineleyip doğruluğun nasıl artırıldığını açıklar
  • Her adımda durum vektörü, kovaryans matrisi, Kalman kazancı (Kalman Gain) hesaplanarak ölçüm ve tahmin değerleri ağırlıklı olarak birleştirilir
  • Ölçüm belirsizliği ile model belirsizliğini birlikte dikkate alıp, zaman geçtikçe tahmin hatasının (belirsizliğin) azaldığını sayısal olarak gösterir
  • Sezgisel sayısal örnekler ve adım adım hesaplamalarla filtreyi doğrudan tasarlayıp uygulayabilecek bir anlayış temeli sunar

Kalman filtresine giriş

  • Kalman Filter**, ölçüm gürültüsü veya dış etkenler gibi belirsizliklerin bulunduğu ortamlarda sistemin durumunu tahmin edip öngören bir durum kestirim algoritmasıdır

    • Nesne takibi, seyrüsefer, robotik, kontrol gibi birçok alanda temel bir araç olarak kullanılır
    • Örneğin fare imlecinin yörüngesindeki gürültüyü azaltıp daha pürüzsüz hareket elde etmekte, finansal verilerde eğilim tespitinde ve hava tahmininde kullanılabilir
    • Birçok eğitim materyalinin matematiksel türetime fazla odaklanıp gerçek örneklere yeterince yer vermediğine dikkat çekerek, bu materyal sayısal örnek merkezli sezgisel bir anlatım sunar
    • Filtrenin kötü tasarlandığında takibi başarısız olduğu durumları da ele alır ve bunu düzeltme yöntemlerini gösterir
    • Amaç, okurun Kalman filtresini doğrudan tasarlayıp uygulayabilecek düzeyde bir kavrayış geliştirmesidir

Öğrenme yolu

  • Tek sayfalık genel bakış: Temel kavramları ve ana denklemleri kısaca tanıtır; yalnızca istatistik ve lineer cebirin temel bilgilerini gerektirir
  • Ücretsiz web eğitimi: Adım adım sayısal örneklerle sezgi kazandıran çevrimiçi eğitim; ön bilgi gerekmez
  • Kalman Filter from the Ground Up (kitap): 14 tam sayısal örnek, doğrusal olmayan filtreler (Extended/Unscented) ve sensör füzyonu, Python·MATLAB kodu içerir

Tahmine neden ihtiyaç var?

  • Uçak takip radarı örneği üzerinden durum kestirimi ve tahmin ihtiyacı açıklanır
    • Sistem durumu uçağın konumu (mesafe (r)) olup, radar darbe yansıma süresini ölçerek mesafeyi hesaplar
    • Hız (v), Doppler etkisiyle ölçülebilir
  • Belirli bir zaman aralığı (\Delta t) sonrasındaki konum tahmini dinamik model üzerinden yapılır
    • Örnek: (r_{t_1} = r_{t_0} + v \cdot \Delta t)
    • (\Delta t = 5s), (r_{t_0}=10,000m), (v=200m/s) → (r_{t_1}=11,000m)
  • Gerçek ortamda ölçüm gürültüsü (Measurement Noise) ve model belirsizliği (Process Noise) vardır
    • Birden fazla radar aynı anda ölçüm yapsa bile sonuçlar biraz farklı çıkar
    • Rüzgar gibi dış etkenler nedeniyle hızın sabit olduğu varsayımı bozulur
  • Kalman filtresi, mevcut durumu kestirme ve gelecekteki durumu tahmin etme işlemlerini aynı anda yürütür ve her kestirimin belirsizliğini (varyansını) de birlikte verir
    • Durum kestirimi belirsizliğini en aza indiren optimal algoritmadır

Kalman filtresi örneği

  • 1 boyutlu radar, uçağın mesafesini (r) ve hızını (v) ölçer

    • Durum vektörü (\boldsymbol{x} = [r, v]^T)
    • Sistem vektörler ve matrisler kullanılarak ifade edilir
  • İterasyon 0 — başlatma ve tahmin

  • Başlatma

    • Filtre ilk ölçüm değeriyle başlatılır (\boldsymbol{z}_0 = [10{,}000, 200]^T)
    • Ölçüm belirsizliği (standart sapma): mesafe 4m, hız 0.5m/s (\boldsymbol{R}_0 = \begin{bmatrix}16 & 0 \ 0 & 0.25\end{bmatrix})
    • İlk durum kestirimi (\hat{\boldsymbol{x}}_{0,0} = \boldsymbol{z}_0)
    • Başlangıç kovaryansı (\boldsymbol{P}_{0,0} = \boldsymbol{R}_0)
  • Tahmin adımı

    • Zaman aralığı (\Delta t = 5s)
    • Durum geçiş matrisi (\boldsymbol{F} = \begin{bmatrix}1 & 5 \ 0 & 1\end{bmatrix})
    • Tahmin edilen durum (\hat{\boldsymbol{x}}{1,0} = \boldsymbol{F}\hat{\boldsymbol{x}}{0,0} = [11{,}000, 200]^T)
    • Kovaryans tahmini (süreç gürültüsü hariç): (\boldsymbol{P}{1,0} = \boldsymbol{F}\boldsymbol{P}{0,0}\boldsymbol{F}^T = \begin{bmatrix}22.25 & 1.25 \ 1.25 & 0.25\end{bmatrix})
    • Süreç gürültüsü eklenir ((\sigma_a = 0.2m/s^2)): (\boldsymbol{Q} = \begin{bmatrix}6.25 & 2.5 \ 2.5 & 1\end{bmatrix})
    • Nihai tahmin kovaryansı: (\boldsymbol{P}_{1,0} = \begin{bmatrix}28.5 & 3.75 \ 3.75 & 1.25\end{bmatrix})
  • İterasyon 0 özeti

    • İlk ölçümle durum ve kovaryans başlatılır
    • Durum geçiş modeli kullanılarak sonraki durum ve belirsizliği tahmin edilir
    • Tahmin denklemleri
      • Durum tahmini: (\hat{\boldsymbol{x}}{n+1,n} = \boldsymbol{F}\hat{\boldsymbol{x}}{n,n} + \boldsymbol{G}\boldsymbol{u}_n)
      • Kovaryans tahmini: (\boldsymbol{P}{n+1,n} = \boldsymbol{F}\boldsymbol{P}{n,n}\boldsymbol{F}^T + \boldsymbol{Q})
  • İterasyon 1 — güncelleme ve tahmin

  • Filtre güncellemesi

    • İkinci ölçüm: (\boldsymbol{z}_1 = [11{,}020, 202]^T)
    • Ölçüm belirsizliği artar (standart sapma: mesafe 6m, hız 1.5m/s) (\boldsymbol{R}_1 = \begin{bmatrix}36 & 0 \ 0 & 2.25\end{bmatrix})
    • Tahmin kovaryansı (\boldsymbol{P}_{1,0}) ile karşılaştırıldığında, tahmin belirsizliği daha küçüktür
    • Kalman filtresi, ölçüm ile tahmini ağırlıklı ortalama olarak birleştirir
      • Ağırlık (K_1): Kalman kazancı
      • Durum güncelleme denklemi: (\hat{\boldsymbol{x}}{1,1} = \hat{\boldsymbol{x}}{1,0} + \boldsymbol{K}_1(\boldsymbol{z}1 - \boldsymbol{H}\hat{\boldsymbol{x}}{1,0}))
      • Gözlem matrisi (\boldsymbol{H} = \boldsymbol{I})
    • Kalman kazancının hesabı: (\boldsymbol{K}1 = \boldsymbol{P}{1,0}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{1,0}\boldsymbol{H}^T + \boldsymbol{R}_1)^{-1}) Sonuç: (\boldsymbol{K}_1 = \begin{bmatrix}0.4048 & 0.6377 \ 0.0399 & 0.3144\end{bmatrix})
    • Yenilik (innovation): (\boldsymbol{z}1 - \hat{\boldsymbol{x}}{1,0} = [20, 2]^T)
    • Düzeltme değeri: (\boldsymbol{K}_1[20, 2]^T = [9.37, 1.43]^T)
    • Güncellenmiş durum: (\hat{\boldsymbol{x}}_{1,1} = [11{,}009.37, 201.43]^T)
  • Kovaryans güncellemesi

    • Basitleştirilmiş biçim kullanılır: (\boldsymbol{P}_{1,1} = (\boldsymbol{I} - \boldsymbol{K}1)\boldsymbol{P}{1,0})
    • Sonuç: (\boldsymbol{P}_{1,1} = \begin{bmatrix}14.57 & 1.43 \ 1.43 & 0.71\end{bmatrix})
    • Güncelleme sonrası belirsizlik, tahmin ve ölçüm belirsizliklerinden daha küçüktür → Ölçüm ve tahmini birleştirmek belirsizliği her zaman azaltır
  • Tahmin adımı

    • Bir sonraki zaman (t_2) için tahmin
      • Durum tahmini: (\hat{\boldsymbol{x}}{2,1} = \boldsymbol{F}\hat{\boldsymbol{x}}{1,1} = [12{,}016.5, 201.43]^T)
      • Kovaryans tahmini: (\boldsymbol{P}{2,1} = \boldsymbol{F}\boldsymbol{P}{1,1}\boldsymbol{F}^T + \boldsymbol{Q} = \begin{bmatrix}52.86 & 7.47 \ 7.47 & 1.71\end{bmatrix})
    • Zaman geçtikçe ölçüm gelmezse belirsizlik yeniden artar
  • İterasyon 1 özeti

    • Güncelleme adımı: tahmin ve ölçüm Kalman kazancıyla birleştirilir
    • Tahmin adımı: güncellenmiş durum bir sonraki zamana taşınır
    • Temel denklemler
      • Durum güncellemesi: (\hat{\boldsymbol{x}}{n,n} = \hat{\boldsymbol{x}}{n,n-1} + \boldsymbol{K}_n(\boldsymbol{z}n - \boldsymbol{H}\hat{\boldsymbol{x}}{n,n-1}))
      • Kovaryans güncellemesi (Joseph formu): (\boldsymbol{P}_{n,n} = (\boldsymbol{I} - \boldsymbol{K}n\boldsymbol{H})\boldsymbol{P}{n,n-1}(\boldsymbol{I} - \boldsymbol{K}_n\boldsymbol{H})^T + \boldsymbol{K}_n\boldsymbol{R}_n\boldsymbol{K}_n^T)
      • Kalman kazancı: (\boldsymbol{K}n = \boldsymbol{P}{n,n-1}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{n,n-1}\boldsymbol{H}^T + \boldsymbol{R}_n)^{-1})

Örnek özeti

  • Kalman filtresinin üç adımı: başlatma → tahmin → güncelleme
  • Sonrasında tahmin-güncelleme döngüsü tekrar tekrar yürütülür
  • Her yeni ölçüm eklendiğinde belirsizlik azalır ve sistem durum kestirimi giderek daha hassas hale gelir
  • Ek öğrenme materyalleri
    • Ücretsiz çevrimiçi eğitim: adım adım sayısal örnekler sunar
    • Kalman Filter from the Ground Up kitabı: doğrusal ve doğrusal olmayan filtreler, uygulama rehberi, Python/MATLAB kodu içerir

1 yorum

 
GN⁺ 20 일 전
Hacker News yorumları
  • Yazarı benim. Kısa süre önce Kalman Filter eğiticimin ana sayfasını güncelledim. Basit bir radar izleme örneği ekledim; böylece yalnızca temel istatistik ve lineer cebir bilenlerin de anlayabileceği şekilde kurguladım
    Formül türetimini en aza indirirken, ölçüm gürültüsü, tahmin modeli ve filtrenin birleştirilmesi sürecini sezgisel olarak göstermeye çalıştım. Matematik düzeyi veya anlatımın açıklığı hakkında geri bildirim duymak isterim

    • Hızlıca göz attım; proses gürültü matrisi Q sanki birden ortaya çıkmış gibi geldi. Kitapta bunun açıklaması vardır diye düşünüyorum ama neden o değerleri aldığına dair kısa bir gerekçe olsa iyi olurdu
    • Genel olarak açıktı. Yalnız başta sistem modeli ile Kalman filtresinin kendisi arasındaki ayrım biraz belirsizdi. Durum matrisinin oluşturulduğu kısma kadar bunu model açıklaması sanmıştım, ama sonra doğrudan filtre denklemlerine bağlanınca kafam karıştı
    • Erişilebilirlik menüsünü gerçekten çok beğendim. Sayfanın okunabilirliğini ayarlamak çok kolaydı
    • Yaklaşık 6 ay önce Kalman filtresini kendim uygulamaya çalışmıştım ama uygulama alanına göre yapısı epey değiştiği için yarıda bırakmıştım. Bu materyalin bu kez sonuna kadar gitmeme çok yardımcı olacağını umuyorum
    • Eğitimin başındaki “optimal algoritma” ifadesi biraz soyut geldi. Matematiğe girmeden önce bunun ne anlama geldiğini kısaca açmak iyi olabilir
  • Benim düşündüğüm sezgisel rehber şöyle

    1. Ağırlıklı en küçük kareleri anlayın ve yeni ölçüm ile belirsizliğini kullanarak mevcut tahmini nasıl güncelleyeceğinizi öğrenin
    2. Gerçek ortalamanın değişmediği varsayılırsa bu yöntem iyi çalışır
    3. Ama ortalama değişiyorsa, Kalman filtresi bu değişimi tahmin eden bir model kullanır
    4. Tahminden sonra tekrar (1)'deki probleme dönülür
      Sonuçta özünde mesele en küçük karelerdir ve belirli varsayımlar altında bunun optimal olduğu kanıtlanabilir
  • “How a Kalman Filter Works in Pictures” yazısı gerçekten çok iyiydi

    • Ben de o yazının görsel anlatım tarzını seviyorum. Ama benim eğiticimde amaç, adım adım radar örneği etrafında sezgiyi ve tuzakları birlikte ele almaktı
    • Ama bu tür “basit açıklamalar” bile pratikte fazla karmaşık gelebiliyor. Kalman filtresi özünde bir kestirimci (estimator) türüdür.
      Örneğin bir alçak geçiren filtre de bir tür kestirimcidir; Kalman filtresi ise buna proses modeli ve kovaryans hesabı ekleyerek dinamik olarak ayarlanan bir yapı sunar.
      Konum ve hız gibi ilişkili değişkenler arasındaki bağlantıyı yansıtarak, tek bir ölçümün başka değişkenlerin tahminini de etkilemesini sağlar.
      Ancak lineer cebire dayandığı için Gaussian gürültü varsayımı gerekir ve doğrusal olmayan problemler için EKF ya da UKF gibi türevler gerekir
  • Kalman filtresini anlamak için şu dört şeyi bilmek gerekir

    1. Sistem modeli
    2. İç durum
    3. Optimal kestirimin tanımı
    4. Kovaryans kavramı
      Filtre, ölçümlere dayanarak sistemin iç durumunu ve kovaryansını optimal biçimde kestiren matematiksel bir çözümdür.
      Alex Becker'ın kitabının bu konuya çok iyi bir giriş olduğunu düşünüyorum. Örnek açısından zengin ve sezgiyi iyi inşa ediyor
    • Geri bildirim için teşekkürler. Daha ileri konuları ele alan bir 2. cilt düşünüyorum. Ancak EKF ya da UKF'nin yaklaşık yöntemler olduğunu, dolayısıyla tam anlamıyla optimal çözümler olmadığını açıkça belirtmek isterim
  • Kalman filtresini öğrenirken, farklı gürültü özelliklerine sahip iki veya daha fazla giriş olduğunda konu çok daha sezgisel hale geliyor. Ama çoğu eğitim yalnızca tek girişi ele alıyor

    • Benim kitabımda sensör füzyonu (sensor fusion) kavramını tanıtan bir bölüm var. Daha derine inmek isterseniz Bar-Shalom veya Blackman'ın kitaplarını tavsiye ederim
    • Aslında Kalman filtresinin özü **durum kestirimi (state estimation)**dir. Sensör füzyonu bunun yalnızca bir uygulamasıdır; ikisini aynı şey gibi görmek yanlış anlamalara yol açabilir
  • Kalman filtresi pratikte de çok kullanılıyor. Örneğin Sendspin'de hoparlör senkronizasyonu için kullanılıyor
    canlı demo ve uygulama dokümanı incelenebilir

  • Kalman filtresi kavramının insan tanıklığına da uygulanıp uygulanamayacağını merak ediyorum

    • İlginç bir fikir. İnsan gözlemlerini gürültülü sensörler olarak görmek mümkün. Ancak standart Kalman filtresi yanlı olmayan Gaussian gürültü varsayar; insanlar söz konusu olduğunda bu varsayımın geçerli olup olmayacağı şüpheli
  • thekalmanfilter.com üzerinde de basit bir anlatım bulunabilir

  • Bu yazı bana pahalı bir kitap reklamı gibi göründü. Zaten pek çok ücretsiz kaynak var; örneğin Kalman and Bayesian Filters in Python gibi. Bu kitabın bunlardan farklı olarak ne sunduğunu merak ediyorum

    • Güzel soru. Temel Kalman filtresi içeriği ücretsiz olarak sunuluyor. Kitapta ise ayar/tuning, tasarım değerlendirmeleri ve ek örnekler daha ayrıntılı ele alınıyor
    • Roger Labbe'nin kitabı ve Jupyter notebook'ları gerçekten harika. Yalnızca Kalman filtresini değil, genel olarak kestirim problemlerine yaklaşımı anlamada da çok yardımcı oluyor
    • Başka birçok kaynak da gördüm ama bu kitap ayrıntılı açıklamalar açısından çok güçlü, bu yüzden tavsiye edilebilir. Ücretsiz eğitim de burada görülebilir
    • Verilen bağlantı klasik bir başyapıt
    • İyi kaynak sayısı çok fazla değil. Gördüklerim arasında gerçekten iyi hazırlanmış olanlar bir elin parmaklarını geçmiyor. Kalman filtresini yeni bir açıdan anlatma çabası hissediliyor bu materyalde