Kalman Filtresinin Basit Anlatımı
(thekalmanfilter.com)- Kalman filtresi, gürültülü veya hatalı ölçümlerden gerçek zamanlı olarak daha doğru durum tahminleri üreten; sensör tabanlı öngörü ve kontrolde kullanılan bir algoritmadır
- Yalnızca ölçümleri yumuşatmakla kalmaz, doğrudan gözlemlenmesi zor olan konum ve hız gibi durum değişkenlerini de tahmin edebilir
- Radar izleme örneği, 2D konum ölçümlerini ve kovaryansı girdi olarak alıp bir nesnenin konumunu ve hızını 4×1 durum vektörü olarak tahmin eden akışı gösterir
- İlk iki ölçümle durum başlatıldıktan sonra, sonraki adımlarda tahmin, Kalman kazancı (Kalman Gain) hesaplama, durum ve hata kovaryansını güncelleme tekrarlanır
- Filtrenin tuttuğu geçmiş yalnızca mevcut durum tahmini olduğu için, bellek kısıtı olan cihazlarda da uygulanması kolaydır
Kalman filtresine genel bakış
- Kalman filtresi, girdileri ve çıktıları olan bir kara kutu gibi düşünülebilir
- Girdi, gürültülü veya zaman zaman hatalı ölçümlerdir
- Çıktı, gürültüsü azaltılmış ve daha doğru hale getirilmiş tahmindir
- Tahmin, fiilen ölçülmemiş veya gözlemlenmemiş sistem durumu parametreleri olabilir
- Gözlemlenebilir ve gözlemlenemeyen parametreleri gerçek zamanlı olarak yüksek doğrulukla tahmin etmek için kullanılır
- Yüksek doğruluktaki tahminler, hassas öngörü ve karar verme için kullanılır
- Bu yüzden güvenilir bilgi gerektiren robotik ve gerçek zamanlı sistemlerde sıkça kullanılır
Kalman filtresinin çözdüğü problem
- Hatalı veya gürültülü ölçümlere dayanarak bir değişkenin durumunu ya da doğrudan gözlemlenmesi zor başka değişkenleri daha yüksek doğrulukla tahmin eder
- Tipik uygulamalar şunlardır
- Nesne izleme: Ölçülen konumu kullanarak nesnenin konumunu ve hızını daha doğru tahmin eder
- Dijital tartıda ağırlık tahmini: Yüzeye uygulanan basınçtan nesnenin ağırlığını tahmin eder
- Güdüm, seyrüsefer ve kontrol: IMU sensörleriyle konum, hız ve ivmeyi tahmin eder ve sonraki hareketin kontrolünde kullanır
- Kalman filtresinin gücü, ölçümleri yumuşatmanın kendisinden çok ölçülmesi zor sistem parametrelerini tahmin edebilmesindedir
- Gerçek zamanlı sistemlerde doğruluğu artmış tahminler daha iyi kontrol ve işlevsellik sağlar
Radar izleme örneğinin girdileri ve çıktıları
- Örnek, havaalanı çevresindeki uçakları ve nesneleri izleyen bir radar izleme senaryosunu ele alır
- Çıktı olarak üretilen iz durumu, hava sahasını izleyen hava trafik kontrol operatörlerine gösterilmek için kullanılır
- Radar, 2D Kartezyen koordinat sisteminde x, y konum ölçümleri üretir
- Ölçüm, 2×1 sütun vektörü z ile ifade edilir
- Ölçümün varyans-kovaryans matrisi R ile ifade edilir
- Ölçüm zaman etiketi t ile ifade edilir
- Alt simge m ölçüm parametresini, k ise ölçüm sırasını gösterir
- Kalman filtresi, radar ölçümlerine dayanarak nesnenin konumunu ve hızını tahmin eder
- Tahmin, 4×1 sütun vektörü x ile ifade edilir
- Tahminin varyans-kovaryans matrisi 4×4 matris P ile ifade edilir
- Durum tahmininin zaman etiketi T ile gösterilir
1. adım: Sistem durumunu başlatma
- Kalman filtresinin başlatma yöntemi uygulamaya göre değişir
- Bu radar izleme örneğinde sistem durumu ilk ölçümle başlatılır
- Girdi ölçümünde yalnızca konum bilgisi vardır, ancak çıktı sistem durumunda nesnenin konumu ve hızı yer alır
- İlk ölçüm geldiğinde bilinebilen tek bilgi, o andaki konumdur
- İlk tahminden sonra sistem durumu tahmini, girdi konumuna ayarlanır
- Sistem durumu hata kovaryansı, ilk ölçümün konum doğruluğuna ayarlanır
2. adım: Sistem durumunu yeniden başlatma
- Hız tahmini için ikinci bir konum ölçümü gerektiğinden sistem durumu tahmini yeniden başlatılır
- Hız, doğrusal yaklaşımla hesaplanır
- Hız, kat edilen mesafe / hareket için geçen süre olarak hesaplanır
- Güncellenen sistem durumu tahmini, ikinci ölçümün konumu ve hesaplanan hızdan oluşur
- Güncellenen sistem durumu hata kovaryansı, ikinci ölçümün konum doğruluğunu ve yaklaşık hız doğruluğunu içerir
- Yaklaşık hız doğruluğu değeri, veriler filtreden geçirildikten sonra ayarlanarak düzeltilebilir
- Örnekte hız varyansı terimi 10⁴ olarak ayarlanır
- Bu değer, hız durum değeri için büyük bir belirsizliği gösterir
- Örnekte hız birimi m/s'dir
Başlatma sonrasındaki yinelemeli işlem
- İlk iki adım, birkaç ölçümle sistem tahminini başlatma ve yeniden başlatma sürecidir
- Başlatma yöntemi uygulamaya göre değişebilir
- Amaç, sonraki ölçümlerle Kalman filtresi denklemleri üzerinden güncellenebilecek bir sistem durumu tahmini elde etmektir
- Sonraki adımlarda yeni ölçüm filtreye dahil edilir ve durum tahmini güncellenir
3. adım: Sistem durumu tahminini öngörme
- Üçüncü ölçüm geldiğinde sistem durumu tahmini ileri taşınarak ölçümle zamansal olarak hizalanır
- Bu hizalama, ölçüm ile durum tahminini birleştirmek için gereklidir
- Öngörüde sistem modeli kullanılır
- Örnekte, sabit hızlı doğrusal hareket modeliyle zaman aralığı boyunca nesnenin konum değişimi yaklaştırılır
- Sabit hız modeli, ivmenin 0 olduğunu varsayar
- Durum geçiş matrisi bu hareket denklemini ifade eder
- Bu matris, durum tahminini ve durum hata kovaryans matrisini uygun şekilde ileri taşımak için kullanılır
- Durum tahminini gelecekteki bir ana taşıyınca o andaki durum belirsizliği oluştuğundan hata kovaryansı artar
Q matrisi ve H matrisi
- Q matrisi, sistem modelinin süreç gürültüsünü temsil eder
- Sistem modeli bir yaklaşımdır
- Sistem durumunun ömrü boyunca modelin doğruluğu değişir
- Q matrisi bu belirsizliği temsil eder ve mevcut durum gürültüsüne eklenir
- Örnekte gerçek ivmelenme ve yavaşlama bu hataya katkıda bulunur
- H matrisi, durum-ölçüm matrisi olup sistem durumu tahminini durum uzayından ölçüm uzayına dönüştürür
- Bazı uygulamalarda 0 ve 1'lerden oluşan bir matristir
- Genişletilmiş Kalman Filtresi (Extended Kalman Filter) kullanan uygulamalarda diferansiyel denklemlerle doldurulur
- İlgili açıklama Extended Kalman Filters yazısında devam eder
- Bu örnekteki H matrisi, durum tahmini ve hata kovaryansını konum ve hızın tamamıyla değil, yalnızca konum değerleriyle karşılaştırılabilecek şekilde azaltan basit bir matristir
4. adım: Kalman kazancını hesaplama
- Kalman filtresi her yeni ölçüm için Kalman kazancı hesaplar
- Kalman kazancı, girdi ölçümünün sistem durumu tahmini üzerinde ne kadar etkili olacağını belirler
- Ölçümün gürültüsü çok yüksekse Kalman kazancı, yeni ama hatalı bilgi yerine mevcut durum tahminine daha fazla güvenilmesini sağlar
- Mevcut tahmin ile yeni ölçüm bilgisini uygun şekilde ağırlıklandırarak optimal tahmin üretme yöntemi, Kalman filtresi algoritmasının özüdür
5. adım: Durum ve hata kovaryansını güncelleme
- Kalman filtresi, Kalman kazancını kullanarak girdi ölçümünün zamanındaki sistem durumunu ve hata kovaryans matrisini tahmin eder
- Kalman kazancı, iki hesaplamada ölçüme uygun ağırlık vermek için kullanılır
- Yeni sistem durumu tahmini hesaplama
- Sistem durumu hata kovaryansı hesaplama
- Hesaplanan durum tahmini, Kalman filtresinin tuttuğu tek durum geçmişidir
- Bu özellik sayesinde Kalman filtresi, düşük bellek kısıtları olan cihazlarda da uygulanabilir
Özet
- Kalman filtresi, optimal durum tahmini için genel amaçlı bir süreçtir
- Doğru tahmin gerektiren çeşitli uygulamalarda kullanılır
- Küçük adımlara bölündüğünde Kalman filtresinin işleyişi daha az zorlayıcı ve anlaşılır bir yapı olarak görülebilir
1 yorum
Hacker News yorumları
Kalman filtresi denince bu harika öğrenme kaynağının bağlantısı eksik kalamaz. Jupyter not defterleri koleksiyonu olarak yazılmış bir kitap: https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Pyt...
Bu kitap, alfa-beta filtresini tam teşekküllü Kalman filtresinin küçük kardeşi gibi ele alıyor. Yakın zamanda işte benzer bir şeye ihtiyaç duyduğum için epey okudum ve alfa-beta filtresi ile Kalman ailesinin yakın geleceği tahmin etmeye güçlü biçimde odaklandığını, benim asıl ihtiyacımın ise geçmiş veriyi yumuşatmak olduğunu fark ettim.
Bu yüzden çift üstel yumuşatma üzerine okumaya başladım; kullanım durumuma tam uyuyor gibi görünüyordu. Derine indikçe bunun sonunda değişken adları farklı olan bir alfa-beta filtresi olduğunu öğrendim.
Bu matematik alanının tamamı birkaç ortak temel kuramın üzerine kurulu gibi geliyor; farklı alanlar aynı sisteme farklı yaklaşımlarla ulaşırken adlar ve gösterimler değişiyor, bu da ortak noktaları görünmez kılıyor. Kuvvet serileri, doğal sabit, gradyan inişi, filtreler, geri besleme sistemleri, genel sistem teorisi gibi şeylerin merkezinde nispeten küçük bir sezgi çekirdeği varmış gibi; onu yakalarsanız matematiğin büyük kısmı güzelce birbirine bağlanacak gibi geliyor.
Amaç kâğıttan tasarruf etmek ya da yazmayı kolaylaştırmak değil. İngilizce klavyeyle LaTeX’te üst simgeli/alt simgeli Yunanca harfler yazmak, kelime yazmaktan daha kolay değil. Okura başka şekilde aktarılması zor olan belirli bir bilgiyi aktarmaya çalışıyorlar.
Matematiksel gösterim harflere benzese de özünde oldukça resimsel bir gösterim; uzun kelimeler o resmi kapatıyor.
Kontrol ve sinyal/sistem derslerini düzgün alırsanız o sezgi içinize işler; belirli gösterim geleneklerine takılı kalmadan matematiği ve terminolojiyi öğrenirsiniz. Asıl sezgi “her şey bir filtredir”; geri kalanı bu fikri analiz etmek ve sentezlemektir.
AI/ML büyüdükçe klasik kontrol teorisindeki fikirler de pekiştirmeli öğrenme ile birleşiyor.
Çünkü genelde Q ve R “iyi görünene kadar” elle ayarlanır, sonra bir daha değiştirilmez. Üstelik Q ve R gibi birden fazla değeri ayarlamak yerine yalnızca tek bir kazancı elle tutturmak yeterlidir.
Ölçüm değerlerindeki gürültü her zaman aynıysa zamanla sabitlere yakınsar; ölçüm doğruluğunu iyi bilebildiğiniz ama bunun çok değiştiği durumlarda özellikle kullanışlı olur.
Yakın zamanda Kalman filtresi implementasyonu üstlendim; bir geliştirici olarak anlayabileceğim dille anlatan iyi kaynak bulmak gerçekten zordu. Yaklaşık bir ay öğrendikten sonra iki yazı yazdım; birilerine faydası olabilir: https://www.splinter.com.au/2023/12/14/the-kalman-filter-for..., https://www.splinter.com.au/2023/12/15/the-kalman-filter-wit...
Geliştirici açısından ironik biçimde, matematiği ancak kendim implemente ettikten sonra anladım. Sanırım zaten bildiklerinin üzerine inşa ederek öğrenme biçimi bu; bunun için kullanılan bir terim var mı, merak ediyorum.
Matematiğin açıklayıcı değişken adları kullansaydı öğrenilmesinin çok daha kolay olacağını hep düşünmüşümdür. En azından web gibi etkileşimli bir ortamda hiç değilse tooltip konabilir. Matematik çalışırken zamanımın %90’ını sembolleri aramakla geçiriyorum.
Ayrıca burada alt indis “ölçümlerin sırasını gösterir” dendiğinde hangi sıradan bahsedildiği kafa karıştırıyor. Muhtemelen indeks demek istiyor. Kalman filtresiyle uğraşmayalı uzun zaman oldu gerçi
Matematik ne kadar saflaşırsa, çoğu değişkenin kapsamı da o kadar kısalır. Genelde değişkenler kullanılmadan hemen önce tanımlanır ve kapsamları da ilgili ispatın ya da türetmenin dışına taşmaz.
Yine de bu yazıdaki bazı tercihler düpedüz tuhaf. Örneğin P’yi hem değişken hem de indeks olarak kullanmak ve hassasiyet matrisi kovaryans matrisinin tam tersi olmasına rağmen P’yi kovaryans matrisi için kullanmak gibi
Araştırma makalelerindeki en can sıkıcı kısım tam da bu belirsizlik. Mutlaka netleştirilmeli. Göreli ifadeler değil, mutlak açıklamalar kullanılmalı. “Sağa bakın” denmemeli. Ben sola bakıyor olabilirim.
“Prizma döndürüldükten sonra ışık konisi...” diye yazınca, dönüşün hangi yönde olduğu eksik kalıyor. Sol mu sağ mı, yatay mı yukarı-aşağı mı, hızlı mı yavaş mı? Yazanın kafasında bu kritik unsurların hepsi canlanmış durumda, ama okur onun zihnini okuyamaz
Alt indis “p” muhtemelen prediction, yani tahmin anlamına geliyor. Zaman 3’teki x_p, zaman 4’te beklenen durumdur. Ama zaman 4 gerçekten geldiğinde, yeni ölçüm değeri yansıtılarak x_4 hesaplanır.
Açıkça söylemek gerekirse bu x_4, zaman 3’te hesaplanan x_p’den farklıdır. Çünkü tahminler her zaman biraz yanılır
Sorun, yeni başlayan birinin henüz kavramları veya her problem alanının standart gösterimlerini öğrenmemiş olmasıdır; bu yüzden yeni bir konuya dahil olmanın sancısı kalır
Kalman filtresi, matematikte basitleştirilmiş sürümün fazla basitleştirilip asıl hâlinin neredeyse görünmez olduğu tuhaf durumlardan biri olabilir.
Aslında yaptığı şey, bir ölçüm almak, olası gelecek durumları simüle etmek, sonra bu bilgiyi bir sonraki ölçümle birleştirip tekrar etmektir.
Örneğin bir tenis topunun birkaç fotoğrafını çekip ilk fotoğraftan konumunu ve hızını tahmin ettikten sonra nereye gideceğini simüle etmek, sonra da bir sonraki fotoğrafla karşılaştırıp hangi tahminin gerçeğe daha yakın olduğuna bakmak gibi. Daha eski bir yöntem olarak da güneşin yüksekliğini ölçüp harita üzerinde olası konumların bir çizgisini oluşturmayı ve bunu başlangıçta bulunduğunuzu düşündüğünüz noktayla karşılaştırmayı düşünebilirsiniz.
Elbette kesin hesaplama pratikte neredeyse imkânsızdır. Bu yüzden örneklemeyle basitleştirilir. Yine de zor olduğu için dağılımın bir ölçüde Gauss dağılımına yakın olduğu varsayılır. Buradan da sistemdeki değişimin doğrusal dönüşüm olduğu varsayımıyla daha da basitleştirince, burada ele alınan Kalman filtresine ulaşılır.
Sadece lineer cebire bakarak gerçekte ne olduğunu anlayabiliyorsanız bu şaşırtıcı olurdu
İlk kez gerçekten ne olup bittiğine dair sezgi veren açıklama bu oldu. Bilgisayar tarafındaki biri olarak benim için adın kendisi de epey yanıltıcı. Çünkü akış işleme ya da SQL’deki anlamıyla bir filtre değil
Kalman filtresi, ölçüm değerini üreten gizli girdiyi tahmin etmeye çalışır. Bunun için
x için [gerçek_ölçüm_değeri - beklenen_ölçüm_değeri(x)]^2/s^2 değerini minimize etproblemini kurar. Buradas, gürültünün sigmasıdır.Bu,
x için gerçek_ölçüm_değerini görme olasılığını maksimize etşeklindeki durum tahmini probleminden çıkar. Çünkü olasılık fonksiyonunda önemli olan tek terim-([x-expected(x)]/s)^2dir. Normal dağılıma ya da aslında herhangi bir üstel dağılımın üstel kısmına bakmak yeterlidir.gerçek_ölçüm_değerisabit olduğundan,beklenen_ölçüm_değerifonksiyonu doğrusal ise bu doğrudan konveks optimizasyonla çözülür. Türevini alıp 0’a eşitleyerek çözerseniz Kalman filtresinin güncelleme adımı elde edilir.Fonksiyon doğrusal değilse, denklemi doğrusallaştırıp minimize ederek o “sahte doğrusallaştırmanın” çözümünü döndüren tek bir Newton-Raphson adımı yapmış olursunuz. Bu lisans düzeyinde kalkülüs ve lineer cebirdir; sadece kimse bunu böyle anlatmamıştır.
Ama bu aynı zamanda tamamen de yanlıştır. 1960’lardan kalma, olasılık fonksiyonunu böyle özyinelemeli tek adımlı doğrusallaştırmayla maksimize etmeye çalışan bir hack’tir. Cramér-Rao alt sınırının yanlış okunması yüzünden birkaç kuşak mühendis bunun optimal olduğuna inandı, ama gerçekte değil.
Bugün hesaplama kaynakları en az 10.000 kat daha fazla ve doğrusal olmayan denklemleri birden çok Newton-Raphson adımıyla kurup çözmek, ya da uzun bir ölçüm geçmişini tutup bu paketin tamamını birden çok Newton-Raphson adımıyla çözmek, ya da çok tepeli ölçüm fonksiyonlarını desteklemek için Gauss karışım gösterimi kullanmak daha iyi performans verir.
Bunlar 1980’lerden bugüne durum tahmini araştırmalarında iyi işlenmiş konular, ama ders kitapları hâlâ sanki 1972’de taşa kazınmış gibi.
Cramér-Rao alt sınırı ancak tüm ölçüm olasılığı fonksiyonları gerçek durumda doğrusallaştırıldığında tanımlıdır; bu da tüm ölçümleri koruyan bir paket içinde yalnızca asimptotik olarak mümkündür, sonsuz zaman öncesinde mümkün değildir ve özyinelemeli filtreyle de mümkün değildir
Eski açıklamalar arasında bu yazı iyiydi: https://www.bzarg.com/p/how-a-kalman-filter-works-in-picture..., https://news.ycombinator.com/item?id=13449229
Gerçekten Kalman filtresine ihtiyacınız varsa bu yazıyı, Wikipedia maddesini ya da uygulama kaynak kodunu (https://github.com/LdDl/kalman-rs/blob/master/src/kalman/kal...) okuyup anlayabileceğinizi sanıyorum
Ama deneyimime göre dünyadaki insanların neredeyse tamamı, örneklerle en iyi öğrenen görsel öğreniciler. Bu yüzden sayfanın ortasındaki öğreticinin formüllere örnek sayılar koymaması şaşırtıcı. Kaçırmış olabilirim ama çizimler de ancak “Kalman filtresi nedir” metninden oluşan bir sayfadan sonra başlıyor; üstelik o çizimler bile daha fazla formülden ibaret
Bu o kadar yaygın ki şaşırtıcı. Daha zayıf bir biçimiyle, kod örneği içermeyen yazılım kütüphanelerinde de aynı sorun görülüyor
Bana en çok dokunan nokta şuydu: belirsiz iki ölçüm dağılımını, yani varyansı yüksek dağılımları birleştirdiğinizde daha kesin bir ölçüm, yani daha dar bir dağılım elde ediyorsunuz
Bu daha kesin ölçümü bir sonraki ölçümle tekrar birleştirip bunu tekrarlarsanız, ortaya doğrudan Kalman filtresi çıkıyor
KF’yi anlatan video serileri arasında bu gerçekten iyiydi. Özgün yazıdaki materyalden daha iyi anladım: https://www.youtube.com/watch?v=CaCcOwJPytQ
Merhum babam bu filtreyi, daha yeni icat edildiği dönemlerden itibaren kariyeri boyunca sık sık kullanmıştı. Radar ve füze güdüm sistemleri üzerinde çalışıyordu
Gözlerinizi kapatıp kısa bir süre yürümeyi deneyin. Nerede olduğunuzu hayal ettikten sonra gözlerinizi açınca, gerçek konumunuz düşündüğünüz konumdan farklı mı?
İşte o son adım, yani gözlemi kullanarak durum değişkenlerine dair inancı güncellemek, Kalman filtresinin yaptığı şeydir